在 MATLAB 中的两个笛卡尔点之间创建螺旋线

Create a spiral between two cartesian points in MATLAB

也许这是一个基本问题,但我还没有找到任何类似这样的问题,我想知道如何以最好的方式做到这一点。

我有两组点 (x1,y1,z1) 和 (x2,y2,z2),我已将它们转换为极坐标。我想创建一个半径递减的逆时针螺旋线以到达第二点。

我也想具体说明需要转多少圈。

我看到的所有示例都是 x 轴上的两个点并顺时针方向移动。

如有任何建议,我们将不胜感激!

谢谢。

此示例代码生成不在 x 轴上的从 p1 到 p2 的逆时针螺旋,您可以指定转数。然而它是二维的,初始点在笛卡尔坐标系中。我不确定如何在 3D 中执行此操作,但我希望这可以帮助您进行偏移和逆时针旋转。

%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)