1

I am trying to understand what is happening in the following code (taken from here):

SphericalPlot3D[1, {θ, 0, π}, {Φ, 0, 2 π}, 
     ColorFunction -> Function[{x, y, z, θ, Φ, r}, 
         ColorData["DarkRainbow"][Cos[5 θ] + Cos[4 Φ]/2]], 
     ColorFunctionScaling -> False, Mesh -> False, Boxed -> False, Axes -> False]

As only θ and Φ appear in the function, I thought on removing {x, y, z} from the Function parameters. But then I get a different plot. Why?

How is the function evaluated, what is happening behind the scenes?

The docs are not clear on how the arguments are passed.

https://reference.wolfram.com/language/ref/ColorFunction.html

https://reference.wolfram.com/language/ref/SphericalPlot3D.html?q=SphericalPlot3D

https://reference.wolfram.com/language/ref/ColorData.html?q=ColorData

1 Answers1

0

The arguments to functions correspond to the "slot" number, not the symbolic name used to represent the slot (unlike, say, Python's keyword arguments).

In

Function[{x, y, z, θ, Φ, r}, ...]

the symbol θ represent slot 4 and Φ represents slot 5.

In

Function[{θ, Φ, r}, ...]

the symbol θ represent slot 1 and Φ represents slot 2.

According to the docs for SphericalPlot3D, the slots for ColorFunction are filled as follows:

  • Slot 1 is passed the $x$ coordinate.
  • Slot 2 is passed the $y$ coordinate.
  • Slot 3 is passed the $z$ coordinate.
  • Slot 4 is passed the $\theta$ coordinate.
  • Slot 5 is passed the $\phi$ coordinate.
  • Slot 6 is passed the $r$ coordinate.

The ColorFunction in the example can also be coded using Slot[n] (#n) and the slot numbers:

ColorFunction -> (ColorData["DarkRainbow"][Cos[5 #4] + Cos[4 #5]/2] &)

but the symbolic form is easier to read, imo.

Michael E2
  • 235,386
  • 17
  • 334
  • 747