[Scilab-users] surf & isoview: bug or unexpected "feature"
Stéphane Mottelet
stephane.mottelet at utc.fr
Wed Feb 21 12:05:56 CET 2018
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
More information about the users
mailing list