In 3D plot, how do I set the vertical axis to be y-axis down, z-axis forward and x-axis right?

27 vues (au cours des 30 derniers jours)
My hybrid 3D curves and images were drawn together, and I initially succeeded in drawing the result I wanted below, but the only thing missing was the y-axis and z-axis orientation. how do I set the vertical axis to be y-axis down, z-axis forward and x-axis right?(i.e. the physical coordinate system of the camera),your answer would be great appreciately!
%% x,y,z axis is located origin
% https://ww2.mathworks.cn/matlabcentral/answers/386936-change-x-y-z-axes-position-in-a-3d-plot-graph
hAxis = gca;
hAxis.XRuler.FirstCrossoverValue = 0; % X crossover with Y axis
hAxis.XRuler.SecondCrossoverValue = 0; % X crossover with Z axis
hAxis.YRuler.FirstCrossoverValue = 0; % Y crossover with X axis
hAxis.YRuler.SecondCrossoverValue = 0; % Y crossover with Z axis
hAxis.ZRuler.FirstCrossoverValue = 0; % Z crossover with X axis
hAxis.ZRuler.SecondCrossoverValue = 0; % Z crossover with Y axis
hAxis.Parent.Color=[1,1,1];
view(3);
box off;grid off;hold on;
%% space curve
t = -300:.1:400;
y = 200*sin(t/30);
z = 200*ones(size(t));
plot3(hAxis,t,y,z)
axis([-300,600,-300,600,0,200])
%% space image
img = imread("peppers.png");
image(hAxis,img)
%% adjust to show axes label
xlabel("x");ylabel("y");zlabel("z")
hAxis.YDir="reverse";
hAxis.ZDir = "reverse";
hAxis.XAxis.Label.Position=[hAxis.XLim(end),0,0];
hAxis.YAxis.Label.Position=[0,hAxis.YLim(end),0];
hAxis.ZAxis.Label.Position=[0,0,hAxis.ZLim(end)];
hAxis.LabelFontSizeMultiplier=3;
NOTES:
The following rendering should be oriented like the red arrow I drew by hand,not black,(The default rotation has the z-axis facing forward instead of the default z-axis vertical, just like matlab's built-in functions pcshow, pcplayer, etc. have the verticalAxis property to control the axis orientation)
  6 commentaires
cui,xingxing
cui,xingxing le 22 Août 2022
When I add pcshow after the above code, it turns out the way I expect it to, even after rotating with the roate3d tool, it doesn't change to the default z-axis up, the only thing that changes is the background colour to black
hold on;
ax = pcshow([1,1,1],'black',VerticalAxis="Y")
hold off;
cui,xingxing
cui,xingxing le 22 Août 2022
hi,all @dpb @Voss ,of course, the above program is not an "elegant" approach,and if there is a better way, I would like to suggest it for discussion

Connectez-vous pour commenter.

Réponses (0)

Produits


Version

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by