MATLAB 如何在同一图中绘制3D图的多个视图(视角)?

我有一个 3D 图形,包含若干绘图对象。我想从几个不同的角度显示此图形,将每个视图作为子图,展示在同一图形中。如何实现?

 Accepted Answer

MathWorks Support Team
MathWorks Support Team on 12 Sep 2021
Edited: MathWorks Support Team on 30 Dec 2021

0 votes

首先,可以使用“subplot”创建具有三个坐标轴的图形。然后,将每个对象绘制到第一个轴上,同时确保使用函数句柄保存每个绘图对象。
接下来,使用“copyobj”,参考:
https://www.mathworks.com/help/matlab/creating_plots/copy-and-delete-graphics-objects.html#bt51tv3
将多个绘图对象复制到一个新的父对象(例如第二个轴的图形),然后对第三个轴重复此步骤。最后,使用“view”函数更改每个轴上的摄像机角度,参考:
https://www.mathworks.com/help/matlab/ref/view.html
这里给出一个完整的例子:
%% Create figure with 3 subplots
f = figure('Units','normalized','OuterPosition',[0 .5 1 .5]);
ax1 = subplot(1,3,1);
ax2 = subplot(1,3,2);
ax3 = subplot(1,3,3);
%% Plot some surfaces on 1st subplot
[X,Y,Z] = peaks;
s = surf(ax1,X,Y,Z); hold(ax1,'on');
p = surf(ax1,X,Y,zeros(size(X))); hold(ax1,'off');
plotObjs = [s,p];
%% Copy plot objects to other 2 subplots
copyobj(plotObjs,ax2);
copyobj(plotObjs,ax3);
%% Set different viewing angle for each subplot
view(ax1,0,90); title(ax1,'view(0,90)');
view(ax2,90,0); title(ax2,'view(90,0)');
view(ax3,0,0); title(ax3,'view(0,0)');

More Answers (0)

Tags

No tags entered yet.

Community Treasure Hunt

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

Start Hunting!