The Two Nucleic Symmetries of Rhombohedral Tessellation

It was discovered through play that by wrapping the outlying vertices of a group of tessellated Rhombic Dodecahedra with a convex hull, an approximation of a Truncated Octahedron was produced.  Upon further investigation, it was discovered that an approximation of a Rhombic Dodecahedron emerged by wrapping the outlying vertices of a group of tessellated Truncated Octahedra with a convex hull.

The Rhombic Dodecahedron and its Strange Twin

A space-filling polyhedron is one that can be used to generate a tessellation in space. That means that by duplicating and translating (not rotating) the shape, we can create a three-dimensional tiling that leaves no gaps between its constituent shapes. This is of course easy to visualize with a cube; things begin to get both messy and interesting when you explore tessellations with other non-platonic space-filling shapes. And so began my brief but exciting journey into the lands of the Rhombic Dodecahedron.

Interaction with the Icosphere; Live Software Demo

At this point in our development of the Icosphere, we can render our Abstract Icosphere. We can recurse the Icosphere uniformly and non-uniformly. Additionally, we can detect an "observation region" of configurable radius. In this post, we'll tie together all of the work we've done so far in order to make our Icosphere interactive. I've also put together a live, video software demo of the Icospherical World Model.

Detecting the Observation Region: The Coupled Ring Adjacency Search

At this point, we have an Icosphere which we can uniformly recurse to any depth we like. We also know that we can asymetrically recurse any arbitrary face of the icosphere, but we have no system for detecting or determining which face(s) to recurse. Ultimately, we want the faces directly "below" the observer to be the faces under recursion - and the rest of the icosphere to remain unaffected.

Rendering the Static Icosphere in Unity Gaming Engine

We now have all of the information we need to harvest our mesh data from the Abstract Icosphere. We will begin with a simple Awake() method, which Unity will run before all else on program start. This awake method will initialize the icosphere, acquisition the Mesh from the Game Object to which this script is attached, initialize a few other variables which we'll come to later, and call our heavier methods, HarvestMeshData and CreateMesh.