How to rotate a fsurf plot

7 vues (au cours des 30 derniers jours)
Stephan
Stephan le 7 Mai 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!

Réponse acceptée

Stephan
Stephan le 8 Mai 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);

Plus de réponses (1)

Walter Roberson
Walter Roberson le 7 Mai 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

Catégories

En savoir plus sur Lighting, Transparency, and Shading dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by