2 Kugeln in Matlab auf einer Höhe

Neue Frage »

Tremonia Auf diesen Beitrag antworten »
2 Kugeln in Matlab auf einer Höhe
Ich habe so eine Kugel zeichnen lassen:
code:
1:
2:
3:
4:
5:
6:
7:
i1 = -3:0.1:3;
f1 = -3:0.1:3;
[I1, F1] = meshgrid(i1, f1);
x1 = cos(I1).*sin(F1);
y1 = sin(I1).*sin(F1);
z1 = cos(F1);
surf(x1,y1,z1) 

nun will ich eine 2. Kugel zeichnen lassen die nach rechts bzw. links verschoben ist.
Es gehr um diese Aufgabe: http://mo.mathematik.uni-stuttgart.de/ku...49/seite11.html (Nur die Aufgabe an sich! Die Werte sind anders)

Nur wie kann ich die Kugel veschieben? Kann mir jemand helfen?

Vielen Dank
Tremonia
SinaniS Auf diesen Beitrag antworten »
RE: 2 Kugeln in Matlab auf einer Höhe
Du kannst einen konstanten Vektor auf x1 addieren. Probiere mal sowas wie
x1=cos(I1).*sin(F1)+a*ones(length(I1))
fuer eine Konstante a, das sollte die Kugel um a in x-Richtung verschieben.
Tremonia Auf diesen Beitrag antworten »
RE: 2 Kugeln in Matlab auf einer Höhe
Zitat:
Original von SinaniS
Du kannst einen konstanten Vektor auf x1 addieren. Probiere mal sowas wie
x1=cos(I1).*sin(F1)+a*ones(length(I1))
fuer eine Konstante a, das sollte die Kugel um a in x-Richtung verschieben.


Danke! Hat funktioniert. ones(length(I1)) wurde gemacht um aus a auch ne Matrix zu machen ne? Jetzt will ich das ganze noch mit einem Zylinder verbinden.

Also
code:
1:
2:
3:
4:
5:
a = 5;
x2=cos(I1).*sin(F1)+a*ones(length(I1));
surf(x1,y1,z1)
surf(x2,y1,z1)

ergibt 2 Kugeln versetzt zu einander.
SinaniS Auf diesen Beitrag antworten »
RE: 2 Kugeln in Matlab auf einer Höhe
Genau, a*ones(length(I1)) ist ein Vektor, der genauso lang ist wie I1 und bei dem an jeder Stelle ein a steht.
Das mit dem Zylinder sollte ja jetzt kein Problem mehr sein, ein Zylinder besteht ja nur aus den Kreisen zwischen den beiden Randkreisen.
SinaniS Auf diesen Beitrag antworten »

Randkugeln meine ich, nicht Kreise
Tremonia Auf diesen Beitrag antworten »

Kann ich den irgentwie den Radius der Kugeln bestiimmen? Ich muss ja irgentwo mit dem Zylinder beginnen, z.B das er von 0.5 bis 2,5 geht bei a =3.
 
 
Tremonia Auf diesen Beitrag antworten »
RE: 2 Kugeln in Matlab auf einer Höhe
Zitat:
Original von SinaniS
Das mit dem Zylinder sollte ja jetzt kein Problem mehr sein, ein Zylinder besteht ja nur aus den Kreisen zwischen den beiden Randkreisen.


Ne steh da grad aufm Schlauch welche Randkreise?
Tremonia Auf diesen Beitrag antworten »

code:
1:
2:
3:
4:
r = 0.2;
n = 100
[A,B,C] = cylinder(r,n);
mesh(C,A,B)


So kann ich einen liegenden Zylinder plotten. Allerdings hat er nur die Länge 1, um die Kugeln zu verbinden müsste er ja z.B von 0.9 bis 2.7 gehen. Kann man auch einstellen das die Länge ein Vektor ist?

code:
1:
mesh(0.9:2.7,A,B)

geht leider nicht
Tremonia Auf diesen Beitrag antworten »

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
r = 0.2;
n = 100
[X,Y,Z] = cylinder(r,n);
mesh(Z,X,Y)


hold on
%---
i1 = -3:0.1:3;
f1 = -3:0.1:3;
[I1, F1] = meshgrid(i1, f1);
x1 = cos(I1).*sin(F1);
y1 = sin(I1).*sin(F1);
z1 = cos(F1);
surfl(x1,y1,z1) % erste Kugel

hold on
xlabel('x')
ylabel('y')
zlabel('z')
a =3; % Abstand zwischen den Kugeln
x2=cos(I1).*sin(F1)+a*ones(length(I1));
surfl(x2,y1,z1) % zweite Kugel
cm = hsv(1000);
cm(:,3)= 0 * cm(:,3);
cm = cm(500:1000,:);
colormap(cm);
shading interp;

Hier ist das zu sehen, allerdings ist der Zylinder nur ganz klein auf der ersten Kugel zu sehen. Eigentlich möchte ich sie ja verbinden, weiß aber nicht wie ich die Länge des Zylinders verändern kann.
Weiß jemand wie das funktioniert?

Vielen Dank
Tremonia Auf diesen Beitrag antworten »

So hier nun meine Lösung:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
a = input('Geben sie den Abstand der Kugeln an: '); % Abstand zwischen den Kugeln
i1 = -3:0.1:3;
f1 = -3:0.1:3;
[I1, F1] = meshgrid(i1, f1);
x1 = cos(I1).*sin(F1);
y1 = sin(I1).*sin(F1);
z1 = cos(F1);

surf(x1,y1,z1) % erste Kugel

hold on
xlabel('x')
ylabel('y')
zlabel('z')

x2=cos(I1).*sin(F1)+a*ones(length(I1));
surf(x2,y1,z1) % zweite Kugel

% der Radius der Kugeln ist ja max 1 da mit sin und cos gerechnet wird
xa = 0.9; % Gewählter Wert für den Beginn des Zylinders da nah an 1
xe = 0.9*(1+a); % berechneter Endwert des Zylinders
x = xa:0.01:xe; % Bereich in dem der Zylinder geplottet werden soll
t=linspace(0,2*pi,length(x));
[X,T]=meshgrid(x,t);
Y=0.2*cos(T); % 0.2 als Radius des Zylinders 20% des Kugel Radius
Z=0.2*sin(T);
mesh(X,Y,Z)
hold on
set(gcf,'color','white')
hold on
farbe = gray(1000);
colormap(farbe);
shading interp;
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »