Re: Light and surface colors
- To: mathgroup at smc.vnet.net
- Subject: [mg58717] Re: Light and surface colors
- From: Daniele Lupo <danwolf_no_spam_please_ at libero.it>
- Date: Fri, 15 Jul 2005 14:13:59 -0400 (EDT)
- References: <db7nrj$ms5$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Il Fri, 15 Jul 2005 07:16:03 +0000 (UTC), David Park ha scritto:
> I tried to send you a Mathematica notebook with the code for this but your
> server rejected it because of a full mailbox.
This is because you must toggle _no_spam_please_...
>
> To make a shaded plot with regular Mathematica graphics we could use
> ParametricPlot3D with the 4th argument in the parametrization. The 4th
> argument gives graphics directives for plotting the surface. We don't have
> to turn the Lighting off if we give SurfaceColor instead of a raw color.
>
> We redefine the pressure for the parameters of the ellipsoid.
>
> ellipsoid[a_, b_, c_][u_, v_] := {a Cos[v]Cos[u], b Cos[v]Sin[u], c Sin[v]}
> pressure[x_, y_, z_] := x^2 + y^2 + Sin[4z];
> pressure[u_, v_] =
> pressure[x, y, z] /. Thread[{x, y, z} -> ellipsoid[7, 5, 4][u, v]]
> 49*Cos[u]^2*Cos[v]^2 + 25*Cos[v]^2*Sin[u]^2 + Sin[16*Sin[v]]
>
> Then define the parametrization for the ellipsoid with the function on it.
>
> ellipsoidfunction[a_, b_, c_][u_, v_] := {a Cos[v]Cos[u], b Cos[v]Sin[u],
> c Sin[v], {EdgeForm[], SurfaceColor[Hue[pressure[u, v]/50]]}}
.... I must study better this code...
So, if I understood, you've created the color function with a
parametrization, using u, v instead of x, y, z, creating in this way
pressure[u_,v_], but I can't understand if this line
49*Cos[u]^2*Cos[v]^2 + 25*Cos[v]^2*Sin[u]^2 + Sin[16*Sin[v]]
is in the definition or if it's an Output. I think the sendond, right?
Because I can't understand why you use it in the definition of that
function...
And I did not know that I'm able to specify colors directives directly in
the ellipsoid function: I've used them always as graphic command options...
I think that this is the solution key for my problem, right? In this case,
I can specify colors in the function, instead that in the ParametricPlot3D
command, resolving the conflich between Ligthing and surface color in my
original problem
>
> Then we can plot.
>
> ParametricPlot3D[ellipsoidfunction[7, 5, 4][u, v], {u, 0, 2*Pi},
> {v, -Pi/2, Pi/2},
> PlotPoints -> 100,
> ImageSize -> 450];
I think to understand your work. Thanks for you effort!!!
>
> There are three problems with this plot. 1) The regular Mathematica lighting
> tends to interfer with the colors on the surface.
I think that creating light with GrayLevel can resolve this problem
> 2) The Hue color function
> is not easy to interpret. What is high pressure and what is low pressure?
Yes, I know it, but this color was only a try. I'll find a better color
function....
> 3)
> It doesn't give a very accurate indication of what the shape of the contours
> are. They are not quite as regular as one might expect.
I know, but I am not be able to draw contour lines in the surface...
>
> My second solution uses DrawGraphics (from my web site below). It trims a
> grid of polygons in the uv-plane to the contour regions and then maps the
> resulting grids to the ellipsoidal surface. It uses the TwoColorScale
> function to give a color scale that gives shades of blue for values below 25
> and shades of red for colors above 25. It is much easier to interpret
> two-color plots - they are similar to cartographic maps. The NeutralLighting
> option is used to turn down the color saturation of the regular lighting so
> it doesn't interfer with the surface colors.
I'll try it...
>
> Needs["DrawGraphics`DrawingMaster`"]
>
> colorfun =
> TwoColorScale[{-0.29, 25, 49.7}, {ColorMix[RoyalBlue, Black][0.5],
> RoyalBlue, ColorMix[RoyalBlue, White][0.8], ColorMix[Red,
> White][0.8],
> Red, ColorMix[Red, Black][0.5]}];
>
> CUT
>
> Background -> Linen,
> ImageSize -> 450];
This seems good... Unfortunately, in these days I've two tests at
university, but I'll study your package when I can.
Thanks again
Daniele