// Define the model. private void DefineModel(Model3DGroup group) { //// Verify the icosahedron calculations. //MeshExtensions.VerifyIcosahedron(); // Show the axes. MeshExtensions.AddAxes(group); const double scale = 0.8; // Make a solid dodecahedron. MeshGeometry3D mesh1 = new MeshGeometry3D(); mesh1.AddDodecahedron(); mesh1.ApplyTransformation(new ScaleTransform3D(scale, scale, scale)); group.Children.Add(mesh1.MakeModel(Brushes.Red)); // Make a translucent icosahedron. MeshGeometry3D mesh2 = new MeshGeometry3D(); mesh2.AddIcosahedron(); double icoScale = scale * G3.DodecahedronCircumradius() / G3.IcosahedronInradius(); mesh2.ApplyTransformation(new ScaleTransform3D(icoScale, icoScale, icoScale)); mesh2.ApplyTransformation(D3.Rotate(D3.YVector(), D3.Origin, 180)); Brush brush = new SolidColorBrush(Color.FromArgb(128, 128, 255, 128)); MaterialGroup group2 = D3.MakeMaterialGroup( new DiffuseMaterial(brush), new SpecularMaterial(Brushes.White, 100)); group.Children.Add(mesh2.MakeModel(group2)); // Make a translucent dodecahedron. MeshGeometry3D mesh3 = new MeshGeometry3D(); mesh3.AddDodecahedron(); double dodScale = icoScale * G3.IcosahedronCircumradius() / G3.DodecahedronInradius(); mesh3.ApplyTransformation(new ScaleTransform3D(dodScale, dodScale, dodScale)); MaterialGroup group3 = D3.MakeMaterialGroup( new DiffuseMaterial(brush), new SpecularMaterial(Brushes.White, 100)); group.Children.Add(mesh3.MakeModel(group3)); }