Hello,

The cube_scaling appeared with version 5.2 or 5.3 (I don't remember) because the previous default behavior, which corresponds to

cube_scaling="off"

could produce surfaces which were very hard to visualize with default angles and hard to homogeneously "rotate" in the elevation angle, when the surface is very flat. See this example:

clf
[x,y]=meshgrid(-1:0.1:1,-2:0.1:2);
surf(x,y,x.*y*1e-5)
gca().cube_scaling="off";

The default combination cube_scaling="on" and isoview="off" corresponds to the default behavior in Matlab. Introducing the cube_scaling property and its default value helps "migrating users" as they obtain the same thing in both softwares.

Anyway, I don't think that the combination cube_scaling="off" and isoview="off" has still an interest as it can produce the annoying behavior of the above example. The default combination cube_scaling="on" and isoview="off" allows the 3D object to fill the whole 3D box whatever the proportions of the enclosing 2D canvas, which is the expected default behavior.

Antoine's remark points out that cube_scaling="on" and isoview="on" produces a plot whose proportions are completely wrong with respect of the value of isoview="on". Adding in the help page of "axes_properties/isoview " a sentence such as

If you want *real* isometric scales on all axes in 3D you have to set cube_scaling property to 'off'

is not admissible.Setting the value of cube_scaling  to the opposite of the isoview value when the latter is changed could be a solution. At least, when the high level isoview *command* is used.


S.

Le 21/02/2018 à 11:06, Antoine Monmayrant a écrit :
OK, answering my own question:

It seems that when calling surf(), the cube_scaling property of the current axis is set to "on", which results in the observed behaviour. Manually resetting to its default value "off", gives me the expected behaviour. Should I fill a bug about the absence of cube_scaling mention on the help pages of surf() and isoview() ?

Antoine

Le 21/02/2018 à 10:59, Antoine Monmayrant a écrit :
Hi all,


I am a bit surprised by the way isoview acts on a surf plot.
It seems to just scale the x,y,z axis so that the plot is inside an isometric 3D cube. I was expecting an aspect ratio that depends on the Z matrix value and size or on the X,Y coordinate vectors and the Z matrix value.
Here is an example:

//without X,Y axis: expecting an aspect ratio in the (x,y) plan corresponding to the dimensions of the Z matrix
Z=rand(10,30);
h=scf();
surf(Z);
isoview("on");//we should see a 3/1 aspect ratio in the x/Y plane but we have square

//trying with X,Y coordinates: expecting an the plot to fit inside a "cube" with aspect ratios along the x,y & z directions
//that depends on max(X)-min(X), max(Y)-min(Y) & max(Z)-min(Z)
Z=rand(10,30);
X=1:size(Z,2);
Y=1:size(Z,1);
h=scf();
surf(X,Y,Z);
isoview("on");//we should see a 3/1 aspect ratio in the x/Y plane but we have square


Am I the only one to expect this behaviour?


Antoine





--
Stéphane Mottelet
Ingénieur de recherche
EA 4297 Transformations Intégrées de la Matière Renouvelable
Département Génie des Procédés Industriels
Sorbonne Universités - Université de Technologie de Compiègne
CS 60319, 60203 Compiègne cedex
Tel : +33(0)344234688
http://www.utc.fr/~mottelet

_______________________________________________
users mailing list
users@lists.scilab.org
http://lists.scilab.org/mailman/listinfo/users

Reply via email to