Prisms and Antiprisms

A prism is a 3D shape with two matching polygonal faces connected by straight edges.
To create these objects in the virtual world we can reuse our code for making polygons and simply connect the edges.
TO prism :n :r :h ; Generates an n-gonal prism of radius r and height h MAKE "s 2 * :r * SIN( 180 / :n ) ; Side length RU 90 FD :h / 2 RD 90 polygon :n :r RD 90 FD :h RU 90 polygon :n :r FD :r RT 90 + 180 / :n PD RU 90 FD :h RD 90 REPEAT :n [ FD :s RD 90 FD :h RU 180 FD :h RD 90 RT 360 / :n ] PU RT 90 - 180 / :n FD :r RT 180 RD 90 FD :h / 2 RU 90 END
An antiprism is like a prism, but its top and bottom faces are rotated and connected with triangles.
The following logo procedure defines antiprisms centered at the origin:
TO antiprism :n :r :h RU 90 FD :h / 2 RD 90 polygon :n :r RD 90 FD :h RU 90 RT 180 / :n polygon :n :r PU RT 90 FD :r RT 90 RT 90 / :n PD FOR [ i 1 :n 1 ][ MAKE "angle1 ( 360 * :i ) / :n MAKE "angle2 ( 360 * :i + 180 ) / :n MAKE "x1 :r * COS :angle1 MAKE "x2 :r * COS :angle2 MAKE "z1 :r * SIN :angle1 MAKE "z2 :r * SIN :angle2 MAKE "diag SQRT ( :h ^ 2 + ( :x2 - x1 ) ^ 2 + ( :z2 - :z1 ) ^ 2 ) ; Triangle side length LOOKATXYZ( :x1 ) ( :h / 2 ) ( :z1 ) FD :diag LOOKATXYZ( :x2 ) ( -:h / 2 ) ( :z2 ) FD :diag ] END
Interestingly, the triangular faces of an antiprism form a shape known as a skew regular polygon. That is a polygon which is regular, but not confined to 2-dimensional space alone.
- dpietrobon's blog
- Login or register to post comments
- 240 reads