[comp.graphics] recursive sphere tesselation from tetrahedral seed

fontenot@comet.rice.edu (Dwayne Jacques Fontenot) (04/16/91)

Hello,

I have been playing with recursive triangular sphere tessellations. Starting
with an octahedron works beautifully, but since each triangle is split into
four triangles at each iteration, the progression of numpolys looks like this:

	8  32  128  512  2048  8192  ...

I want more flexibility in the number of polygons per sphere. So, I tried
starting with a tetrahedron, so that I could get:

	4  16  64  256  1024  4096  ...

This, plus the above would give me any power of 2, which is probably enough
flexibility...

But, the tetrahedral tessellation is giving me some strange results.
My question is this; is there a fundamental problem with starting with a 
tetrahedron? I cannot think of one... any replies will be greatly appreciated.

Thank you for your time,

Dwayne Fontenot (fontenot@comet.rice.edu)
Rice Advanced Visualization Lab (RAVL)
 

leech@homer.cs.unc.edu (Jonathan Leech) (04/16/91)

In article <1991Apr15.171109.2625@rice.edu>, fontenot@comet.rice.edu (Dwayne Jacques Fontenot) writes:
|> I have been playing with recursive triangular sphere tessellations. Starting
|> with an octahedron works beautifully...
|> But, the tetrahedral tessellation is giving me some strange results.
|> My question is this; is there a fundamental problem with starting with a
|> tetrahedron? I cannot think of one... any replies will be greatly appreciated.

    I think it's just a bit odd-looking for the first few levels due
