必威体育Betway必威体育官网
当前位置:首页 > IT技术

阿基米德螺旋线原理及代码

时间:2019-10-17 00:44:41来源:IT技术作者:seo实验室小编阅读:63次「手机版」
 

阿基米德螺线

一个点在射线上匀速向外运动,同时射线以w的速度转动,点的轨迹就被称为阿基米德螺旋线或等速螺线。

1.公式

阿基米德螺旋线的极坐标公式可以表示为:

r=a+bθr = a+b*\thetar=a+b∗θ

其中a为起始点与极坐标中心的距离,主要负责旋转整个螺线(增加a顺时针旋转和距离中心的远近);

b为控制螺线间的螺距,b=rθb = \dfrac{r}{\theta}b=θr​,b越大变化越快,螺线相同角度下半径r增长越快,越稀疏;

θ\thetaθ的范围控制了螺线的大小,θ\thetaθ越大螺线的范围越大。

直角坐标系下,利用极坐标系到直角坐标的公式,其公式可以被改写为:

x=rcosθy=rsinθ 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=vtcos(wt)y=vtcos(wt) x = vt*cos(wt)\\ y = vt*cos(wt) x=vt∗cos(wt)y=vt∗cos(wt)

上式为关于t的参数方程,其中v为线速度、w为角速度,t为点运动的时间。可以通过上式子得到等角速度、等线速度等各类螺旋

2.程序

首先我们来画出极坐标系下的阿基米德螺线。

#变化a参数
theta = 0:0.01*pi:6*pi;
r1 = 0 + 0.1*theta;
r2 = 1 + 0.1*theta;
r3 = 2 + 0.1*theta;
polar(theta,r3,'b');hold on;
polar(theta,r2,'g')
polar(theta,r1,'r')
legend('a=0,b=0.1','a=10,b=0.1','a=20,b=0.1')

#变化b参数,右图
theta = 0:0.01*pi:20*pi;
r4 = 1 + 0.05*theta;
r5 = 1 + 0.1*theta;
r6 = 1 + 0.2*theta;
polar(theta,r6,'b');hold on;
polar(theta,r5,'g')
polar(theta,r4,'r')
legend('a=1,b=0.2','a=1,b=0.1','a=1,b=0.05')

在这里插入图片描述在这里插入图片描述

随后在直角坐标系中画出螺线:

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)

在这里插入图片描述在这里插入图片描述


ref

https://baike.baidu.com/item/阿基米德螺线/6174118"https://img-blog.csdnimg.cn/20181219171648324." alt="在这里插入图片描述">

pic from pexels.com

相关阅读

分享到:

栏目导航

推荐阅读

热门阅读