2016-07-25 35 views
1

Vielleicht ist dies eine grundlegende Frage, aber ich konnte nichts genau so finden und ich frage mich, wie man es am besten macht.Erstellen Sie eine Spirale zwischen zwei kartesischen Punkten in MATLAB

I haben zwei Sätze von Punkten (x1, y1, z1) und (x2, y2, z2) und ich habe sie in Polarkoordinaten umgewandelt. Ich möchte eine Helix im Gegenuhrzeigersinn mit abnehmendem Radius erzeugen, um den zweiten Punkt zu erreichen.

Ich würde auch angeben, wie viele Umdrehungen es dauert.

Alle Beispiele habe ich zwei Punkte auf der x-Achse gesehen und im Uhrzeigersinn gehen.

Irgendwelche Vorschläge sehr geschätzt werden würde!

Danke.

+0

See [archimedische Spirale] (https://en.wikipedia.org/wiki/Archimedean_spiral) oder [Logarithmische Spirale] (https://en.wikipedia.org/wiki/Logarithmic_spiral) – excaza

+0

Danke, aber das ist was ich benutzt habe. Ich habe eine Grafik wie diese, aber ich möchte von einem Punkt aus beginnen, der nicht auf der x-Achse liegt. – user2638997

Antwort

0

Dieser Beispielcode erzeugt eine Spirale gegen den Uhrzeigersinn von p1 nach p2, die nicht auf der x-Achse liegt, und Sie können die Anzahl der Umdrehungen angeben. Es ist jedoch in 2D und Anfangspunkte sind in kartesischen Koordinaten. Ich weiß nicht, wie ich das in 3D machen soll, aber ich hoffe, dass dir das beim Offset- und Gegen-Clockwise helfen kann.

%random 2d points 
p1 = [3,5]; 
p2 = [1,4]; 

%radius of first point to second 
r = norm(p1-p2); 
%angle between two point wrt the y-axis 
theta_offset = tan((p1(2)- p2(2))/(p1(1)-p2(1))); 

rez = 150; % number of points 
rev = 5; % number of revolutions 

t = linspace(0,r,rez); %radius as spiral decreases 
theta = linspace(0,2*pi*rev,rez) + theta_offset; %angle as spiral decreases 
x = cos(theta).*t+p2(1); 
y = sin(theta).*t+p2(2); 
plot(x,y) 

enter image description here