How do I rotate the view of a cylinder created using surf plot?
62 ビュー (過去 30 日間)
古いコメントを表示
I have created a simple cylinder with radius (r), length (l) and then plotted this to create a surface using the function surf. However, the angle of the plot is such that the cylinder is pointing upwards i.e. z-axis points directly upwards:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/811954/image.bmp)
I wish to automatically plot the surface but with the orientation change below:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/812069/image.bmp)
I have attempted to use the view function but can't seem to master this correctly.
Thanks for the help,
Martin
2 件のコメント
回答 (2 件)
Adam Danz
2021 年 11 月 24 日
編集済み: Adam Danz
2021 年 11 月 28 日
Use makehgtform to translate and rotate the object.
[X,Y,Z]=cylinder([0 3],1000);
M=makehgtform('translate',___,'xrotate',___,'yrotate',___,'zrotate',___);
h=surf(X,Y,Z,'Parent',hgtransform('Matrix',M),___);
ax = gca();
ax.CameraUpVector = [0 1 0];
0 件のコメント
Kevin Holly
2021 年 11 月 24 日
Here is another method, if you want to rotate the surf plot.
figure
[x,y,z] = cylinder(2,20);
obj = surf(x,y,80*z);
xlim([-10 10])
ylim([-10 10])
zlim([0 100])
xlabel('x')
ylabel('y')
zlabel('z')
figure
[x,y,z] = cylinder(2,20);
obj = surf(x,y,80*z);
rotate(obj,[1 0 0],90)
xlim([-10 10])
ylim([-100 100])
zlim([30 50])
xlabel('x')
ylabel('y')
zlabel('z')
figure
[x,y,z] = cylinder(2,20);
obj = surf(x,y,80*z);
rotate(obj,[1 0 0],90)
rotate(obj,[0 0 1],90)
xlabel('x')
ylabel('y')
zlabel('z')
xlim([-50 50])
ylim([-10 10])
zlim([30 50])
5 件のコメント
Kevin Holly
2022 年 2 月 3 日
I must have missed your previous comment.
figure
[x,y,z] = cylinder(2,20);
obj = surf(x,y,80*z);
rotate(obj,[1 0 0],90)
rotate(obj,[0 0 1],90)
xlabel('z')
ylabel('x')
zlabel('y')
xlim([0 100])
ylim([-10 10])
zlim([-10 20])
obj.XData=obj.XData+50;
obj.YData=obj.YData;
obj.ZData=obj.ZData-40;
参考
カテゴリ
Help Center および File Exchange で Annotations についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!