Both solutions work equally well. I like the idea of getting to the same result with different approaches. Your help is very much appreciated!
Yes it is. My pleasure, this was fun.
I was away from the computer (where creative ideas often happen) when it occurred to me that a NURBS curve can be drawn between end points through a midpoint and a pair of points on either side of it. The curves used earlier are not needed. Height of the three âmiddle pointsâ is one of two parameters that determine shape. The other is distance from midpoint to the points on either side.
First draft is more complex than I would like so Iâll sleep on it before posting. Here is a comparison:
Version âSep7dâ: (as posted five hours ago)
Version âSep7eâ: (using NURBS curves)
Deep in the weeds on this NURBS curve approach, I noticed a detail that also affects the currently accepted solution, version âSep7d â. These âgearsâ (ridges?) are not square due to different lengths of adjacent curves. And their centerlines are dipped slightly due to lofting. Thatâs actually two separate details.
I can more easily fix the centerline dip in the NURBS version but then noticed that only the peaks are better. The high point at the center of the valleys is worse. I could probably fix that too but this is getting more than a little complicated!
In theory, I can see these advantages to the NURBS curve approach:
-
Offsets based on NURBS curves can have âflat spotsâ at their peaks.
-
They are not based on a curved surface, all curvature is parameterized.
-
Offset can easily be âinwardâ (as shown) or âoutwardâ.
-
Instead of moving the three middle points, I could move the end points in the opposite direction. This would allow two basis curves (rails in version âSep7d â) to define the inside of the offsets instead of the outside, which would be very nice if this were jewelry, for example, and the inner ridges are supposed to form a circle of fixed radius.
But wow - yesterdayâs work only scratched the surface of possibilities.
Hi Joseph,
I notices that as well and ended up using a combination of your and Reneâs solution. Once you scratch the surface of some of these even simple looking concepts you realize you opened a can of worms. As far as I am concerned, the results are good and as you have seen in the screen shoot from yesterday I already put the solution to good use.
Thank you!
For sure! Here is what Iâve got. I tried to match yesterdayâs results to some extent by manipulating the Graph Mapper and target domain sliders in the âmagnify distanceâ group (purple) and the âOffset_Vâ (Valleys) and âOffset_Pâ (Peaks) sliders in the blue group. Itâs trickyâŚ
I had planned to simplify this code to reduce the redundancy in the âcull threesâ group (gray) but didnât get that far. I might get back to it as Iâd still like to try moving the endpoints and blue points outward instead of moving the blue points (valleys) and yellow points (peaks) inward.
Curve_GM_2023Sep8a.gh (41.6 KB)
Moving the endpoints like this is a creative way to build the surface. I would not have approached it like that at all. - I LIKE IT A LOT
The loft is very clean, much more than the other way which has many âstress linesâ visible. Another benefit of NURBS curves, I guess.
By the way, I am familiar with how to use NURBS curves like this from double-ended boat design, where you want tangents between bow and stern.
P.S. I was referring to tangents visible in top view but here is an old video that demonstrates a way to get a âfairâ NURBS curve and resulting hull cross-section by moving control points along intersecting tangents. The code generates a curve for half the shape using 4 control points, then is mirrored by a different cluster (X-section) to make the other half.
Itâs too easy to forget all the details that make a clean loftâŚ
GH code is here: Deadrise Hull Shape Cross-section in Rhino Grasshopper
Oops, sorry, that cluster is password-protected⌠Here is a version that you can inspect and edit without a password: deadrise_2021Oct04a.gh (33.0 KB)
I donât remember how this version changed from 2015 when I wrote it. Code might be embarrassing now but who cares?
That is great⌠Thank you for your help and sharing of knowledge!
I took a closer look at the curves you posted two days ago, derived from the curved surface. Now I know why the âmagnify distance â group had a hard time matching the results from using them
Curve_RE_2023Sep9a.gh (43.7 KB)
The six curves used as sections for Swp2 are not evenly spaced, not quite perfect arcs and of differing radii. Curious about how you created those six curves?
Using their endpoints and midpoints, I created 3 point arcs for comparison. The radius for each one is listed in the text panel titled âArc Radiiâ - four different values (two used twice). In end view, you can see the effects on the V isocurves:
When I replace your six section curves with my arcs on the Swp2 âSâ input, they look like this:
Front view is also interesting. The blue circles are created by projecting a circle in the XZ plane to both tilted planes. To me, this confirms my guess that this is a ring (jewelry, millimeter units) and the idea that it would be better to start with these blue curves as rails, defining the peaks, and move the endpoints and âvalley pointsâ outward. That would ensure the peaks form a perfect circle with a defined radius.
These ârailsâ arenât used for Swp2 in the NURBS version because that surface is gone.
This version is fully parametric, no guide curves. The white group (ârotate XZ planes and move apartâ) has two sliders: âplane_sepâ (4 mm) to set the distance between their centers and âplane_angleâ (5.5 degrees) to rotate both planes. The cyan group (âproject circle to planesâ) has one âriing diameterâ slider (19 mm) to create a circle in the XZ plane that is projected onto the two angled planes.
Curve_GM_2023Sep10a.gh (34.7 KB)
Front View:
Right View:
The peaks (yellow curves) and valleys (blue curves) of the corrugated surface never infringe on the projected circles. Unlike before, the valleys and endpoints are moved away from the circle centers.
There are many parameters for tweaking details. The disabled components below the red group (which isnât slow at all anymore!) are a quickie way to mirror the curves, loft another surface and join them together for a âClosed Brepâ. It would be better to avoid a seam by adding a pair of points on each side, above and below, like I did to match tangents on the âgearsâ.
Hi Joseph,
Sorry for the delayed response⌠If I knew what I am doing - this is the way I would have put the definition together. Works really well.
I started this design idea without grasshopper in mind and played around with different curves. I guess I must have copied some curves from the early beginnings, which resulted in the uneven surface when used as reference curves.
You really went out of your way to give me the best possible solution and that is AMAZING!
Thank you,
Oliver
Well, if you look very closely (at Right view), you will see it has flaws.
Valley points and end points for the NURBS curves are not on the tilted planes. I took a big gulp and modified the code extensively to fix those problems (successfully!) but mirroring the curves to create an outer matching surface still needs work, as the âClosed Brepâ has been lost.
I keep looking at it but have avoided the necessary changes, hoping for some insight to simplify it.
OK, I just added the black group at the bottom to do some magic to get the well-formed âClosed Brepâ.
(Had to hold my nose and use copy/paste more than I would have liked⌠)
Curve_GM_2023Sep13a.gh (49.8 KB)
There is a âGoalâ switch in the black group that optionally gives you the âInnerâ surface only.
As usual, there is no single best way to do thisâŚ