5
$\begingroup$

Is it possible to get all points on a Polyhedron surface using two surface parameters, say

$ \phi,\theta $ spherical co-ordinates?

Just like in ParametricPlot3D, can we start with PolyhedronData["Tetrahedron"] to obtain spatial point positions?. The tip of position vector should cross edges automatically during $\phi,\theta$ sweep.

$\endgroup$
  • $\begingroup$ You can always make this kind of tricks $\endgroup$ – Dr. belisarius Dec 29 '14 at 19:22
  • $\begingroup$ @belisarius: fine,but want to append or prepend available Polyhedra. $\endgroup$ – Narasimham Dec 29 '14 at 19:59
  • 1
    $\begingroup$ This is a nice start. $\endgroup$ – Dr. belisarius Dec 29 '14 at 20:04
  • $\begingroup$ Stick a small sphere around the barycenter. Now parametrize by the spherical angles, using intersection of ray through spherical point (theta,phi) with polyhedron. $\endgroup$ – Daniel Lichtblau Dec 29 '14 at 23:57
  • $\begingroup$ Clear enough, we need to have direct coordinates as function of ($\theta,\phi, n $). $\endgroup$ – Narasimham Dec 30 '14 at 7:58
13
$\begingroup$

Exploit the fact that the vertices of the dual to a Platonic solid correspond to the centers of the faces of the solid itself. For instance, the dual to a cube is a regular octahedron, and the six vertices of this octahedron are in the directions of the centers of the faces of its dual cube.

Find the normalized directions of the face centers of the cube (for instance) this way:

FaceCenters = Normalize /@ PolyhedronData[PolyhedronData["Cube", "Dual"], "Faces"][[1]];

The {x,y,z} direction in Euclidean coordinates as a function of spherical angles θ and φ are of course:

x[θ_Real, φ_Real] := {Sin[θ] Cos[φ], 
                      Sin[θ] Sin[φ], 
                      Cos[θ]}

Now sweep through all spherical angles, and for each corresponding direction find the nearest face center direction (i.e., the one with the smallest angle to the direction defined by θ and φ). For each such direction, the distance to the surface is 1/Sin[ψ], where ψ is the scalar angle between the candidate direction and its nearest face direction:

    SphericalPlot3D[
         1/Sin[x[θ, φ].Nearest[FaceCenters, x[θ, φ]][[1]]], 
         {θ, 0, π}, {φ, 0, 2 π}, 
         PlotPoints -> 100] // Quiet

Cube fig

If you repeat with a Tetrahedron, for instance, you get this:

Tetrahedron fig

If you repeat for an Octahedron, you get this:

Octahedron fig

If you repeat for a Dodecahedron, you get this:

Dodecahdrond fig

| improve this answer | |
$\endgroup$
  • 5
    $\begingroup$ Wow... I really thought @Narasimhan would have accepted this answer! What more can he possibly want?! $\endgroup$ – David G. Stork Jan 6 '15 at 0:58
  • $\begingroup$ That was great. My apologies for the inordinate delay earlier $\endgroup$ – Narasimham Feb 10 '18 at 5:17
  • $\begingroup$ Wow... two months late! Better late than never! $\endgroup$ – David G. Stork Feb 10 '18 at 6:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.