How can I rotate camera keeping the size of sphere constant?

14 ビュー (過去 30 日間)
Gonzalo Ferrada
Gonzalo Ferrada 2020 年 11 月 5 日
回答済み: Tim 2020 年 11 月 5 日
I am plotting a sphere (world) that later I rotate using the built-in function view. This works well and allows to rotate the sphere the way I want in a loop to save individual frames. But the problem is that at each rotation, the size of the sphere changes (see animation attached). My ultimate goal is to create a nice animation but the changing size of the sphere is annoying.
My question then is: Is there a way that I can rotate the camera view but keep the same sphere size in each frame? Perhaps, another function similar to view? or another kind of workaround?
This is how I am creating the sphere:
I = imread('myimage.png');
[x,y,z] = sphere(359);
surface(x,y,z, 'FaceColor','texturemap','EdgeColor','none','Cdata',flipud(I))
view(3)
daspect([1 1 1])
After that, I plot the data that I want.
I have also tried using:
set(gca,'Position',[0 0 1 1])
and/or:
axis tight
and it does not work for my purpose.
Thanks!
  3 件のコメント
Adam Danz
Adam Danz 2020 年 11 月 5 日
編集済み: Adam Danz 2020 年 11 月 5 日
Tim's comment is the answer (Tim, consider moving it to the answers section).
Demo:
[x,y,z] = sphere(359);
surface(x,y,z, 'FaceColor','texturemap','EdgeColor','none')
view(3)
axis vis3d
grid on
xlabel('x'); ylabel('y'); zlabel('z')
rotate3d on
Gonzalo Ferrada
Gonzalo Ferrada 2020 年 11 月 5 日
Great! This solves the problem. Thank you guys!

サインインしてコメントする。

採用された回答

Tim
Tim 2020 年 11 月 5 日
Use:
axis vis3d
See Adam's comment above for a demo script; for completeness sake this same question was answered here by Xiaofan Fei.

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMATLAB Support Package for USB Webcams についてさらに検索

製品


リリース

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by