I'm trying to create a version of Alberti's window, a figure that represents the projection of a three-dimensional figure onto a two-dimensional plane.
Here are my steps:
1) Create the three-dimensional figure:
myDodecahedronFigure =
Graphics3D[{EdgeForm[Blue],
PolyhedronData["Dodecahedron", "Faces", "Polygon"]}]
2) Extract the vertices and create a line from each to the center of projection (at {10,0,0}):
myVertices = N@PolyhedronData["Dodecahedron", "Vertices"];
myProjectionLines = (Line[{{10, 0, 0}, #}] & /@ myVertices);
3) Put them together with the plane of projection (at x = 6):
Show[myDodecahedronFigure,
Graphics3D[{Red, myProjectionLines,
PointSize[0.01], Point[myVertices],
Opacity[0.5], Yellow,
Polygon[{{6, -2, -2}, {6, -2, 2}, {6, 2, 2},
{6, 2, -2}, {6, -2, -2}}]}],
ImageSize -> 600
]
I would like to render the projections of the (red) points and the (blue) edges onto the projection plane.
Problems
I have two component problems:
a) I want to include only the points and edges that are visible from the center of projection. (I don't want to hand-select such points.)
b) I want a natural and simple way to render lines and points on the projection plane. (Alas Projection
merely projects a vector onto another vector, so that doesn't seem of much help.)