How to rotate a fsurf plot

조회 수: 7 (최근 30일)
Stephan
Stephan 2018년 5월 7일
답변: Stephan 2018년 5월 8일
Hello everyone,
the following code rotates the plot that is produced by the function surf().
%example for surf:
hsurf= surf(peaks(20));
direction = [1 0 0];
rotate(hsurf,direction,25);
It does not work, however, for the function fsurf():
% example fsurf:
f = @(x,y) x;
g = @(x,y) y;
h = @(x,y) x*0;
hfsurf = fsurf(f,g,h);
direction = [1 0 0];
rotate(hfsurf,direction,25);
Could someone tell me how to fix this problem?
Thanks!

채택된 답변

Stephan
Stephan 2018년 5월 8일
Thank you very much. I summarize your idea in this code:
%
ax = axes('XLim',[-1.5 1.5],'YLim',[-1.5 1.5],'ZLim',[-1.5 1.5]);
view(2)
f = @(x,y) x;
g = @(x,y) y;
h = @(x,y) x*0;
hfsurf = fsurf(f,g,h);
t = hgtransform('Parent',ax);
set(hfsurf,'Parent',t);
Rz = makehgtform('xrotate',pi/4);
set(t,'Matrix',Rz);

추가 답변 (1개)

Walter Roberson
Walter Roberson 2018년 5월 7일
The output of fsurf() is a ParameterizedFunctionSurface object, which rotate() cannot process. rotate() can process surface(), line(), and patch() objects.
You will need to create an hgtransform group, parent the fsurf to it, and apply a rotation matrix to the hgtransform

카테고리

Help CenterFile Exchange에서 Surface and Mesh Plots에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by