【原创】利用MATLAB绘制管状几何体
(2011-07-31 11:01:45)
标签:
matlab
技术论坛
matlabsky
教育
|
分类:
MATLAB
|
【原创】利用MATLAB绘制管状几何体
http://www.matlabsky.com/thread-18604-1-1.html
本帖利用MATLAB绘制管状几何体,所谓管状几何体就是中空的像水管一样的几何体。我编了一个MATLAB函数TubeLike,可以根据管道中心线坐标及各点处管道半径绘制管状几何体。下面结合具体例子介绍TubeLike函数的用法。
【例1】绘制扭结
-
% Example1:扭结
-
n = 100;
-
r = 0.75;
-
q = floor(n/3);
-
t = (0:n)/n;
-
a = 2; b = 3; c = 1.5;
-
q1=2; q2=4;
-
f0 = sin(q1*pi*t) + a*sin(q2*pi*t) - ...
-
b*cos(4*pi*t)/2 +
c*sin(6*pi*t);
-
f0 = [ f0(1:n) f0(1:n) ];
-
x = f0(1:n+1);
-
y = f0(q+1:q+n+1);
-
z = f0(2*q+1:2*q+n+1);
-
figure(1)
-
TubeLike(x,y,z,r)
-
shading interp;
-
light
-
lighting gouraud
-
view(2)
-
axis equal off
-
axis vis3d
复制代码
【例2】绘制双鱼
-
% Example2:双鱼
-
t = linspace(0,2*pi,50);
-
x = sin(t);
-
y = cos(t);
-
z = cos(t/2);
-
r = sin(t);
-
figure(2)
-
TubeLike(x,y,z,r)
复制代码【例3】绘制田螺
【例3】绘制田螺
-
% Example3:田螺
-
t = linspace(0,7*pi,200);
-
x = t.*cos(t)*0.1;
-
y = t.*sin(t)*0.1;
-
z = [1:numel(t)]*0.01;
-
r = sqrt([0:numel(t)-1]*0.004);
-
figure(3)
-
TubeLike(x,y,z,r)
-
view(-44,-52)
-
axis equal off
复制代码【例4】绘制风车(或章鱼)
【例4】绘制风车(或章鱼)
-
% Example4:风车(或章鱼)
-
x0 = linspace(0,2*pi,60)';
-
y0 = sin(x0);
-
t = 0:pi/4:7*pi/4;
-
x = x0*cos(t)+y0*sin(t);
-
y = -x0*sin(t)+y0*cos(t);
-
z = zeros(size(x0));
-
figure(4)
-
hold on
-
for i = 1:numel(t)
-
[X,Y,Z] =
TubeLike(x(:,i),y(:,i),z,0.5);
-
surf(X,Y,Z,'FaceColor',rand(1,3),'LineStyle','none');
-
end
-
hold off
-
view(3)
-
axis equal off
-
light
复制代码
喜欢
0
赠金笔
加载中,请稍候......