hexagon logo

Circle tangent to 2 circles

Some code for 1 solution for a circle of a given size, tangent to 2 known circles.

this gives the circle tangent above both centerlines.

CREATE A CIRCLE OF A GIVEN DIAMETER TANGENT TO 2 CIRCLES

$$ NO, *****
$$ NO, *****  2 GIVEN CIRCLES (GENERIC FEATURES HERE FOR EXAMPLE)
$$ NO, *****
CIR1 =GENERIC/CIRCLE,DEPENDENT,CARTESIAN,OUT,$
              NOM/XYZ,<0,0,0>,$
              MEAS/XYZ,<0,0,0>,$
              NOM/IJK,<0,0,1>,$
              MEAS/IJK,<0,0,1>,$
              RADIUS/1,1
CIR2 =GENERIC/CIRCLE,DEPENDENT,CARTESIAN,OUT,$
              NOM/XYZ,<4,2,0>,$
              MEAS/XYZ,<4,2,0>,$
              NOM/IJK,<0,0,1>,$
              MEAS/IJK,<0,0,1>,$
              RADIUS/1.5,1.5
$$ NO, *****
$$ NO, *****  DISTANCE BETWEEN CIRCLES WHICH WILL BE 1 LEG OF OBLIQUE TRIANGLE
$$ NO, *****
DIM DIST1= 2D DISTANCE FROM CIRCLE CIR1 TO CIRCLE CIR2 (CENTER TO CENTER),NO_RADIUS units=MM,$
GRAPH=OFF TEXT=OFF MULT= 10.00 OUTPUT=NONE
AX MEAS
M 4.4721
$$ NO, *****
$$ NO, *****  CREATE A LINE BETWEEN CIRCLES WHICH WILL BE USED FOR ANGLE OFFSET LATER
$$ NO, *****
LIN1 =FEAT/LINE,CARTESIAN,UNBOUNDED,NO
            THEO/<0,0,0>,<0.8944272,0.4472136,0>
            ACTL/<0,0,0>,<0.8944272,0.4472136,0>
            CONSTR/LINE,BF,3D,CIR1,CIR2,,
            OUTLIER_REMOVAL/OFF,3
            FILTER/OFF,WAVELENGTH=0
$$ NO, *****
$$ NO, *****  DIMENSION THE LINE FOR ANGLE OFFSET LATER
$$ NO, *****
DIM LOC1= LOCATION OF LIN1 UNITS=MM ,$
GRAPH=OFF TRXT=OFF MULT=10.00 OUTPUT=NONE HALF ANGLE=NO
AX MEAS
PA 26.5651
END OF DIMENSION LOC1
$$ NO, *****
$$ NO, *****  SIDE_A
$$ NO, *****
ASSIGN/SIDE_A = DIST1.MEAS
$$ NO, *****
$$ NO, *****  SET CIR5.R WITH THE RADIUS OF YOUR SET CIRCLE
$$ NO, *****
ASSIGN/CIR5.R=1.75
$$ NO, *****
$$ NO, *****  SIDE_B
$$ NO, *****
ASSIGN/SIDE_B =CIR1.R+CIR5.R
$$ NO, *****
$$ NO, *****  SIDE_C
$$ NO, *****
ASSIGN/SIDE_C =CIR2.R+CIR5.R
$$ NO, *****
$$ NO, *****  CALCULATE ANGLE A
$$ NO, *****
ASSIGN/COS_A =((SIDE_B^2+SIDE_C^2)-SIDE_A^2)/(2*(SIDE_B)*(SIDE_C))
$$ NO, *****
ASSIGN/ANGLE_A= RAD2DEG(ACOS(COS_A))
$$ NO, *****
ASSIGN/SIN_A= SIN(RAD2DEG(ANGLE_A))
$$ NO, *****
$$ NO, *****  CALCULATE ANGLE C
$$ NO, *****
ASSIGN/SIN_C =((SIDE_C*(SIN_A))/SIDE_A
$$ NO, *****
ASSIGN/ANGLE_C =RAD2DEG(ASIN(SIN_C)))
$$ NO, *****
$$ NO, *****  CALCULATE ANGLE B
$$ NO, *****
ASSIGN/ANGLE_B =180-(ANGLE_A+ANGLE_C)
$$ NO, *****
$$ NO, *****  CALCULATE ANGLE OFFSET FROM LINE AND ANGLE C
$$ NO, *****
ASSIGN/V1=LOC1.PA.MEAS
$$ NO, *****
ASSIGN/V2=V1+ANGLE_C
$$ NO, *****
$$ NO, *****  CALCULATE X AND Y OFFSETS
$$ NO, *****
ASSIGN/SIN_V2=SIN(DEG2RAD(V2))
$$ NO, *****
ASSIGN/COS_V2=COS(DEG2RAD(V2))
$$ NO, *****
ASSIGN/V3=SIN(DEG2RAD(ANGLE_B))
$$ NO, *****
ASSIGN/X_OFFSET=(SIDE_B)*COS_V2
$$ NO, *****
ASSIGN/Y_OFFSET=(SIDE_B)*SIN_V2
$$ NO, *****
$$ NO, *****  CALCULATE X AND Y LOCATIONS FROM CIR_SET
$$ NO, *****
ASSIGN/X_LOC=CIR1.X+X_OFFSET
$$ NO, *****
ASSIGN/Y_LOC=CIR1.Y+Y_OFFSET
$$ NO, *****
$$ NO, *****  CREATE GENERIC FEATURE CIR_SET
$$ NO, *****
CIR_SET =GENERIC/CIRCLE,DEPENDENT,CARTESIAN,OUT,$
                        NOM/XYZ,<X_LOC,YY_LOC,0>,$
                        MEAS/XYZ<X_LOC,Y_LOC,0>,$
                        NOM/IJK,<0,0,1>,$
                        MEAS/IJK,<0,0,1>,$
                        RADIUS/CIR5.R,CIR5.R
                        RETROLINEARONLY/ON
$$ NO, *****
$$ NO, *****  DIMENSION CIR_SET
$$ NO, *****
DIM LOC2= LOCATION OR CIRCLE CIR_SET UNITS=MM ,$
GRAPH=OFF TEXT=OFF MULT=10.00 OUTPUT=NONE HALF ANGLE=NO
AX MEAS
X 0.8112
Y 2.6276
D 3.5000
END OF DIMENSION LOC2