One of the most powerful aspects of graphics in the Wolfram System is the availability of three‐dimensional as well as two‐dimensional graphics primitives. By combining three‐dimensional graphics primitives, you can represent and render three‐dimensional objects in the Wolfram System.
Every time you evaluate rcoord, it generates a random coordinate in three dimensions:
This generates a list of 20 random points in three‐dimensional space:
Here is a plot of the points:
This gives a plot showing a line through 10 random points in three dimensions:
If you give a list of graphics elements in two dimensions, the Wolfram System simply draws each element in turn, with later elements obscuring earlier ones. In three dimensions, however, the Wolfram System collects together all the graphics elements you specify, then displays them as three‐dimensional objects, with the ones in front in three‐dimensional space obscuring those behind.
Every time you evaluate rantri, it generates a random triangle in three‐dimensional space:
This draws a single random triangle:
This draws a collection of 5 random triangles. The triangles in front obscure those behind:
By creating an appropriate list of polygons, you can build up any three‐dimensional object in the Wolfram System. Thus, for example, all the surfaces produced by ParametricPlot3D are represented essentially as lists of polygons.
a multipolygon consisting of polygons poly1,poly2,…
Primitives which can take multiple elements.
As with the two-dimensional primitives, some three-dimensional graphics primitives have multi-coordinate forms, which are a more efficient representation. When dealing with a very large number of primitives, using these multi-coordinate forms where possible can both reduce the memory footprint of the resulting graphic and make it render much more quickly.
rantricoords defines merely the coordinates of a random triangle:
Using the multi-coordinate form of Polygon, this efficiently represents a very large number of triangles:
The Wolfram System allows polygons in three dimensions to have any number of vertices in any configuration. Depending upon the locations of the vertices, the resulting polygons may be non-coplanar or nonconvex. When rendering non-coplanar polygons, the Wolfram System will break the polygon into triangles, which are planar by definition, before rendering it.
The non-coplanar polygon is broken up into triangles. The interior edge joining the triangles is not outlined like the outer edges of the Polygon primitive:
Self-intersecting nonconvex polygons are filled according to an even‐odd rule that alternates between filling and not filling at each crossing:
This draws a number of random unit cubes and spheres in three‐dimensional space:
Even though Cone, Cylinder, Sphere, and Tube produce high-quality renderings, their usage is scalable. A single image can contain thousands of these primitives. When rendering so many primitives, you can increase the efficiency of rendering by using special options to change the number of points used by default to render Cone, Cylinder, Sphere, and Tube. The "ConePoints"Method option to Graphics3D is used to reduce the rendering quality of each individual cone. Cylinder, sphere, and tube quality can be similarly adjusted using "CylinderPoints", "SpherePoints", and "TubePoints", respectively.
Because the cylinders are so small, the number of points used to render them can be reduced with almost no perceptible change: