| Page 1 | Page 2 |
|
|
A '3D cartoon' engine that manipulates curves symbolically to project them in perspective.
This means that the 2D outline of a 3D curved surface is calculated as a curve.
Only after this stage are numeric methods employed, so the curves are rendered as closely as a pixelated screen will allow.
Shown here, a cylinder, a cone and a sphere, all 2nd order surfaces. The sphere is an 'inflated' buckyball (or truncated icosahedron), with hexagons shaded to look like a football.
I am currently implementing a generalisation that I have found for this type of surface, whose general form is
a.x2 + b.y2 + c.z2 + d.xy + e.yz + f.zx + g.x + h.y + i.z + j = 0
2nd order surfaces include spheroids, (including prolate, oblate and irregular), paraboloids, hyperboloids and prisms of any conic section, (including degenerates). I am convinced, and am currently attempting to prove, that a similar solution exists for surfaces up to the 4th order. The torus, for instance, is a 4th order surface. This is a rich set of geometric primitives for a 3D artist to draw on. The 'cartoon outlines' of a limitless variety of parametric surfaces are also amenable to symbolic calculation.
This investigation of highly symmetrical cylinder intersections is motivated by a desire for developable approximations of a sphere. (A developable surface has a flat net.)
One application is extremely low distortion map projections, in the spirit of Richard Buckminster-Fuller's dymaxion map. A disadvantage is a high number of discontinuities thanks to the sinusoidal edges of the nets. However these gaps do remain thinner and are considerably less numerous than those found in a similar construction with dihedral symmetry or anti-symmetry. (This is the symmetry of a uniform prism or anti-prism). Such a construction is demonstrated by some interrupted sinusoidal projections, normally by a uniform distribution of cylinders, perpendicular to the Earth's rotational axis.
The reverse application is a very practical way to create a globe using a standard printer, at least for the simpler nets with fewer gaps.
The icosahedral construction will be implemented later since it is considerably more complex and not a current priority. It is not topologically equivalent to any Catalan solid, having multiple face shapes.
Features in development include: Bitmap distortion; printable nets including Catalan solid versions, with some user control over layout; various net animations, including rolling/folding and unrolling/unfolding of the solids.
Future investigations may explore: The remaining symmetry groups on a sphere; various other compromises on map distortion, in addition to the options of a rounded solid or Catalan solid; the use of cones instead of cylinders.
Originally written in QuickBASIC on Windows, and Zed for the TI85 calculator, I ported my virtual Rubik's Cube as a learning exercise when I needed to use Java. (This was my introduction to object orientation.)
Move the mouse over the cube (and click once if you are using IE) and it will automatically scramble.
Hover over a square. Arrows appear to indicate which ways a slice can be moved. Click once to start turning. Click again to drop it in the nearest lined up position.
Click, hold and drag to turn the cube. It is easiest to manipulate if you keep the pointer away from the centre of the cube.