Re: Colored Surface
- To: mathgroup at smc.vnet.net
- Subject: [mg53539] Re: [mg53520] Colored Surface
- From: "David Park" <djmp at earthlink.net>
- Date: Sun, 16 Jan 2005 22:23:56 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Different methods... Needs["Graphics`Colors`"] Define a parametrization for a unit sphere with the fourth parameter as the color according to the Help for ParametricPlot3D. Then plot the sphere. sphere[\[Theta]_, \[Phi]_] := {Sin[\[Theta]]Cos[\[Phi]], Sin[\[Theta]]Sin[\[Phi]], Cos[\[Theta]], Blue} ParametricPlot3D[ sphere[\[Theta], \[Phi]] // Evaluate, {\[Theta], 0, \[Pi]}, {\[Phi], 0, 2\[Pi]}, Lighting -> False]; It was necessary to turn off the lighting so that the blue color would show. The trouble with the plot is that is has no shading. We can obtain shading by turning the lighting back on (the default) and using SurfaceColor for the color. sphere[\[Theta]_, \[Phi]_] := {Sin[\[Theta]]Cos[\[Phi]], Sin[\[Theta]]Sin[\[Phi]], Cos[\[Theta]], {SurfaceColor[Blue] ParametricPlot3D[ sphere[\[Theta], \[Phi]] // Evaluate, {\[Theta], 0, \[Pi]}, {\[Phi], 0, 2\[Pi]}, Lighting -> True]; This has shading but the trouble is that the whole sphere is too dark. So let's try using a lighter blue color. sphere[\[Theta]_, \[Phi]_] := {Sin[\[Theta]]Cos[\[Phi]], Sin[\[Theta]]Sin[\[Phi]], Cos[\[Theta]], {SurfaceColor[CornflowerBlue]}} ParametricPlot3D[ sphere[\[Theta], \[Phi]] // Evaluate, {\[Theta], 0, \[Pi]}, {\[Phi], 0, 2\[Pi]}, Lighting -> True]; That is better, but the sphere is still rather darker than CornflowerBlue and some other color is coming in. That is because the natural lighting is colored and highly saturated. The natural lighting overwhelms lighter surface colors. Better control, and a more natural construction can be obtained by using the DrawGraphics package from my web site below. Needs["DrawGraphics`DrawingMaster`"] Now you can use a standard parametrization for the sphere because the color is specified separately in the drawing statement. sphere[\[Theta]_, \[Phi]_] := {Sin[\[Theta]]Cos[\[Phi]], Sin[\[Theta]]Sin[\[Phi]], Cos[\[Theta]]} Draw3DItems[ {SurfaceColor[CornflowerBlue], EdgeForm[ColorMix[CornflowerBlue, Black][0.4]], ParametricDraw3D[ sphere[\[Theta], \[Phi]] // Evaluate, {\[Theta], 0, \[Pi]}, {\[Phi], 0, 2\[Pi]}]}, NeutralLighting[0.3, 0.5, 0.2], Background -> Linen, Axes -> False, BoxStyle -> Gray, Axes -> True]; Here the SurfaceColor was specified before drawing the sphere. I also added an EdgeForm that makes the edges (the "mesh") only slightly darker than the surface color. That gives a more subdued mesh. ColorMix is a DrawGraphics function that allows you to mix any two from Graphics`Colors`. NeutralLighting[saturation, brightness, ambientlight] inserts a set of Lighting options to specify the lighting used by Mathematica. By turning down the color saturation we obtain more neutral lighting that doesn't interfere with the surface color. It is also possible to rotate the lights. That gives a lighter colored surface with shading and a subdued "mesh". David Park djmp at earthlink.net http://home.earthlink.net/~djmp/ From: Hannachi [mailto:nicolas_hannachi at yahoo.fr] To: mathgroup at smc.vnet.net How to do a just blue sphere (for example) ?