Tangent surface between two tubes

yes - see my post above. the ratio is constant in 2d - and as the angles are not vary dramatically it nearly stays the same along the given tubes / pipes…

this image in the paragraph “inner tangent” shows the triangles - marked them red / green - with same angle - resulting in constant ratio.
Innere_tangente.svg

This figure is only correct for circular tubes with centerlines which are a constant distance from each other. The diameter of the tubes can vary.


fillet_cylinder_tilted_01_demo.3dm (181.9 KB)

i needed a surface like this in one project - i tuned it a bit for demonstration (increased angles / sizes)
It is more a side aspect of a fillet-Problem:
a cylinder is rotated and intersects a surfaces.
the fillet between Cylinder and planar Surface (green) should be ellipsoid - should give ellipsoid like reflections.
and the fillet at top of cylinder should be rotational. (blue/violett)
to bring both together this kind of “tangent-tangent-ruled” surface is needed…(red)

i claim (:wink:) that the ideal surface for this kind of transition is developable and unique.

EDIT:
well maybe if there is only one solution, it is developable ?

quite fast i found an simple example based on a exaggeration ot the initial post, that shows there are more solutions for a ruled surface with torsion (that is not developable) and not unique…
(cylinder and pipe are identical in both versions)

kind regars -tom

Hi Tom,

Thanks for your efforts with this. I am struggling to translate this to the original problem however. It looks like you have manually defined one of the edges?

@pascal I had one idea…could a script build all possible tangent-to-tangent bridges (solutions) then allow the user to discard the unwanted bridges? With the double pipe/cylinder/tube problem there is always 4 possible bridges matching to tangent using single-span plane. I think I’m right in thinking the problem is the same if you want an outer tangent bridge, which is possibly a more common problem (like stretching a piece of fabric over a frame)? You addressed a similar problem in a previous post (Surface tangent to a cylinder) but the solution uses a degree 3 bridge rather than degree 1 as could be achieved with the manual coplanar sections method.

Thanks again all.
Kelvin

Hi Kelvin - what I am poking at is using the users’ pick locations on the tubes to determine which ‘bridge’ to build. (like FilletSrf)

-Pascal

In general the tangent surface will not be developable. Example with exact tangent surface which is not developable.
Tangent Not Developable.3dm (1.5 MB)

In the enclosed file is a method demonstrates similar to what I think Tom is suggesting
tangent_between_tubesx.3dm (841.3 KB)

The green surface is a trimmed surface that is tangent to the two tubes.
I created the green surface by lofting just five of the many tangent curves that you created and then converting it to degree one (because for some reason your tangent lines are degree 3 curves and not lines) and then extended the surface a little all around.

At this point you can find where the surface is tangent to the tubes by pulling the centerlines of the tubes to the surface and then trimming the surface using the pulled curves. You can check the accuracy of the result by using crvdeviation command on the center curves and pulled curves. As it turns out the accuracy is well within in your file tolerance.

Another way to look at this based on Tom’s technique uses the filletsrf command. In the file posted above I first created a surface by lofting the two centerlines of the tubes (blue surface). I then extended the surface a little and offset the surface .15M one direction and .215M the other direction (radii of your tubes) . In the file the offset surfaces are brown surfaces. Then used FilletSrf to create the two cyan surfaces. The edges of the cyan surfaces are the same as the pulled curves described in the previous paragraph. I created the fillets with RecordHistory enabled so that if the fillets did not match up well with the original tubes I could refine the green surface adding knots and point editing in the places where the the fillets needed to be brought closer to the tubes but that was not necessary because the fillets match your tubes well within file tolerance.

yes - i agree on this (after drawing the second example)

looks like my old / first example is a special case. surface normals at both ends of each rule(r) of the red surface (should) point in the same direction.

@jim Thanks for this work through. I tried it and for sure this method gets the job done. Matching the bridge to the cylinders was something I couldn’t figure out (that’s why those tangent curves were degree 3) and FilletSrf achieves this nicely although it isn’t absolutely perfect as you point out. Thanks.

Ultimately, this still relies on taking sections to build the approximate tangent surface, there is no getting away from that as far as I can see….Presumably, the more sections you use the more accurate and smooth the final result will be and the closer the FilletSrf’s will match the original tubes.

@pascal Interested to see you what you come up with!

Cheers
Kelvin

I like the fillet solution much better than anywhere I was headed.

-Pascal

Yes, that was the assumption that I started with. Keep in mind that, when working with NURBS, many things are approximations that can be made more and more accurate by refining the process. For instance there is not an exact method for creating the one tube that is not a exact cylinder. When an such approximations are made, how exact a surface you can create depends on the file tolerance you choose.

I was surprised to find that the surface I created from 5 lofted lines turned out to be so accurate (actually more accurate than the surface you created using many more lines). I think the reason is that in this case the centerlines of the two tubes exist on two parallel planes that are exactly .366 meters apart. As a result of that the tangent surface you were looking for is also a planar surface (or at least very close to planar). Thus it did not take many sections to come up with an accurate approximation of the desired surface.

Hi @davidcockey , can you please explain me how to get it?

in this example you can find two surfaces, right?

For that example I started with the tangent surface, then generated the two tubes based on that surface.

Ok, so there is no way to get that surface with rhino commands I suppose

Correct. If there was this thread would have been shorter.