Surface, Tangent to Cylinder

Here’s a little puzzle that I came across yesterday:

In the attached file, construct a surface with as few CP’s as possible that runs from the near-vertical line, to be continuously tangent to the part-cylinder. The top and bottom edges of the surface need to be straight, so that they follow the two horizontal lines.

I’ve yet to figure out an elegant solution to this. Any suggestions? Are there any scripts around (preferably for V5) that assist with creating surfaces tangent “to a surface”, as distinct from “to a surface edge”?

EDIT: Does the solution lie with Helix?

Surface tangent to cylinder.3dm (87.7 KB)

It isn’t a true helix. Whether it is a simple or complex transform of a helix is beyond my maths grade.

Interesting challenge. Thanks

Is this what you want?

Use Divide Curve By to split the near vertical line into 4 sections (i.e five points).
From each point draw a horizontal line tangential to the cylinder.
Draw a curve through the tangent points using _InterpCrvOnSrf .
Trim the cylinder with the new curve.
Create a surface using edge curves (top, near vertical, bottom and new curve).
Join the surfaces.

Curvature analysis looks clean.

Surface tangent to cylinder R5 (1).3dm (159.5 KB)

1 Like

In V5 it’s harder since you need an edge to match to but if you use ShortPath to create a curve from the lower tangent point to the upper one, you can trim with that. Make a surface between the two lines (trimmed back to the tangent points) and then changeDegree to five vertically, 2 horizontally:


MatchSrf for Tangency with Preserve other end at Position.
Preserve isocurve direction checked.

Surface tangent to cylinder_Maybe.3dm (105.8 KB)



Thank you Jeremy and Pascal for taking a look at this. It’s quite a nice geometry puzzle and I think there are several ways this could be achieved. @jeremy5 Jeremy - in V5, how did you go about drawing the lines that are tangent to the cylinder surface? I like the ShortPath route Pascal! Neat idea.

I went back and had a look at using Helix. After all, my thinking was along the lines of Jeremy’s approach, in that a horizontal line drawn from any point on the upright curve needs to land tangent to an isocurve extracted from the cylinder at the same Z height. Here’s the result, which is quite clean. I used exactly the same Match settings as Pascal to tidy up the surface mate.

Curious to see how far I could push this before it fell apart, I made a couple more with greater divergence between the top and bottom lines. The Helix is defined by number of turns, as the fraction of 360 degrees (that is, the same as the divergence angle between the two horizontal lines). Within the confines of a G1 match, the results aren’t bad and Zebra shows that the surfaces remain quite true to G1. Not bad for a solution that can be represented in simple geometric terms on a dimensioned 2D drawing, rather than having to solely rely on a 3D file. The twisted plane retains a simple point structure too.Surface tangent to cylinder - 2.3dm (144.0 KB)

I’ll give the other two methods a try and see how they compare.

I created curves on the cylinder using Extract Isocurve and setting the position by snapping to my divisor points on the near vertical line. The I used Tangent from Curve, starting with a point on a curved line near the likely tangent and snapping the end to the related divisor point.

Re the helix, I stuck a couple of extra layers in the model, one plotting the tangent points from a much more divergent pair of top and bottom lines and the other showing a helix through the same top and bottom points, so you can see how they diverge in between. The helix may be an adequate approximation in cases like your example where there is only a small angle, but won’t always do.