This example shows how you can draw interlocked tetrahedrons using XAML and C#. The example Rotate a tetrahedron with crisp edges using XAML and C# shows how to draw a three-dimensional tetrahedron. This example uses the same code to define the points and triangles that make up a tetrahedron. It repeats that to define two different tetrahedrons with only three small changes.

First, it changes the colors of the tetrahedrons so it’s easier to tell them apart.

Second, it adds the following `Transform` to the first (blue) tetrahedron.

<GeometryModel3D.Transform> <Transform3DGroup> <ScaleTransform3D ScaleX="2" ScaleY="2" ScaleZ="2" /> <TranslateTransform3D OffsetY="-0.77"/> </Transform3DGroup> </GeometryModel3D.Transform>

A `Transform` can only contain a single transformation. Because this example needs to apply multiple transformations to the tetrahedron, this `Transform` contains a `Transform3D` group. That group can then contain as many transformations as you need.

In this example, the group contains a scale transformation that enlarges the tetrahedron by a factor of 2 in the X, Y, and Z directions, basically doubling its size. (The previous example also included that transformation.)

The group also contains a translation transformation that moves the tetrahedron 0.77 units in the negative Y direction.

The third way this example differs from the previous example is it applies the following `Transform` to the second (yellow) tetrahedron.

<GeometryModel3D.Transform> <Transform3DGroup> <ScaleTransform3D ScaleX="2" ScaleY="-2" ScaleZ="2" /> <RotateTransform3D> <RotateTransform3D.Rotation> <AxisAngleRotation3D Axis="0,1,0" Angle="45"/> </RotateTransform3D.Rotation> </RotateTransform3D> <TranslateTransform3D OffsetY="0.77"/> </Transform3DGroup> </GeometryModel3D.Transform>

This `Transform` scales the tetrahedron by a factor of 2 in the X and Z directions, and by a factor of -2 in the Y direction to flip the tetrahedron upside down.

It also includes a `RotateTransform`. That transform’s `Rotation` property contains an `AxisAngleRotation3D` object that defines the rotation. It rotates the shape around the Y axis <0, 1, 0> through an angle of 45 degrees, so the tetrahedrons aren’t facing the same direction.

The `Transform` finishes by translating the tetrahedron by 0.77 units in the positive Y direction.

This example demonstrates an important technique in building three-dimensional scenes. It starts with a basic object, in this case a small tetrahedron, and then uses transformations to scale, rotate, and translate the object as needed to produce new objects.

Draw three interlocked boxes using WPF and XAMLThe example Draw two interlocked tetrahedrons using WPF, XAML, and C# draws two small tetrahedrons and uses transformations to make them overlap. This example uses a similar technique. It draws three cubes and scales them so they overlap. The following code shows how the program defines a single cube centered at the origin and with vertex coordinates (

Pingback: Draw two interlocked tetrahedrons defined by a cube