private void OnLoad(object sender, EventArgs e) { // maximize window WindowState = WindowState.Maximized; // load program _programOdd = ProgramFactory.Create <GeodesicProgramOdd>(); _programEqual = ProgramFactory.Create <GeodesicProgram>(); _program = _programOdd; // create icosahedron and set model matrix _modelMatrix = Matrix4.CreateScale(1); _icosahedron = new Icosahedron(5); _icosahedron.UpdateBuffers(); // bind it to an vao _vao = new VertexArray(); _vao.Bind(); _vao.BindElementBuffer(_icosahedron.IndexBuffer); _vao.BindAttribute(_program.Position, _icosahedron.VertexBuffer); // set some reasonable default state GL.ClearColor(Color4.Black); GL.Enable(EnableCap.DepthTest); // backface culling is done in the tesselation control shader GL.Enable(EnableCap.CullFace); GL.CullFace(CullFaceMode.Back); GL.PatchParameter(PatchParameterInt.PatchVertices, 3); // lighting stuff _deferredRenderer = new DeferredRenderer(); // enable controls _variableHandler.Enable(this); }
public MeshPreviewSelector() { InitializeComponent(); var previewRenderer = new PreviewRenderer(new Size(200, 200)); previewRenderer.BackgroundColor = new Vector4(0.75f, 0.75f, 0.75f, 1f); var meshes = new List <Mesh>(); meshes.Add(Icosahedron.Create(0.45f, 0)); meshes.Add(Icosahedron.Create(0.45f, 1)); meshes.Add(Tube.Create(0.3f, 0.35f, 0.7f, 20)); meshes.Add(Cloud.Create(CloudShape.Sphere, 0.9f, 50000)); meshes.Add(Cone.Create(0.3f, 0.8f)); meshes.Add(TrefoilKnot.Create()); var rotation = Quaternion.CreateFromYawPitchRoll(0, -0.25f, -0.2f); MeshesListBox.ItemsSource = meshes .Select(_ => new MeshPreviewViewModel(_, previewRenderer.RenderPreview(_, rotation))) .ToArray(); previewRenderer.Dispose(); }
private void AddReflectionTest() { var environmentMap = new TextureCubemap(); var images = new Bitmap[6] { (Bitmap)Bitmap.FromFile("Resources\\Textures\\Cubemap\\xneg.png"), (Bitmap)Bitmap.FromFile("Resources\\Textures\\Cubemap\\xpos.png"), (Bitmap)Bitmap.FromFile("Resources\\Textures\\Cubemap\\yneg.png"), (Bitmap)Bitmap.FromFile("Resources\\Textures\\Cubemap\\ypos.png"), (Bitmap)Bitmap.FromFile("Resources\\Textures\\Cubemap\\zneg.png"), (Bitmap)Bitmap.FromFile("Resources\\Textures\\Cubemap\\zpos.png"), }; environmentMap.SetImages(images); var mesh = Icosahedron.Create(0.4f, 3); var material = new Material(MaterialType.RimReflectionDiffuseTextureColor, RenderQueue.Opaque); material.Color = Vector4.Zero; material.SetTexture("uniform_ReflectionTexture", environmentMap); var so = new Node(_scene, "reflective"); var renderer = so.AddComponent <MeshRenderable>(); renderer.Material = material; renderer.Mesh = mesh; }
// Use this for initialization void Start() { rend = gameObject.GetComponent<Renderer>(); //mat = new Material(Shader.Find("Standard")); //rend = new Renderer(); //rend.material = mat; gMO = GameObject.Find("GameManager"); gM = gMO.GetComponent<GameManager>(); tetrahedron = gameObject.GetComponent<Tetrahedron>(); octahedron = gameObject.GetComponent<Octahedron>(); dodecahedron = gameObject.GetComponent<Dodecahedron>(); icosahedron = gameObject.GetComponent<Icosahedron>(); counter = (int)Random.Range(1f, 5f); if(counter == 5) counter = 4; if(counter == 1) tetrahedron.MakeMesh(); if(counter == 2) octahedron.MakeMesh(); if(counter == 3) dodecahedron.MakeMesh(); if(counter == 4) icosahedron.MakeMesh(); gM.ZombiePlus(); }
void RenderHexes(Icosahedron icosahedron) { GameObject FaceParent = new GameObject("FaceParent"); FaceParent.transform.SetParent(gameObject.transform); foreach (var hex in icosahedron.Hexagons) { GameObject hexGO = new GameObject("hex"); hexGO.transform.SetParent(FaceParent.transform); var meshrenderer = hexGO.AddComponent <MeshRenderer>(); var meshfilter = hexGO.AddComponent <MeshFilter>(); var mesh = new Mesh(); meshfilter.mesh = mesh; mesh.vertices = hex.GetVertices(); mesh.triangles = new int[12] { 0, 1, 2, 2, 3, 4, 4, 5, 0, 1, 3, 5 }; mesh.RecalculateNormals(); meshrenderer.material = defaultMaterial; hexGO.transform.localScale = 0.95f * Vector3.one; } }
void RenderFaces(Icosahedron icos) { GameObject FaceParent = new GameObject("FaceParent"); FaceParent.transform.SetParent(gameObject.transform); foreach (var xface in icos.global.faces) { if (xface.subdivided) { RenderSubFaces(icos); return; } GameObject face = new GameObject("face"); face.transform.SetParent(FaceParent.transform); var meshrenderer = face.AddComponent <MeshRenderer>(); var meshfilter = face.AddComponent <MeshFilter>(); var mesh = new Mesh(); meshfilter.mesh = mesh; mesh.vertices = xface.getVertices(); mesh.triangles = new int[6] { 0, 1, 2, 2, 1, 0 }; mesh.RecalculateNormals(); meshrenderer.material = defaultMaterial; face.transform.localScale = 0.95f * Vector3.one; } }
private void AddSpheres() { var mesh = Icosahedron.Create(0.05f, 3); var spheres = new Node(Scene, "spheres"); spheres.Transform.WorldPosition = new Vector3(0, 0.3f, 0); var material = new Material(MaterialType.DiffuseColor); var count = 5; for (int i = 0; i < count; i++) { for (int j = 0; j < count; j++) { for (int k = 0; k < count; k++) { var so = new Node(Scene); var r = so.AddComponent <MeshRenderable>(); r.Mesh = mesh; r.Material = material; so.Transform.LocalPosition = (new Vector3(i, k, j) - new Vector3(1, 0, 1) * (count * 0.5f)) * 0.2f; so.Transform.Parent = spheres.Transform; } } } }
public Pentagon(Point center, Icosahedron icos, Point[] points = null) { this.points = new Point[5]; CenterPoint = center; icosahedron = icos; Init(points); UnityEngine.Debug.Log(this.points.Length); }
public Hexagon(Point center, Icosahedron icos, List <Point> points = null) { this.points = new Point[6]; CenterPoint = center; icosahedron = icos; Init(points); UnityEngine.Debug.Log(this.points.Length); }
void Start() { rotationSpeed = Random.Range(-5f, 5f); rend = gameObject.GetComponent <Renderer>(); tetrahedron = gameObject.GetComponent <Tetrahedron>(); octahedron = gameObject.GetComponent <Octahedron>(); dodecahedron = gameObject.GetComponent <Dodecahedron>(); icosahedron = gameObject.GetComponent <Icosahedron>(); }
void Start() { rotationSpeed = Random.Range(-5f, 5f); rend = gameObject.GetComponent<Renderer>(); tetrahedron = gameObject.GetComponent<Tetrahedron>(); octahedron = gameObject.GetComponent<Octahedron>(); dodecahedron = gameObject.GetComponent<Dodecahedron>(); icosahedron = gameObject.GetComponent<Icosahedron>(); }
void Start() { global = new Global(); Icosahedron icosahedron = new Icosahedron(global, SubDivide, Spherize, Radius); foreach (var point in icosahedron.HexagonPoints) { VisualizePoint(point); UnityEngine.Debug.Log(point); } gameObject.transform.Translate(translator); }
void OnGUI() { GUILayout.Label("Base Settings", EditorStyles.boldLabel); subdivisions = EditorGUILayout.IntSlider("Subdivisions", subdivisions, 0, 10); if (GUILayout.Button("Generate")) { var path = EditorUtility.SaveFilePanelInProject( "Save sphere mesh", "sphere.asset", "asset", "message??"); if (path.Length > 0) { AssetDatabase.CreateAsset(Icosahedron.Generate(subdivisions), path); } } }
private void AddShakeLight() { var so = new Node(Scene, "shaking light 1"); var light = so.AddComponent <LightSource>(); light.Type = LightType.Point; var r = so.AddComponent <MeshRenderable>(); var mesh = Icosahedron.Create(0.05f, 3); var material = new Material(MaterialType.FlatColor); r.Mesh = mesh; r.Material = material; so.AddComponent <Tweener>(); //so.AddComponent<Shaker>(); }
void RenderSegments(Icosahedron icos) { GameObject SegmentParent = new GameObject("SegmentParent"); SegmentParent.transform.SetParent(gameObject.transform); foreach (var seg in icos.global.segments) { GameObject segment = new GameObject("edge"); segment.transform.SetParent(SegmentParent.transform); var lr = segment.AddComponent <LineRenderer>(); lr.SetPosition(0, new Vector3(seg.p1.X, seg.p1.Y, seg.p1.Z)); lr.SetPosition(1, new Vector3(seg.p2.X, seg.p2.Y, seg.p2.Z)); lr.SetWidth(0.04f, 0.04f); lr.useWorldSpace = false; lr.material = sprite; } }
private void AddBroccoli() { var mesh = Icosahedron.Create(0.7f, 4); var sphereSo = new Node(Scene, "big sphere"); sphereSo.Transform.LocalPosition = new Vector3(0, -3, 0); var material = new Material(Shaders.Brokkoli_vert, Shaders.Brokkoli_frag, RenderQueue.Opaque); material.MainTexture = new Texture2("Resources\\Textures\\green.png", false); material.MainTexture.Wrap = TextureWrapMode.ClampToEdge; material.Color = new Vector4(1, 1, 1, 1); material.SetValue("uniform_Weight", 0.5f); var r = sphereSo.AddComponent <MeshRenderable>(); r.Mesh = mesh; r.Material = material; }
private void AddDemo() { var cameraSO = new Node(Scene, "main camera"); //scene object that will host Camera and CameraManipulator components cameraSO.AddComponent <Camera>(); //adding Camera to scene cameraSO.AddComponent <CameraManipulator>(); //adding manipulator so you can control camera with (W, A, S, D and mouse Mid) around the scene. var sphereSO = new Node(Scene, "spheres"); //scene object that will host sphere mesh renderer component sphereSO.Transform.WorldPosition = new Vector3(0, 0, -1); //position object in world space var renderer = sphereSO.AddComponent <MeshRenderable>(); //adding component that can render 3D meshes var mesh = Icosahedron.Create(0.05f, 3); //generating Icosahedron mesh (sphere) renderer.Mesh = mesh; //assigning mesh to renderer var lightSO = new Node(Scene, "light0"); //scene object for light source component hosting lightSO.Transform.WorldPosition = new Vector3(0, 0, -0.5f); //setting its position lightSO.AddComponent <LightSource>(); //adding lightsource component }
protected override void OnStart() { base.OnStart(); _collider = this.SceneObject.AddComponent <SphereCollider>(); _collider.Radius = 0.1f; _pickerRenderer = this.SceneObject.AddComponent <MeshRenderable>(); _pickerRenderer.Mesh = Icosahedron.Create(0.02f, 1); _pickerRenderer.IsEnabled = false; _pickerRenderer.Material = new Material(MaterialType.FlatColor); _pickerRenderer.Material.Color = new Vector4(1, 1, 0, 1); _pickerRenderer.IsRaytracable = false; _selector = SceneObject.GetComponent <ObjectSelector>(); if (_selector != null) { _selector.Selected += ObjectSelected; } }
public override void OnValidate() { base.OnValidate(); var mb = IsSimple ? Icosahedron.CreateSimple() : Icosahedron.Create(); for (int i = 0; i < Subdivisions; i++) { mb.Subdivide(Steps); } if (IsSphere) { mb.Sphere(0.5f); } meshFilter.sharedMesh = mb.ToMesh(); meshFilter.sharedMesh.RecalculateNormals(); }
private void AddDeferredTest() { var planeSo = new Node(_scene, "plane"); planeSo.AddComponent <MeshRenderable>().Mesh = Plane.Create(10, 10); planeSo.Transform.LocalRotation = new Quaternion(Vector3.Left, MathF.PI / 2); var sphereMesh = Icosahedron.Create(0.01f, 2); var sphereMaterial = new Material(MaterialType.FlatColor); sphereMaterial.Color = Vector4.One; var lightsParent = new Node(_scene, "lights"); lightsParent.AddComponent <Rotator>().Rotation = new Vector3(0.7, 0, 0); var lightCount = 50; for (int i = 0; i < lightCount; i++) { var so = new Node(_scene); so.Transform.Parent = lightsParent.Transform; var light = so.AddComponent <LightSource>(); var color = new Vector3(RandomF.Float(), RandomF.Float(), RandomF.Float()); color /= MathF.Max(color.X, color.Y, color.Z); light.Diffuse = color; light.Attenuation = new Vector3(0, 4f, 0); var position = Vector3.Zero; while (position.LengthSquared < 0.05f) { position = RandomF.InsideUnitSphere(); } so.Transform.LocalPosition = position * 5; var meshRenderer = so.AddComponent <MeshRenderable>(); meshRenderer.Mesh = sphereMesh; meshRenderer.Material = sphereMaterial; } }
public override List <Vector3> Vertices() { if (_verticesCalculated) { return(_vertices); } _middlePointIndexCache = new Dictionary <long, int>(); _vertices = new List <Vector3>(); foreach (var vertex in Icosahedron.GetVertices()) { AddVertex(vertex); } _triangles = Icosahedron.GetTriangles(); RefineTriangles(); _verticesCalculated = true; return(_vertices); }
public static Mesh Create(Seed s) { var mesh = new Mesh(); switch (s) { case Seed.Dodecahedron: break; case Seed.Cube: mesh = new Cube(); break; case Seed.Icosahedron: mesh = new Icosahedron(); break; case Seed.Octahedron: mesh = new Octahedron(); break; case Seed.Tetrahedron: mesh = new Tetrahedron(); break; case Seed.SquareTiling: mesh = new Square(); break; case Seed.TriangleTiling: break; case Seed.HexagonalTiling: break; } return(mesh); }
// Use this for initialization void Start() { rend = gameObject.GetComponent <Renderer>(); //mat = new Material(Shader.Find("Standard")); //rend = new Renderer(); //rend.material = mat; gMO = GameObject.Find("GameManager"); gM = gMO.GetComponent <GameManager>(); tetrahedron = gameObject.GetComponent <Tetrahedron>(); octahedron = gameObject.GetComponent <Octahedron>(); dodecahedron = gameObject.GetComponent <Dodecahedron>(); icosahedron = gameObject.GetComponent <Icosahedron>(); counter = (int)Random.Range(1f, 5f); if (counter == 5) { counter = 4; } if (counter == 1) { tetrahedron.MakeMesh(); } if (counter == 2) { octahedron.MakeMesh(); } if (counter == 3) { dodecahedron.MakeMesh(); } if (counter == 4) { icosahedron.MakeMesh(); } gM.ZombiePlus(); }
private void AddLights() { var material = new Material(MaterialType.FlatColor); material.Color = new Vector4(1, 1, 1, 1); var mesh = Icosahedron.Create(0.02f, 1); var light = new Node(Scene, "light0"); light.Transform.LocalPosition = new Vector3(0, 1.5f, 0); light.AddComponent <LightSource>(); var renderer = light.AddComponent <MeshRenderable>(); renderer.Mesh = mesh; renderer.Material = material; light = new Node(Scene, "light1"); light.Transform.LocalPosition = new Vector3(0, -1.5f, 0); light.AddComponent <LightSource>(); renderer = light.AddComponent <MeshRenderable>(); renderer.Mesh = mesh; renderer.Material = material; }
void RenderSubFaces(Icosahedron icos) { GameObject FaceParent = new GameObject("SubFaceParent"); FaceParent.transform.SetParent(gameObject.transform); for (int i = 0; i < 20; i++) { for (int j = 0; j < icos.subdividemp * icos.subdividemp; j++) { var verticies = icos.subFaces[i][j].getVertices(); GameObject face = new GameObject("face"); face.transform.SetParent(FaceParent.transform); faceGo.Add(icos.subFaces[i][j], face); var meshrenderer = face.AddComponent <MeshRenderer>(); var meshfilter = face.AddComponent <MeshFilter>(); var mesh = new Mesh(); meshfilter.mesh = mesh; mesh.vertices = verticies; mesh.RecalculateNormals(); mesh.triangles = new int[3] { 0, 1, 2, }; mesh.RecalculateNormals(); meshrenderer.material = defaultMaterial; //face.transform.localScale = 0.95f * Vector3.one; } } }
protected override void OnStart() { _control = Scene.Control; _control.MouseDown += Control_MouseDown; var material = new Material(MaterialType.FlatColor); material.Color = new Vector4(1, 1, 0, 1); _renderer = SceneObject.AddComponent <MeshRenderable>(); _renderer.Material = material; _renderer.IsEnabled = false; var mesh = new Mesh(); var buffer3 = new Vector3Buffer(2); buffer3.Usage = BufferUsage.DynamicDraw; mesh.Vertices = buffer3; mesh.Type = PrimitiveType.Lines; _renderer.Mesh = mesh; var hitPointSo = new Node(Scene); var sphere = Icosahedron.Create(0.01f, 1); _hitPointRenderer = hitPointSo.AddComponent <MeshRenderable>(); _hitPointRenderer.IsEnabled = false; _hitPointRenderer.Mesh = sphere; _hitPointRenderer.SceneObject.Layer = 2; _hitPointRenderer.Material = material; _hitPointTransform = hitPointSo.Transform; _selectedMaterial = new Material(MaterialType.DiffuseColor); _selectedMaterial.Color = new Vector4(1, 0, 0, 1); }
private void Calculate_Click(object sender, System.EventArgs e) { Pach_GetModel_Command Model = new Pach_GetModel_Command(); Source[] Source; if (PachydermAc_PlugIn.Instance.Source(out Source) && !object.ReferenceEquals(FileLocation.SelectedPath, "")) { Rhino.RhinoApp.WriteLine("Model geometry not specified... Exiting calculation..."); } ParticleRays[] RTParticles = new ParticleRays[Source.Length]; Calculate.Enabled = false; PachydermAc_PlugIn plugin = PachydermAc_PlugIn.Instance; Scene Sc; if (PachydermAc_PlugIn.Instance.Geometry_Spec() == 0) { Sc = PachTools.Get_NURBS_Scene(0, (double)Air_Temp.Value, 0, 0, false); } else { Sc = PachTools.Get_Poly_Scene(0, (double)Air_Temp.Value, 0, 0, false); } for (int i = 0; i < Source.Length; i++) { if (Source != null) { List <Point3d> L = new List <Point3d>(); List <Rhino.Geometry.Point3d> L_RC = new List <Rhino.Geometry.Point3d>(); for (int j = 0; j < Source.Length; j++) { L.Add(Source[j].Origin()); L_RC.Add(new Rhino.Geometry.Point3d(Source[j].Origin().X, Source[j].Origin().Y, Source[j].Origin().Z)); } if (plugin.Geometry_Spec() == 0) { Sc.partition(L_RC, 15); RTParticles[i] = new ParticleRays(Source[i], Sc, (int)RT_Count.Value, CutOffLength()); } else if (plugin.Geometry_Spec() == 1) { Sc.partition(L, 15); RTParticles[i] = new ParticleRays(Source[i], Sc, (int)RT_Count.Value, CutOffLength()); } RTParticles[i].Begin(); } else { Rhino.RhinoApp.WriteLine("Model geometry not specified... Exiting calculation..."); } Pachyderm_Acoustic.Visualization.Phonon P; if (ParticleChoice.SelectedIndex == 0) { P = new Tetrahedron(); } else if (ParticleChoice.SelectedIndex == 1) { P = new Icosahedron(); } else { P = new Geodesic_sphere(); } RenderParticles(RTParticles, (double)(Frame_Rate.Value * Seconds.Value), P); Rhino.RhinoDoc.ActiveDoc.Views.Redraw(); } Calculate.Enabled = true; }
private void Calculate_Click(object sender, System.EventArgs e) { Pach_GetModel_Command Model = new Pach_GetModel_Command(); Source[] Source; if (PachydermAc_PlugIn.Instance.Source(out Source) && !object.ReferenceEquals(FileLocation.SelectedPath, "")) Rhino.RhinoApp.WriteLine("Model geometry not specified... Exiting calculation..."); ParticleRays[] RTParticles = new ParticleRays[Source.Length]; Calculate.Enabled = false; PachydermAc_PlugIn plugin = PachydermAc_PlugIn.Instance; Scene Sc; if (PachydermAc_PlugIn.Instance.Geometry_Spec() == 0) Sc = PachTools.Get_NURBS_Scene(0, (double)Air_Temp.Value, 0, 0, false); else Sc = PachTools.Get_Poly_Scene(0, (double)Air_Temp.Value, 0, 0, false); for (int i = 0; i < Source.Length; i++) { if (Source != null) { List<Point3d> L = new List<Point3d>(); List<Rhino.Geometry.Point3d> L_RC = new List<Rhino.Geometry.Point3d>(); for (int j = 0; j < Source.Length; j++) { L.Add(Source[j].Origin()); L_RC.Add(new Rhino.Geometry.Point3d(Source[j].Origin().X, Source[j].Origin().Y, Source[j].Origin().Z)); } if (plugin.Geometry_Spec() == 0) { Sc.partition(L_RC, 15); RTParticles[i] = new ParticleRays(Source[i], Sc, (int)RT_Count.Value, CutOffLength()); } else if (plugin.Geometry_Spec() == 1) { Sc.partition(L, 15); RTParticles[i] = new ParticleRays(Source[i], Sc, (int)RT_Count.Value, CutOffLength()); } RTParticles[i].Begin(); } else { Rhino.RhinoApp.WriteLine("Model geometry not specified... Exiting calculation..."); } Pachyderm_Acoustic.Visualization.Phonon P; if (ParticleChoice.SelectedIndex == 0) { P = new Tetrahedron(); } else if (ParticleChoice.SelectedIndex == 1) { P = new Icosahedron(); } else { P = new Geodesic_sphere(); } RenderParticles(RTParticles, (double)(Frame_Rate.Value * Seconds.Value), P); Rhino.RhinoDoc.ActiveDoc.Views.Redraw(); } Calculate.Enabled = true; }
public async void RenderSolids() { double alpha = 0; try { while (renderFlag) { BasePlatonicSolid solid = null; switch ((string)solidComboBox.SelectedItem) { case "Tetrahedron": solid = new Tetrahedron(0, 0, 0, 100); break; case "Hexahedron": solid = new Hexahedron(0, 0, 0, 100); break; case "Octahedron": solid = new Octahedron(0, 0, 0, 100); break; case "Icosahedron": solid = new Icosahedron(0, 0, 0, 100); break; case "Dodecahedron": solid = new Dodecahedron(0, 0, 0, 100); break; default: MessageBox.Show("something wrong"); return; } switch ((string)AxisRotationComboBox.SelectedItem) { case "OZ": solid.RotateByZ(alpha); break; case "OY": solid.RotateByY(alpha); break; case "OX": solid.RotateByX(alpha); break; case "OXY": solid.RotateByX(alpha); solid.RotateByY(alpha); break; case "OZY": solid.RotateByY(alpha); solid.RotateByZ(alpha); break; case "OZX": solid.RotateByX(alpha); solid.RotateByZ(alpha); break; case "OXYZ": solid.RotateByY(alpha); solid.RotateByX(alpha); solid.RotateByZ(alpha); break; case "None": break; default: MessageBox.Show("something wrong"); return; } if (!checkBox1.Checked) { solid.Scale(double.Parse(scaleBoxFx.Text), double.Parse(scaleBoxFy.Text), double.Parse(scaleBoxFz.Text)); } solid.Shift(int.Parse(shiftXBox.Text), int.Parse(shiftYBox.Text), int.Parse(shiftZBox.Text)); graphics.Clear(pictureBox1.BackColor); solid.DrawSolid(graphics, double.Parse(coeffBox.Text), double.Parse(angelBox.Text)); alpha += Math.PI / 60; await Task.Delay(100); } } catch (Exception e) { MessageBox.Show("There were exception: " + e.Message); } }
void Start() { Icosahedron icosa = new Icosahedron(radius, norm, depth); icosa.InstantiateSurfaces(materials, inverse); }
protected override Result RunCommand(RhinoDoc doc, RunMode mode) { int transFactor = 3; int index = 0; Mesh seed = new Mesh(); var rc = RhinoGet.GetInteger("Select seed value between 1 and 5", false, ref index, 1, 5); if (rc != Result.Success) { return(rc); } switch (index) { case 1: seed = new Octahedron(); break; case 2: seed = new Icosahedron(); break; case 3: seed = new Tetrahedron(); break; case 4: seed = new Cube(); break; case 5: RhinoApp.WriteLine($"{index} not implemented!"); return(Result.Failure); } doc.Objects.AddMesh(seed); var dual = seed.Dual(); dual.Translate(new Vector3d(transFactor, 0, 0)); doc.Objects.AddMesh(dual); var kis = seed.Kis(); kis.Translate(new Vector3d(transFactor * 2, 0, 0)); doc.Objects.AddMesh(kis); var ambo = seed.Ambo(); ambo.Translate(new Vector3d(transFactor * 3, 0, 0)); doc.Objects.AddMesh(ambo); var zip = seed.Zip(); zip.Translate(new Vector3d(transFactor * 0, transFactor * 1, 0)); doc.Objects.AddMesh(zip); var join = seed.Join(); join.Translate(new Vector3d(transFactor * 1, transFactor * 1, 0)); doc.Objects.AddMesh(join); var needle = seed.Needle(); needle.Translate(new Vector3d(transFactor * 2, transFactor * 1, 0)); doc.Objects.AddMesh(needle); var truncate = seed.Truncate(); truncate.Translate(new Vector3d(transFactor * 3, transFactor * 1, 0)); doc.Objects.AddMesh(truncate); var ortho = seed.Ortho(); ortho.Translate(new Vector3d(transFactor * 0, transFactor * 2, 0)); doc.Objects.AddMesh(ortho); var expand = seed.Expand(); expand.Translate(new Vector3d(transFactor * 1, transFactor * 2, 0)); doc.Objects.AddMesh(expand); var meta = seed.Meta(); meta.Translate(new Vector3d(transFactor * 2, transFactor * 2, 0)); doc.Objects.AddMesh(meta); var bevel = seed.Bevel(); bevel.Translate(new Vector3d(transFactor * 3, transFactor * 2, 0)); doc.Objects.AddMesh(bevel); doc.Views.Redraw(); return(Result.Success); }