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)

Categories

Find more on 二维图和三维图 in Help Center and File Exchange

Tags

No tags entered yet.

Community Treasure Hunt

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

Start Hunting!