O_1 = (1.4804533538, 0.2990071425)
C_1 = Circle(O_1, 1.2285346394)
tv = (2.6720456033, 0)
C_0 = Circle((1, 0), 1)
A, B = Intersect(C_0, C_1)
O_0 = Center(C_0)
l_2 = Line(O_0, B)
B'_2 = Point(l_2)
e_4 = Segment(O_1, B'_2)
B1 = Intersect(C_1, e_4)
e = Line(O_0, A)
E = Point(e)
A': E
A'C_0, d = Tangent(A', C_0)
q = Intersect(C_0, A'C_0)
h = OrthogonalLine(q, xAxis)
L, q' = Intersect(C_0, h)
ArcBq' = CircleArc(O_0, q', B)
qq' = Segment(q', q)
s = Intersect(xAxis, yAxis)
Arcsq = CircleArc(O_0, q, s)
t = Point(s, tv)
ArcB1t = CircleArc(O_1, B1, t)
ArcsB = CircleArc(O_0, s, B)
ArcsA = CircleArc(O_0, A, s)
a = Line(O_1, E)
H, A1 = Intersect(C_1, a)
AA1 = Segment(A1, A)
ArcA1t = CircleArc(O_1, t, A1)
BB1 = Segment(B1, B)
BB1_1 = 0
AB = Segment(A, B)
st = Distance(s, t)
pathsAPlusBestFromA: ArcsA + Min[Distance[A, B] + BB1 + ArcB1t, AA1 + ArcA1t]
tC_0C, j_4, i, j_5 = Tangent(ArcA1t, ArcsA)
b, A'C_1 = Tangent(A', C_1)
q2 = Intersect(C_1, A'C_1)
qA' = Segment(q, A')
q2A' = Segment(A', q2)
Arcq2t = CircleArc(O_1, t, q2)
pathsqqpBt: Arcsq + qq' + ArcBq' + BB1 + ArcB1t
pathsqApq2t: Arcsq + qA' + q2A' + Arcq2t
c = Circle(E, A, A1)
f = Segment(O_0, E)
g = Segment(O_1, E)
j, k = Tangent(C_1, C_0)
p = Intersect(C_0, j)
p2 = Intersect(C_1, j)
B': B'_2
pB' = Segment(B', p)
B'p1 = Segment(B', p2)
BB' = Segment(B', B)
p_1 = Line(s, t)
f_4 = Circle(B, B1, B'_2)
ArcpB = CircleArc(O_0, p, B)
ArcBp2 = CircleArc(O_1, B, p2)
diffArcsBMinusSegmentsB: pB' + B'p1 - ArcpB - ArcBp2
distAA' = Distance(A, A')
AngleqOs = Angle(q, O_0, s)
AngleAOs = Angle(A, O_0, s)
distBB' = Distance(B, B')
pathsBB1t: ArcsB + BB1 + ArcB1t
shortestPath = Min(pathsBB1t, Min[pathsqApq2t, pathsqqpBt])
BestRoutingPath = Min(pathsAPlusBestFromA, Min[pathsqApq2t, pathsqqpBt])
CompetitiveRatio: BestRoutingPath / shortestPath
RoutingRatio: BestRoutingPath / st
l = Segment(B'_2, O_1)
m = Segment(O_0, B'_2)