本文基于阿基米德螺旋线的基本理论,用Matlab实现阿基米德螺旋线的绘制仿真。
Project Code
- 基本概念:旋向,起始半径r0,螺距P
- 极坐标图下:
% 作者:ZQJ
% 日期:2021.1.6 星期三
%***********************模拟阿基米德螺旋线型**************************
%% 极坐标图
clear,clc;
cir = input('输入阿基米德螺旋线的旋向(右旋为1,左旋为0):');
r0 = input('输入阿基米德螺旋线的起始半径(单位cm):');
landa_spp = input('输入阿基米德螺旋线的螺距(单位cm):');
if cir == 0
angle = linspace(0,8*pi,1000);
r = r0 + landa_spp*angle/(2*pi);
polar(angle,r);
elseif cir == 1
angle = linspace(0,-8*pi,1000);
r = r0 + landa_spp*(-angle)/(2*pi);
polar(angle,r);
end
% figure处理*****************************
if cir == 0
title('极坐标-左旋阿基米德螺旋线');
elseif cir == 1
title('极坐标-右旋阿基米德螺旋线');
end
- 直角坐标图下:
% 作者:ZQJ
% 日期:2021.1.6 星期三
%***********************模拟阿基米德螺旋线型**************************
%% 直角坐标图
clear,clc;
cir = input('输入阿基米德螺旋线的旋向(右旋为1,左旋为0):');
r0 = input('输入阿基米德螺旋线的起始半径(单位cm):');
landa_spp = input('输入阿基米德螺旋线的螺距(单位cm):');
if cir == 0
angle = linspace(0,8*pi,1000);
r = r0 + landa_spp*angle/(2*pi);
x = r.*cos(angle);
y = r.*sin(angle);
plot(x,y);
elseif cir == 1
angle = linspace(0,-8*pi,1000);
r = r0 + landa_spp*(-angle)/(2*pi);
x = r.*cos(angle);
y = r.*sin(angle);
plot(x,y);
end
% figure处理*****************************
xlabel('坐标x'), ylabel('坐标y');
if cir == 0
title('直角坐标-左旋阿基米德螺旋线');
elseif cir == 1
title('直角坐标-右旋阿基米德螺旋线');
end
grid on;
- (拓展)三维坐标图下:
% 作者:ZQJ
% 日期:2021.1.6 星期三
%***********************三维(空间)螺旋线型**************************
%% 拓展内容
clear,clc;
cir = input('输入螺旋线的旋向(右旋为1,左旋为0):');
r0 = input('输入螺旋线的起始半径(单位cm):');
L = input('输入螺旋线的螺距(单位cm):');
if cir == 0
angle = linspace(0,8*pi,1000);
r = r0 + L*angle/(2*pi);
x = r.*cos(angle); %x-y平面图形基于阿基米德螺旋线
y = r.*sin(angle);
z = angle/pi; %z方向自定义
plot3(x,y,z);
elseif cir == 1
angle = linspace(0,-8*pi,1000);
r = r0 + L*(-angle)/(2*pi);
x = r.*cos(angle); %x-y平面图形基于阿基米德螺旋线
y = r.*sin(angle);
z = -angle/pi; %z方向自定义
plot3(x,y,z);
end
% figure处理*****************************
title('螺旋线');
xlabel('x axis'),ylabel('y axis'),zlabel('z axis');
grid on;
仿真结果图:
-
极坐标图下:
-
直角坐标图下:
-
(拓展)三维坐标图下:
专栏内容供作者本人或大家学习使用,多多指教 ~