Question: Plot3d color oddity

December 28 2013 Julesp 30


Hello, I was trying to control color of a plot3d. 
I find this answer :
And this post of @Carl Love : 

Here's how to do it with a continuous transformation to your existing color function, which is presumed to return a value between 0 and 1 (the HUE color scale). Keeping it continuous is very very nice when you want colors to represent  numeric values. Let's say your existing color function is C, and your coordinate functions for a parametrized surface are FxFyFz.

Gamma:= 1.15:
     [Fx, Fy, Fz],  a..b, c..d,
     color=  [
          (x,y)-> (1-C(x,y))^Gamma/3, #Hue
          (x,y)-> 1-C(x,y)/4,         #Saturation
          (x,y)-> 1-C(x,y)/7,         #Value
          colortype= HSV
     lightmodel= NONE,
     style= patchnogrid     

There are several parameters that can be adjusted; I've chosen some of them by my personal taste for color .

  • Gamma controls the evenness of the distribution between red and green. I gave this one a name because this is a well-known concept (see the Wikipedia article "Gamma correction").
  • The 3 in the Hue selects the fraction (1/3 in this case) of the full color spectrum that you want. If you want green to red, it will need to be pretty close to 3.
  • The Hue value is subtracted from 1 to make the scale go green to red rather than red to green.
  • The 4 in the Saturation controls (to some extent) how "light" the light-green is.
  • The 7 in the Value controls (to some extent) how dark the dark-red is (lower values will make it darker).
  • lightmodel= NONE is used so that the colors will not change due to shadows when the plot is rotated. "

I made some test to see the impact of the Gamma parameter. 
And with Gamma = 1, it's odd. 



C := proc (x, y) x end proc;

proc (x, y) x end proc


Gamma := 1.15:


a := 1:



It looks like with gamma = 1, plot3d makes an automatic scaling of the colors.
But I don't understand why.
Does anyone know ?


Please Wait...