public void MorphGraph() { List <Point3d> vs = new List <Point3d>(); //TODO pass corners list in input Mesh. Point3d a0 = spaceGraph.Vertices[0].Position; Point3d a1 = spaceGraph.Vertices[1].Position; Point3d a2 = spaceGraph.Vertices[3].Position; Point3d a3 = spaceGraph.Vertices[2].Position; Point3d b0 = inputMesh.Vertices[0].Position; Point3d b1 = inputMesh.Vertices[1].Position; Point3d b2 = inputMesh.Vertices[3].Position; Point3d b3 = inputMesh.Vertices[2].Position; Surface sA = (Surface)Rhino.Geometry.NurbsSurface.CreateFromCorners(a0, a1, a2, a3); Surface sB = (Surface)Rhino.Geometry.NurbsSurface.CreateFromCorners(b0, b1, b2, b3); Rhino.Geometry.Morphs.SporphSpaceMorph sporph = new Rhino.Geometry.Morphs.SporphSpaceMorph(sA, sB, new Point2d(0.5, 0.5), new Point2d(0.5, 0.5)); foreach (var v in spaceGraph.Vertices) { v.Position = sporph.MorphPoint(v.Position); } }
public static Rhino.Commands.Result Sporph(Rhino.RhinoDoc doc) { ObjectType filter = SpaceMorphObjectFilter(); Rhino.DocObjects.ObjRef objref; Rhino.Commands.Result rc = Rhino.Input.RhinoGet.GetOneObject("Select object to sporph", false, filter, out objref); if (rc != Rhino.Commands.Result.Success || objref == null) { return(rc); } Rhino.Input.Custom.GetObject go0 = new Rhino.Input.Custom.GetObject(); go0.SetCommandPrompt("Source surface"); go0.GeometryFilter = Rhino.DocObjects.ObjectType.Surface; go0.SubObjectSelect = false; go0.EnablePreSelect(false, true); go0.DeselectAllBeforePostSelect = false; go0.Get(); if (go0.CommandResult() != Rhino.Commands.Result.Success) { return(go0.CommandResult()); } Rhino.DocObjects.ObjRef srf0_ref = go0.Object(0); Rhino.Input.Custom.GetObject go1 = new Rhino.Input.Custom.GetObject(); go1.SetCommandPrompt("Source surface"); go1.GeometryFilter = Rhino.DocObjects.ObjectType.Surface; go1.SubObjectSelect = false; go1.EnablePreSelect(false, true); go1.DeselectAllBeforePostSelect = false; go1.Get(); if (go1.CommandResult() != Rhino.Commands.Result.Success) { return(go1.CommandResult()); } Rhino.DocObjects.ObjRef srf1_ref = go1.Object(0); Rhino.Geometry.Morphs.SporphSpaceMorph morph = new Rhino.Geometry.Morphs.SporphSpaceMorph(srf0_ref.Surface(), srf1_ref.Surface()); Rhino.Geometry.GeometryBase geom = objref.Geometry().Duplicate(); if (morph.Morph(geom)) { doc.Objects.Add(geom); doc.Views.Redraw(); } return(Rhino.Commands.Result.Success); }
public static Rhino.Commands.Result Sporph(Rhino.RhinoDoc doc) { ObjectType filter = SpaceMorphObjectFilter(); Rhino.DocObjects.ObjRef objref; Rhino.Commands.Result rc = Rhino.Input.RhinoGet.GetOneObject("Select object to sporph", false, filter, out objref); if (rc != Rhino.Commands.Result.Success || objref == null) return rc; Rhino.Input.Custom.GetObject go0 = new Rhino.Input.Custom.GetObject(); go0.SetCommandPrompt("Source surface"); go0.GeometryFilter = Rhino.DocObjects.ObjectType.Surface; go0.SubObjectSelect = false; go0.EnablePreSelect(false, true); go0.DeselectAllBeforePostSelect = false; go0.Get(); if (go0.CommandResult() != Rhino.Commands.Result.Success) return go0.CommandResult(); Rhino.DocObjects.ObjRef srf0_ref = go0.Object(0); Rhino.Input.Custom.GetObject go1 = new Rhino.Input.Custom.GetObject(); go1.SetCommandPrompt("Source surface"); go1.GeometryFilter = Rhino.DocObjects.ObjectType.Surface; go1.SubObjectSelect = false; go1.EnablePreSelect(false, true); go1.DeselectAllBeforePostSelect = false; go1.Get(); if (go1.CommandResult() != Rhino.Commands.Result.Success) return go1.CommandResult(); Rhino.DocObjects.ObjRef srf1_ref = go1.Object(0); Rhino.Geometry.Morphs.SporphSpaceMorph morph = new Rhino.Geometry.Morphs.SporphSpaceMorph(srf0_ref.Surface(), srf1_ref.Surface()); Rhino.Geometry.GeometryBase geom = objref.Geometry().Duplicate(); if (morph.Morph(geom)) { doc.Objects.Add(geom); doc.Views.Redraw(); } return Rhino.Commands.Result.Success; }