       Re: Function Coloring with ParametricPlot3D

• To: mathgroup at smc.vnet.net
• Subject: [mg31270] Re: Function Coloring with ParametricPlot3D
• From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
• Date: Fri, 26 Oct 2001 04:28:10 -0400 (EDT)
• Organization: Universitaet Leipzig
• References: <9r57ic\$s3v\$1@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```Hi,

a simple trick,

Needs["Graphics`Colors`"]

cfun[x_, y_] :=
Module[{val = Sqrt[x^2 + y^2]},
Which[val <= 7, PaleGreen, val > 7, OrangeRed]]

(* don't display it because anyUndefinedFunction[] is not a color ...*)

pp = ParametricPlot3D[{x, y, 0, anyUndefinedFunction[x, y]}, {x, 0, 10},
{y, 0, 10},
PlotPoints -> 8, Lighting -> False, DisplayFunction -> Identity];

(* but it has numbers for it's arguments and *)

Show[pp /.  anyUndefinedFunction-> cfun, DisplayFunction ->
\$DisplayFunction]

work as expected.

Regards
Jens

David Park wrote:
>
> Dear MathGroup,
>
> There is a percularity of the ParametricPlot3D command with color
> specification as the fourth element that bugs me.
>
> It appears that this is the way that the algorithm works. Mathematica
> calculates the color that would result from the four corners of the square
> and then blends the colors. I suppose that in some sense this can be
> considered to be reasonable. But if you write a color function that
> specifices a specific set of colors, this blending introduces new colors
> which one may not want. Here is an example.
>
> Needs["Graphics`Colors`"]
>
> cfun[x_, y_] :=
>  Module[{val = Sqrt[x^2 + y^2]},
>   Which[
>   val <= 7, PaleGreen,
>   val > 7, OrangeRed]]
>
> ParametricPlot3D[{x, y, 0, cfun[x, y]}, {x, 0, 10}, {y, 0, 10},
>  PlotPoints -> 8,
>  Lighting -> False];
>
> What I would like to do is have Mathematica determine a single function
> value for each square, perhaps by averaging the values at the four corners,
> and then apply my color function to that single value. In that case there
> would be no blending, unless I decide to do the blending in my color
> function.
>
> Does anyone know how to work around this?
>
> David Park