to the odd symmetry of a tetrahedron compared to an octahedron, which
has 3 perpendicular symmetry planes.  It looks fine by the 3rd or 4th
subdivision level.

    While checking this out, I modified my sphereoid generator (the
one mentioned in the FAQ) to start with either tetrahedrons or
octahedrons (somebody was going to contribute an icosahedron but
hasn't yet).  Interested parties can retrieve it by anonymous ftp from
ftp.cs.unc.edu:~pub/sphere.c
--
    Jon Leech (leech@cs.unc.edu)    __@/
    "I met a wonderful new man. He's fictional, but you can't have everything."
	- Cecelia, _The Purple Rose of Cairo_

jbm@eos.arc.nasa.gov (Jeffrey Mulligan) (04/17/91)

leech@homer.cs.unc.edu (Jonathan Leech) writes:

>In article <1991Apr15.171109.2625@rice.edu>, fontenot@comet.rice.edu (Dwayne Jacques Fontenot) writes:
>|> I have been playing with recursive triangular sphere tessellations. Starting
>|> with an octahedron works beautifully...
>|> But, the tetrahedral tessellation is giving me some strange results.
>|> My question is this; is there a fundamental problem with starting with a
>|> tetrahedron? I cannot think of one... any replies will be greatly appreciated.

>    I think it's just a bit odd-looking for the first few levels due
>to the odd symmetry of a tetrahedron compared to an octahedron, which
>has 3 perpendicular symmetry planes.  It looks fine by the 3rd or 4th
>subdivision level.

All of the added vertices will have a valence (degree) of 6,
i.e., 6 edges will meet at the vertex.  The original vertices
of the polygon will retain their degree, which for the octahedron
is 4, and for the tetrahedron is 3.  After a large number of recursive
subdivisions, the triangular facets meeting at the original
vertices of the octahedron will be right equilateral triangles,
while those meeting at the vertices of the original tetrahedron
will be obtuse equilateral triangles (angle =120 deg).

The most uniform tesselation is obtained from the icosahedron,
the vertices of which all have degree 5.  In the limit, the
facets at these vertices will be triangles having angles
72, 54 and 54 degrees (want 60 60 60).


-- 

	Jeff Mulligan (jbm@eos.arc.nasa.gov)
	NASA/Ames Research Ctr., Mail Stop 262-2, Moffett Field CA, 94035
	(415) 604-3745

robert@texas.asd.sgi.com (Robert Skinner) (04/17/91)

In article <1991Apr15.171109.2625@rice.edu>, fontenot@comet.rice.edu (Dwayne Jacques Fontenot) writes:
|> 
|> Hello,
|> 
|> I have been playing with recursive triangular sphere tessellations. Starting
|> with an octahedron works beautifully, but since each triangle is split into
|> four triangles at each iteration, the progression of numpolys looks like this:
|> 
|> 	8  32  128  512  2048  8192  ...
|> 
|> I want more flexibility in the number of polygons per sphere. So, I tried
|> starting with a tetrahedron, so that I could get:
|> 
|> 	4  16  64  256  1024  4096  ...
|> 
|> This, plus the above would give me any power of 2, which is probably enough
|> flexibility...
|> 

recursive triangular subdivision is elegant and simple to code, but its
not very flexible, as you point out.  For an M-sided polyhedra, you get
M*2^N polygons, where N is the level of subdivision.  A better choice
is to do non-recursive subdivision of the triangle by some integer
factor K.  You will get K*K smaller triangles from each original
triangle, so the progression of numpolys for an octahedron would be

	8 32 72 128 200 288  ...

and for a tetrahedron would be

	4 16 36 64 100 144  ...

Also, non-recursive subdivision should be (at least marginally)
faster.  You have a lot fewer function invocations, and doing the
subdivision incrementally might help too.

-- 
Robert Skinner
robert@sgi.com

	Is that a pistol in your pocket, or are you just glad to see me?

			-  Mae West

rodent@netcom.COM (Ben Discoe) (04/18/91)

leech@homer.cs.unc.edu (Jonathan Leech) writes:
> [Concerning tesselating a tetrahedron]
>    I think it's just a bit odd-looking for the first few levels due
>to the odd symmetry of a tetrahedron compared to an octahedron, which
>has 3 perpendicular symmetry planes.  It looks fine by the 3rd or 4th
>subdivision level.

>    While checking this out, I modified my sphereoid generator (the
>one mentioned in the FAQ) to start with either tetrahedrons or
>octahedrons (somebody was going to contribute an icosahedron but
>hasn't yet).  Interested parties can retrieve it by anonymous ftp from
>ftp.cs.unc.edu:~pub/sphere.c
>
>    Jon Leech (leech@cs.unc.edu)    __@/

  My small 3d editor has a "frequency" feature which will raise any collection
of triangular faces to a given frequency (this is Buckminster Fuller-speak
for tesselating all faces to an equivalent degree).  In fact, this is the
only really neat feature of the editor (it's written for the Amiga, in case
anyone wants a copy).  Allowing "square" faces to also be tesselated in the
same operation would be an improvement, but I was unable to establish
an analogous geometric operation for faces with more than 4 sides
(although it's fun trying).  You need to tesselate 4-sided faces in order
to do the vector equilibrium ("cuboctahedron"), a worthy polyhedron.

  It's fun and easy to make your own geodesic spheres:
A. pick your favorite regular or irregular polyhedron 
B. raise it to the desired frequency (using above mentioned code)
C. normalize points to equidistant from their center (trivial)

Presto!  If anyone wants the Amiga code, ask me.  Now, I have two favors to
ask:	1. Anyone have any keen ideas on how to tesselate n-gons
	   with n>4?
	2. Anyone know where I can find C code to a 3D convex hull
	   algorithm?  I got _Computational Geometry: an introduction_
	   but the algorithm is abstract and gnarly.  This would enable
	   the user to simply define a few 3D points, do a convex hull
	   wrap, then go to step (A.) above.

To be precise, the above method is only one way (and not the "true" way)
to generate a geodesic sphere.  The "true" method involves dividing the
spherical angles, but the method mentioned isn't too far off.
----------
Ben Discoe, radical ecologist, computer scientist, loony at large :)