Reshape Ellipse only vertically (keep same footprint)

Hello everyone,

I would like to reshape an ellipse vertically, but by keeping the same footprint (in topview the shape should stay the same). The goal is to make random points on this ellips which can pull it vertically, like control points.
In Rhino this is perfectly possible, shown in the image below.

How can I achieve this with Grasshopper?
I’ve made a start with the ellipse in GH with some random points on there, from which one is now moved up vertically, how can I make the ellipse shape towards that point?
reshape ellipse.gh (13.6 KB)

Please describe what are you trying to do.

This can be approached in many different ways…

You can extrude your ellipse into a surface, and then “pull” any other curve to that surface.
Or you can rebuild your ellipse to a higher point control count and degree, and then move your points one by one or with attractors.
Or you can extrude the ellipse and intersect the surface with another surface…

Moving the control points in rhino should leave you with a curve that have kinks… and mos of the time avoiding that is a priority.

Check “Point deform” component.

1 Like

I don’t know what the points and lines are for? But it seems to me the easy way is to project the ellipse onto an inclined plane - no matter how you create the inclined plane.


reshape ellipse_2024Mar19a.gh (9.5 KB)

P.S. Here is a different way to create the inclined plane by dividing the ellipse to get three points that are raised or lowered to define a PlFit (Plane Fit).


reshape ellipse_2024Mar19b.gh (9.9 KB)

1 Like

Hi Riccardo,

Thank you for your feedback!
A bit more context, I am making a cover for a busstop in the shape of an ellipse, which will have support columns on random points on this ellipse, the points still must be able to be moved. On these column places the ellips should move down a bit (to implement a gutter for the waterdrainage), but it should prevent this ellipse from becoming another shape.

I think Point Deform might be the component I am looking for, although it reacts differently than how I would expect.
I’ve made a vertical movement with the points on the ellips, gradually, with Graph Mapper (just to test vertical movement). Only Point Deform doesn’t seem to follow these points, and wants to make a boat:). I would like the ellipse to move through these points, and keep the ellips footprint from above unchanged.

Your suggestion of rebuilding the curve with higher control count sort of does the job, but doesn’t keep the shape in a perfect ellipse. I will check your ‘‘pull curve to extruded ellipse’’ suggestion as well.

I’m open to other suggestions.
reshape ellipse.gh (23.5 KB)

Kind regards

Hello Joseph,

Thank you for thinking along. The points and lines where just to create random points on the ellips. I’ve made a sketch of what I would like to achieve:

On these random points the ellips should move downwards with a certain force. But from above it should still be a perfect ellipse. Do you know how I would be able to achieve this?

Sounds like you want to project the ellipse onto a wavy surface. The trouble with art projects is that the correct answer exists only in the artist’s head.

I added a Seam adjustment to previous code that affects all points on the ellipse. And a Value List to switch between the flat and inclined ellipse as the basis for a “wavy surface” using SrfGrid.



reshape ellipse_2024Mar20a.gh (26.5 KB)

There are many ways here to affect the shape :bangbang:

1 Like

@Joseph_Oster beat me to the punch

if, for whatever reason, you want to deform only the curve, rebuild it as a degree 3/5/7 with n number of points and apply the same technique as JO showed, but this time using the control points of the rebuild curve

deform_elipse.gh (12.9 KB)
a simpler version

1 Like

There are so many parameters that affect this wavy surface, and I’ve just added another…

The basic principle of a “wavy surface” using SrfGrid (Surface From Points) is to remap the distance from each surface point to the nearest attractor point (or curve) as a vertical displacement (or surface normal direction). Besides Graph Mapper, which smoothes these transitions, one of the common tools used is a limit on the distance that attractors have any effect. So I added one (‘MaxD’ slider in yellow group), only to realize that it makes flat areas on this roof, which might be a bad idea?

I also divided the code more clearly into two roles: the purple group creates the optional inclined plane, the white group creates the wavy surface. Three blue points are irrelevant when using the ‘Flat’ option. White points are the attractors for the wavy surface, the lowest points on this roof, with their own ‘Seam’ and ‘Count’ sliders.

To see the wavy surface better, I added Contour curves that show how water will run off.

Other controls are Graph Mapper, the ‘MaxH’ slider below it, the ‘U Count’ and ‘V Count’ sliders.



reshape ellipse_2024Mar20b.gh (35.0 KB)

P.S. This is subtle and started out to be purely cosmetic - to hide the blue points when using the ‘Flat’ option. But it quickly became apparent that ‘Flat’ and ‘Inclined’ modes were intertwined and needed to be untangled. So that’s what this version ‘c’ does. Seam slider for the blue points no longer affects the white attractor points, which now appear on the inclined ellipse when that mode is used.

reshape ellipse_2024Mar20c.gh (37.6 KB)

2 Likes

Based on the {apparent} play-allowing qualities of your quest, maybe Spatial Deform (custom) can yield another interesting approach via some fallout function explorations:
reshape ellipse.gh (41.8 KB)

*Note:
To start, I divided the ellipse with the divide curve component, which I left with the default 10 points - I didn’t play with higher curve division, but you can throw a new slider there. Alternatively, instead of dividing the ellipse you could simply evaluate it or place points along it where you deem it necessary and use those for your syntax.

Cheers!

*New edit:

I realized I left the Nurbs Curve component and its control points there as part of the thing - however they’re not needed (I had them there thinking of Riccardo’s suggestion regarding PointDeform.

Creating the points (via division or however), and using those points, is all that’s necessary for the syntax.


ellipse

1 Like

Thank you all for thinking along! You showed me even more possibilities than I could imagine.
Right now I found the solution with the ‘‘pull’’ command towards an extruded ellipse, which does exactly what I needed.


Sorry for the late reply.

I might consider your approaches as well in this further development, thanks for helping me out.

1 Like

You didn’t post code for your “solution” so I have no idea what you did. But if it shapes only the edge (ellipse) and ignores the roof surface, I don’t see it as a solution?

P.S. If the attractor points must be random, Divide Curve (white group) can be replaced with PopGeo and ‘MaxD’ slider reduced, though as noted five days ago, this causes flat areas on the roof. So to make sure it drains properly, I used the ‘Inclined’ option here:



reshape ellipse_2024Mar25a.gh (34.8 KB)