Synchronise different viewing angles onto same scatter plot

7 ビュー (過去 30 日間)
Lima Kilo
Lima Kilo 2016 年 9 月 2 日
コメント済み: Lima Kilo 2016 年 9 月 5 日
I'm trying to have a figure with two subplots (or preferably even two separate figures), showing the same 3d point cloud, but from different viewing angles. I would like to see the same point cloud from two different angles to get a better feeling for the points' locations in the 3d space, and I must be able to rotate the plots in sync. I managed to have 2 plots synchronised using linkprop, but I can't change the angle of one of the plots once they're synced.
Thanks for any help!
  2 件のコメント
Walter Roberson
Walter Roberson 2016 年 9 月 2 日
The rotate tool changes view() which in turn changes the axes CameraPosition and CameraViewAngle . Considering that you want different viewing angles, exactly what is it that you want to be synchronized between the two? CameraPosition, CameraViewAngle, CameraTarget, CameraUpVector ?
In terms of view, if the first plot is
view(a,b)
then what should be the view() for the second plot?
Lima Kilo
Lima Kilo 2016 年 9 月 5 日
I want to have the view synchronised. If the first plot was
view(a,b)
then I would like the second one to be something like
view(a+20,b+20)
Sorry for my late reply, but I didn't see that only answers, not comments, would get email notifications.

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

採用された回答

Walter Roberson
Walter Roberson 2016 年 9 月 5 日
You will need to use addlistener for changes to the CameraPosition and CameraViewAngle properties . In the listener, you can call view() on the first axis to find the values that you would then add 20 to and call view() for the second axes.
linkprop and linkaxes are only for synchronizing exact values, and do not provide for computing one property based upon the other.
  5 件のコメント
Walter Roberson
Walter Roberson 2016 年 9 月 5 日
Okay, it appears that you can addlistener on 'View', at least in R2016a.
Lima Kilo
Lima Kilo 2016 年 9 月 5 日
Awesome, that works. Thanks!
If someone else has the same problem, here is a minimum working example:
f1 = figure;
subplot(1,2,1)
sc1 = scatter3(1,1,1,'r+');
subplot(1,2,2)
sc2 = scatter3(1,1,1,'g+');
subplot(1,2,1)
lh1 = addlistener(gca, 'View','PostSet',@viewChangedCallback)
and the callback function:
function viewChangedCallback(src,evt)
subplot(1,2,1)
[az, el] = view(gca);
subplot(1,2,2)
view(gca, az+20, el+20);
subplot(1,2,1)
For robustness, gca should be replaced with fixed references.

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeGraphics Object Programming についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by