Tangent curve with varying blend

Hello! I’m making a tangent curve between points on two circular curves:

At the points were the tangent curve meets the circles i can controll the blend input to soften/add fillet to the tangent curve.

What I would like to do is to controll the blend of the tangent curve at the points at the inner and outer cirles sepparately, to have one blend value at inner circle points and one blend value at outer circle points. To achieve something like this:

Like the wavy surface on this Lyngby vase:

250915_Lukket tangent curve.gh (14.5 KB)

Any ideas? :sunny:

Instead of splitting up the circles into 50 segments and making one big curve through all the points, just make the smallest repeating unit: One half of one scallop. Get the tangents at the two end vertices, scale them appropriately then use Bezier Span or Nurbs Curve to make the S shape. Mirror it about the X axis and polar array 50 times, then Join Curves.

2 Likes

2 Likes

1 Like

Things like this I would normally first formulate on a rectangular strip, and use one of the morphing tools (here, Flow) to turn it into a circle. It’s computationally more heavy, but, I think, easier for a beginner to understand.

2 Likes

Real.
But I started from the existing points.

1 Like

Lukket tangent_2025Sep17aa.gh (21.2 KB)

2 Likes


Tangent curve with varying blend VR 1.gh (27.2 KB)

This doesn’t do that, but, rather, combines the two tangents together in a ratio :sweat_smile:

2 Likes

Thank you guys! Yes, I tested Tom’s idea and ended up with a setup close to Volker’s. Works perfectly!

I see my code (disabled) in your file - please don’t do that.

Lukket tangent_2025Sep18a.gh (25.2 KB)

Sorry Joe. I’ll avoid doing that in the future.

I’ll get over it Volk.

I did this one, it does not produce the “flat” looking area, not sure if that was the desired effect?

Very basic and works well.

Scalloped Plate Edge II.gh (25.3 KB)

Using ArrPolar to copy the curve fragment makes sense, I had wondered why no one else did it.

But your code (TanIn) breaks very easily when parameter values are changed. For example, reduce the ‘OD’ slider to 94 or less (94.1 still works).

The TanIn error is:

  1. Circles A and B intersect, no internal tangents are possible

Reducing the ‘OD Fillet Rad’ slider value fixes the problem but ideally, that wouldn’t happen.

There is just no logic to keep from doing illogical inputs. For example, the sum of the geometry does not allow to circles to have tangents. I would not call it “breaking”, just input error.

When I actually wrote software for a living, coded all sorts of checks to make sure folks could not do that, GH to me is sort of like programming without easily created safety nets.

I guess a person could write a “scribble” saying “If the circles disappear, adjust inputs until they reappear”:rofl:

Since I am pretty new at GH stuff, what IS the method for input error checking?

Here is another issue, as I see it. Not knowing how large anyone is going to make anything, setting reasonable ranges is not possible.

Better algorithm. My post two days ago is only one example.

P.S.

Yea, no. Change the ranges a tad in your algorithm and it goes bonkers:

But back to my question, how DOES one go about providing error checking? About the only way I have seen is thru some scripting, like VB or Phython.

Can do some pretty cool spirograph stuff with yours!

You can do some conditionals on inputs, (> < = regex etc) and then switch a Gate to a disconnected output if the input is out of bounds, but it gets tricky if you actually want to catch the error and display a message.

1 Like

I hear ya Tom, but like I mentioned in an earlier post, people using one of these GH definitions can and will set up their own ranges for what they are working on and suddenly all those boundaries have to be altered too. Messy, very, very messy. Unless of course, we decide these are not supposed to be commercial grade applications to be run by someone with virtually no idea of what they are doing. That is sort of my take on these. . . .

“bonkers”? I don’t see any code errors like in our code.

Yea, no.
:rofl:

1 Like