日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

plotcylinder matlab,Matlab在任意两点之间绘制三维圆柱

發(fā)布時(shí)間:2023/12/3 循环神经网络 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 plotcylinder matlab,Matlab在任意两点之间绘制三维圆柱 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Matlab在任意兩點(diǎn)之間繪制三維圓柱

Matlab在任意兩點(diǎn)之間繪制三維圓柱

此函數(shù)可能存在一些不足,請多多指教!

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; %%

end

A2=[cos(angel) 0 sin(angel);0 1 0; -sin(angel) 0 cos(angel)]; % 繞Y軸旋轉(zhuǎn)

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

end

if(ROD(1)==0) % 在YZ平面

angel=acos(dot(ROD,c)/norm(ROD)/norm(c));

angel=2*pi-angel; % 此處maybe要增加類似上面的判定是否變?yōu)樨?fù)數(shù)

A1=[1 0 0;0 cos(angel) -sin(angel);0 sin(angel) cos(angel)]; % 繞X軸旋轉(zhuǎn)

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

end

else

% 先繞Z軸旋轉(zhuǎn),在繞Y軸旋轉(zhuǎn)

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;

end

A3=[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);

end

end

fill3(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')

主函數(shù)如下:

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;

效果圖

Matlab在任意兩點(diǎn)之間繪制三維圓柱相關(guān)教程

總結(jié)

以上是生活随笔為你收集整理的plotcylinder matlab,Matlab在任意两点之间绘制三维圆柱的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。