阿基米德螺旋线原理及代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
阿基⽶德螺旋线原理及代码
⼀个点在射线上匀速向外运动,同时射线以w的速度转动,点的轨迹就被称为阿基⽶德螺旋线或等速螺线。
1.公式
阿基⽶德螺旋线的极坐标公式可以表⽰为:
r=a+b∗θr = a+b*\thetar=a+b∗θ
其中a为起始点与极坐标中⼼的距离,主要负责旋转整个螺线(增加a顺时针旋转);
b为控制螺线间的螺距,b=rθb = \dfrac{r}{\theta}b=θr,b越⼤变化越快螺线越密;
θ\thetaθ的范围控制了螺线的⼤⼩,θ\thetaθ越⼤螺线的范围越⼤。
在直⾓坐标系下,利⽤极坐标系到直⾓坐标的公式,其公式可以被改写为:
x=r∗cosθy=r∗sinθ x = r*cos\theta\\ y = r*sin\theta x=r∗cosθy=r∗sinθ
x=(a+b∗θ)∗cosθy=(a+b∗θ)∗sinθ x = (a+b*\theta)*cos\theta\\ y = (a+b*\theta)*sin\theta x=(a+b∗θ)∗cosθy=(a+b∗θ)∗sinθ此外还可以利⽤⾓速度和线速度的概念来控制螺线的形状,⽣成其他螺旋线:
x=vt∗cos(wt)y=vt∗cos(wt) x = vt*cos(wt)\\ y = vt*cos(wt) x=vt∗cos(wt)y=vt∗cos(wt)
上式为关于t的参数⽅程,其中v为线速度、w为⾓速度,t为点运动的时间。
可以通过上式⼦得到等⾓速度、等线速度等各类螺旋2.程序
⾸先我们来画出极坐标系下的阿基⽶德螺线。
%matlab 程序
%不同a和b造成螺线的变化
theta = 0:0.01*pi:20*pi;
r1 = 0 + 0.1*theta;
r2 = 10 + 0.1*theta;
r3 = 20 + 0.1*theta;
polar(r1,theta,'b');hold on;
polar(r2,theta,'g')
polar(r3,theta,'r')
legend('a=0,b=0.1','a=10,b=0.1','a=20,b=0.r')
在这⾥插⼊图⽚描述
随后变化b来观察螺距的变化:
theta = 0:0.01*pi:20*pi;
r4 = 10 + 0.03*theta;
r5 = 10 + 0.1*theta;
r6 = 10 + 0.5*theta;
polar(r4,theta,'b');hold on;
polar(r5,theta,'g')
polar(r6,theta,'r')
legend('a=10,b=0.03','a=10,b=0.1','a=10,b=0.5')
在这⾥插⼊图⽚描述
随后在直⾓坐标系中画出螺线:
theta = 0:0.01*pi:20*pi;
r7 = 0 + 0.01*theta;
x = r7.*cos(theta);
y = r7.*sin(theta);
%初始点是0,螺距为0.01
%在直⾓坐标系下b控制着螺线间距,b越⼤螺线间距越⼤
plot(x,y,'r')
hold on;
r8 = 0 + 0.03*theta;
x = r8.*cos(theta);
y = r8.*sin(theta);
plot(x,y,'g')
r9 = 0 + 0.09*theta;
x = r9.*cos(theta);
y = r9.*sin(theta);
plot(x,y,'b')
legend('b=0.01','b=0.03','b=0.05')
在这⾥插⼊图⽚描述
另外可以通过引⼊速度的概念控制螺线的形状:
t = 0:0.01:100;
v = 10; %线速度控制了⼤⼩,越⼤⾛得越快螺线形状越⼤
w = 3 ; %⾓速度控制了疏密,越⼩越稀疏,单位时间内旋转少。
x = v*t.*cos(w*t);
y = v*t.*sin(w*t);
subplot(2,2,1);
plot(x,y)
title('v=10,w=3')
axis([-1000 1000 -1000 1000])
v = 1; %线速度变⼩,图形变⼩
w = 3 ;
x = v*t.*cos(w*t);
y = v*t.*sin(w*t);
subplot(2,2,2)
plot(x,y)
title('v=1,w=3')
axis([-1000 1000 -1000 1000])
v = 10;
w = 0.3 ; %⾓速度变⼩,图形变疏
x = v*t.*cos(w*t);
y = v*t.*sin(w*t);
subplot(2,2,3)
plot(x,y)
title('v=10,w=0.3')
axis([-1000 1000 -1000 1000])
v = 10; %变⼤
w = 10 ; %变密
x = v*t.*cos(w*t);
y = v*t.*sin(w*t);
subplot(2,2,4)
plot(x,y)
title('v=10,w=10')
axis([-1000 1000 -1000 1000])
或者将w变化或者v变化:
%向外渐开线
t = 0:0.01:100;
v = 0:0.001:10; %线速度逐渐加快
w = 1 ; %
x = v.*t.*cos(w*t);
y = v.*t.*sin(w*t);
plot(x,y)
%渐密线
t = 0:0.01:100;
v = 0.1;
w = 0:0.0001:1; ; %⾓速度逐渐加⼤变密. tips:⼀定要注意区分坐标系,以及⾓速度与b的关系x = v.*t.*cos(w.*t);
y = v.*t.*sin(w.*t);
plot(x,y)
在这⾥插⼊图⽚描述在这⾥插⼊图⽚描述。