資源簡介
可以任意更改程序中三維坐標,顯示軸,圓柱高度及圓柱半徑等參數,注釋非常詳細~

代碼片段和文件信息
%function?[Cylinder?EndPlate1?EndPlate2]?=?cylinder3(X1X2rncyl_colorclosedlines)
%?for?test
X1=[10?10?10];%輸入三維坐標
X2=[10?10?30];%根據顯示方向調整坐標值,本例選擇以Z坐標為顯示方向,即原始坐標值加上高度
r=0.25;%顯示圓柱的半徑
n=20;%圓柱面由n個矩形組成
cyl_color=‘b‘;%顯示顏色
closed=1;%選擇封閉實體;1為選擇空心實體顯示
lines=0;%顯示曲面,不顯示棱邊;1為顯示棱邊
length_cyl=norm(X2-X1);
t=linspace(02*pin)‘;
x2=r*cos(t);
x3=r*sin(t);
x1=[0?length_cyl];
xx1=repmat(x1length(x2)1);
xx2=repmat(x212);
xx3=repmat(x312);
if?closed==1
????hold?on
????EndPlate1=fill3(xx1(:1)xx2(:1)xx3(:1)‘r‘);
????EndPlate2=fill3(xx1(:2)xx2(:2)xx3(:2)‘r‘);
end
Cylinder=mesh(xx1xx2xx3);
unit_Vx=[1?0?0];
angle_X1X2=acos(?dot(?unit_Vx(X2-X1)?)/(?norm(unit_Vx)*norm(X2-X1))?)*180/pi;
axis_rot=cross([1?0?0](X2-X1)?);
if?angle_X1X2~=0?
????rotate(Cylinderaxis_rotangle_X1X2[0?0?0])
????if?closed==1
????????rotate(EndPlate1axis_rotangle_X1X2[0?0?0])
????????rotate(EndPlate2axis_rotangle_X1X2[0?0?0])
????end
end
if?closed==1
????set(EndPlate1‘XData‘get(EndPlate1‘XData‘)+X1(1))
????set(EndPlate1‘YData‘get(EndPlate1‘YData‘)+X1(2))
????set(EndPlate1‘ZData‘get(EndPlate1‘ZData‘)+X1(3))
????
????set(EndPlate2‘XData‘get(EndPlate2‘XData‘)+X1(1))
????set(EndPlate2‘YData‘get(EndPlate2‘YData‘)+X1(2))
????set(EndPlate2‘ZData‘get(EndPlate2‘ZData‘)+X1(3))
end
set(Cylinder‘XData‘get(Cylinder‘XData‘)+X1(1))
set(Cylinder‘YData‘get(Cylinder‘YData‘)+X1(2))
set(Cylinder‘ZData‘get(Cylinder‘ZData‘)+X1(3))
set(Cylinder‘FaceColor‘cyl_color)
if?closed==1
????set([EndPlate1?EndPlate2]‘FaceColor‘cyl_color)
else
????EndPlate1=[];
????EndPlate2=[];
end
if?lines==0
????set(Cylinder‘EdgeAlpha‘0)
end
axis([050050050]);%控制坐標軸范圍,分別為XYZ最大和最小值
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1888??2011-07-12?23:34??test.m
-----------?---------??----------?-----??----
?????????????????1888????????????????????1
- 上一篇:任意陣列的常規波束形成matlab程序
- 下一篇:隨機共振雙穩系統程序
評論
共有 條評論