# Rhino.Geometry.Morph

What is this used for?
Some real life examples?

1 Like

Here I try to make the simplest possible code in C# an Python:

C#

``````Rhino.Geometry.Morphs.TwistSpaceMorph twistObject = new Rhino.Geometry.Morphs.TwistSpaceMorph();
twistObject.TwistAxis = axis;
twistObject.Morph(geo);
A = geo;
``````

Python

``````import Rhino.Geometry as rg
twistObject = rg.Morphs.TwistSpaceMorph()
twistObject.TwistAxis = axis
twistObject.Morph(geo)
a = geo
``````

IVELIN PEYCHEV.gh (13.5 KB)

1 Like

They can all be found in the transform>morph tab in Grasshopper for R6 (for R5 you can get them from jackalope)

In real world they are used quite often to â€śwrapâ€ť in things you might design flat and then wrap back to a 3d geometry. At least that is what I am using them for. Specifically flow and sporph.

Others there are just deformers like twist or taper.

1 Like

This is interesting.

In case of Sporph is there difference in performance and stability if you compare it with Sweep 1 Rail and Sweep 2 Rails extrusions?

Iâ€™m not sure if there is any similarities between Sporph and sweep. If Iâ€™m not mistaken the closest Rhino command to `Sporph` is FlowAlongSrf.

1 Like

Again I try to keep it as simple as possible:
C#:

``````Rhino.Geometry.Morphs.SporphSpaceMorph morphObject = new Rhino.Geometry.Morphs.SporphSpaceMorph(source, target, new Point2d(p0), new Point2d(p1));
morphObject.Morph(geo);
A = geo;
``````

Python:

``````import Rhino.Geometry as rg
morphObject = rg.Morphs.SporphSpaceMorph(source, target, rg.Point2d(p0), rg.Point2d(p1));
morphObject.Morph(geo)
a = geo
``````

IVELIN.gh (21.7 KB)

1 Like

thatâ€™s cool

1 Like

Sporph is also a Rhino command. But maybe it just runs flow along surface.

I couldnâ€™t find `Sporph` neither in Rhino 6 nor Rhino 5 command list.
It seems itâ€™s a hidden command that exactly run `FlowAlongSrf`.

Indeed it does.