public static void AddZAxis(Model3DGroup group, double length = 4, double thickness = 0.1) { MeshGeometry3D mesh = new MeshGeometry3D(); Point3D origin = D3.Origin - D3.XVector(thickness / 2) - D3.YVector(thickness / 2) - D3.ZVector(thickness / 2); mesh.AddBox(origin, D3.XVector(thickness), D3.YVector(thickness), D3.ZVector(length)); group.Children.Add(mesh.MakeModel(Brushes.Blue)); }
// Make a cube at the origin. public static void AddOrigin(Model3DGroup group, double cubeThickness = 0.102) { MeshGeometry3D mesh = new MeshGeometry3D(); Point3D origin = D3.Origin - D3.XVector(cubeThickness / 2) - D3.YVector(cubeThickness / 2) - D3.ZVector(cubeThickness / 2); mesh.AddBox(origin, D3.XVector(cubeThickness), D3.YVector(cubeThickness), D3.ZVector(cubeThickness)); group.Children.Add(mesh.MakeModel(Brushes.Black)); }
// Define the model. private void DefineModel(Model3DGroup group) { //// Verify the icosahedron calculations. //MeshExtensions.VerifyIcosahedron(); // Show the axes. MeshExtensions.AddAxes(group); const double scale = 1.75; // Make a solid insphere. MeshGeometry3D mesh1 = new MeshGeometry3D(); mesh1.AddSphere(D3.Origin, G3.IcosahedronInradius(), 60, 30, true); mesh1.ApplyTransformation(new ScaleTransform3D(scale, scale, scale)); group.Children.Add(mesh1.MakeModel(Brushes.Red)); // Make a translucent icosahedron. MeshGeometry3D mesh2 = new MeshGeometry3D(); mesh2.AddIcosahedron(); mesh2.ApplyTransformation(new ScaleTransform3D(scale, scale, scale)); 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 circumsphere. MeshGeometry3D mesh3 = new MeshGeometry3D(); mesh3.AddSphere(D3.Origin, G3.IcosahedronCircumradius(), 60, 30, true); mesh3.ApplyTransformation(new ScaleTransform3D(scale, scale, scale)); MaterialGroup group3 = D3.MakeMaterialGroup( new DiffuseMaterial(brush), new SpecularMaterial(Brushes.White, 100)); group.Children.Add(mesh3.MakeModel(group3)); }