此函式可能存在一些不足,請多多指教!
function plotcylinder(u1,u2,color_a,r)
l=norm(u1-u2);
rod=u2-u1;
[x,y,z]=cylinder(r,100);
x1=x*0;y1=y*0;z1=z*0;
z=l*z-l/2;
rod_midpoint=(u1+u2)/2;
x=rod_midpoint(1);
y=rod_midpoint(2);
z=rod_midpoint(3);
a=[1 0 0];b=[0 1 0];c=[0 0 1];
if(rod(2)==0||rod(1)==0)
if(rod(2)==0) % 在xz平面
angel=acos(dot(rod,c)/norm(rod)/norm(c));
if(rod(1)<0)
angel=-angel; %%
enda2=[cos(angel) 0 sin(angel);0 1 0; -sin(angel) 0 cos(angel)]; % 繞y軸旋轉
for i=1:length(x(1,:))
u=[x(1,i) y(1,i) z(1,i)]';
u1=a2*u;
x1(1,i)=u1(1);y1(1,i)=u1(2);z1(1,i)=u1(3);
u=[x(1,i) y(1,i) z(2,i)]';
u1=a2*u;
x1(2,i)=u1(1);y1(2,i)=u1(2);z1(2,i)=u1(3);
end
endif(rod(1)==0) % 在yz平面
angel=acos(dot(rod,c)/norm(rod)/norm(c));
angel=2*pi-angel; % 此處maybe要增加類似上面的判定是否變為負數
a1=[1 0 0;0 cos(angel) -sin(angel);0 sin(angel) cos(angel)]; % 繞x軸旋轉
for i=1:length(x(1,:))
u=[x(1,i) y(1,i) z(1,i)]';
u1=a1*u;
x1(1,i)=u1(1);y1(1,i)=u1(2);z1(1,i)=u1(3);
u=[x(1,i) y(1,i) z(2,i)]';
u1=a1*u;
x1(2,i)=u1(1);y1(2,i)=u1(2);z1(2,i)=u1(3);
end
endelse
% 先繞z軸旋轉,在繞y軸旋轉
angel=acos(dot(rod,c)/norm(rod)/norm(c));
a2=[cos(angel) 0 sin(angel);0 1 0; -sin(angel) 0 cos(angel)];
angel=acos(dot(rod,a)/norm(rod)/norm(a));
if(rod(2)<0)
angel=2*pi-angel;
enda3=[cos(angel) -sin(angel) 0;sin(angel) cos(angel) 0;0 0 1];
a=a3*a2;
for i=1:length(x(1,:))
u=[x(1,i) y(1,i) z(1,i)]';
u1=a*u;
x1(1,i)=u1(1);y1(1,i)=u1(2);z1(1,i)=u1(3);
u=[x(1,i) y(1,i) z(2,i)]';
u1=a*u;
x1(2,i)=u1(1);y1(2,i)=u1(2);z1(2,i)=u1(3);
endendfill3(x1(1,:)+x,y1(1,:)+y,z1(1,:)+z,color_a,'edgecolor','none')
hold on
fill3(x1(2,:)+x,y1(2,:)+y,z1(2,:)+z,color_a,'edgecolor','none')
hold on
surf(x1+x,y1+y,z1+z,'facecolor',color_a,'edgecolor','none')
axis equal
xlabel('x')
ylabel('y')
zlabel('z')
set(gcf,'color','w')
主函式如下:
figure(1)
set(gcf,'color','w')
a=[2 4 6];
b=[10 10 8];
plotcylinder(a,b,'b',0.1)
xlabel('x')
ylabel('y')
zlabel('z')
axis equal
camlight;
lighting flat;
效果圖
確定兩點之間的點
egret.point.interpolate 確定兩個指定點之間的點。引數 f 確定新的內插點相對於引數 pt1 和 pt2 指定的兩個端點所處的位置。引數 f 的值越接近 1.0,則內插點就越接近第乙個點 引數 pt1 引數 f 的值越接近 0,則內插點就越接近第二個點 引數 pt2 param...
計算兩點之間的距離
檔名稱 test.cpp 完成日期 2013年10月17日 版本號 v1.0 輸入描述 輸入兩個橫縱座標 問題描述 輸入兩個橫縱座標,求兩點之間的距離 程式輸出 兩點之間的距離 問題分析 通過輸入兩個橫縱座標,求兩點之間的距離 演算法設計 略 include includeusing namespa...
2025 兩點之間的距離
time limit 3 second memory limit 2 mb 輸入平面上兩點的座標,通過呼叫乙個計算兩點間距離的函式求出兩者的距離 兩行,第一行為某一點的座標x y,中間用空格隔開,第二行為另一點的座標x y,中間用空格隔開。一行,兩點間的距離,保留兩位小數 8.5 12.5 1 01...