How to rotate a fsurf plot

7 views (last 30 days)
Stephan
Stephan on 7 May 2018
Answered: Stephan on 8 May 2018
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!

Accepted Answer

Stephan
Stephan on 8 May 2018
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);

More Answers (1)

Walter Roberson
Walter Roberson on 7 May 2018
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

Community Treasure Hunt

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

Start Hunting!