Line/Tanto,C,C
Common Tangent to Two Circles
Creates a line tangent to two circles simultaneously. Up to four tangent lines exist between two circles — external and internal. A direction selector specifies which tangent line to create.
What It Does
Between two non-overlapping circles, up to four common tangent lines exist:
- 2 external tangents — run alongside both circles without crossing between them
- 2 internal tangents — cross between the circles
The Line/Tanto,C,C operator computes all valid tangent lines analytically and creates the one specified by the direction selector.
Product Tier: The created line is a persistent product entity. It is tracked by the dependency system and can be used as input to subsequent operators.
Syntax
Line/XLarge|XSmall|YLarge|YSmall, Tanto, C1, Tanto, C2
| Parameter | Description | Required |
Selector | XLarge, XSmall, YLarge, or YSmall | ✓ Yes |
C1 | First circle reference | ✓ Yes |
C2 | Second circle reference | ✓ Yes |
Quick Input Panel
C: [first circle reference]
C2: [second circle reference]
Dir: ○ XL ○ XS ● YL ○ YS
Direction Selector
For two horizontally arranged circles (same Y centre):
| Selector | Result | Tangent Type |
YLarge | Upper external tangent | External |
YSmall | Lower external tangent | External |
XLarge | Right-crossing internal tangent | Internal |
XSmall | Left-crossing internal tangent | Internal |
Important: The selector axis depends on the arrangement of the circles. For vertically arranged circles, use XLarge/XSmall for external tangents and YLarge/YSmall for internal tangents. Always use the selector on the axis where the solutions differ.
Worked Examples
Example 1 — External Tangents (Equal Circles)
Setup:
C0 = Centre (0, 0), Radius 15
C1 = Centre (80, 0), Radius 15
Line/YLarge, Tanto, C0, Tanto, C1
→ L0: upper external tangent (Y = +15)
Tangent to C0 at (0, 15)
Tangent to C1 at (80, 15)
Line/YSmall, Tanto, C0, Tanto, C1
→ L1: lower external tangent (Y = -15)
Tangent to C0 at (0, -15)
Tangent to C1 at (80, -15)
Example 2 — Internal Tangents (Equal Circles)
Setup:
C0 = Centre (0, 0), Radius 15
C1 = Centre (80, 0), Radius 15
Line/XLarge, Tanto, C0, Tanto, C1
→ L2: right-crossing internal tangent
Crosses between circles at X=40
Line/XSmall, Tanto, C0, Tanto, C1
→ L3: left-crossing internal tangent
Crosses between circles at X=40
Example 3 — External Tangents (Different Radii)
Setup:
C0 = Centre (0, 0), Radius 20
C1 = Centre (100, 0), Radius 10
Line/YLarge, Tanto, C0, Tanto, C1
→ L0: upper external tangent
Tangent point on C0: computed analytically
Tangent point on C1: computed analytically
Line is not horizontal (different radii)
Analytic Rule
External tangents:
Offset both circles outward by R on the same side.
The intersection of the two offset circles' centres
gives the external centre of similitude.
Tangent lines pass through this point.
Internal tangents:
Offset circles outward on opposite sides.
The intersection gives the internal centre of similitude.
Tangent lines pass through this point.
Tangency condition:
dist(circle centre, tangent line) = circle radius exactly.
Result: All tangent points and line equations are
exact analytic values. No iteration.
FAQ
What if the circles overlap?
Overlapping circles have no internal tangents (the circles intersect). External tangents still exist if the circles are not concentric. XyzPilot returns an error for internal tangents when circles overlap.
What if one circle is inside the other?
If one circle is entirely inside the other, no common tangents exist. XyzPilot returns an error.
How do I create a tangent line from a point to a circle?
Use Line/P,Tanto,C — the tangent from point to circle operator.
How do I create a line tangent to one circle at a given angle?
Use Line/C,Atangl — the tangent to circle at angle operator.