JunkTool1

JunkTool2

JunkTool3

JunkTool4

PDisk Distance

PDisk Angle Measure

PDisk Raise Perpendicular

PDisk Drop Perpendicular

PDisk Angle Bisector

PDisk Midpoint

PDisk Perpendicular Bisector

PDisk Point Reflection

PDisk Circle Center And Point

PDisk Circle Center And Radius

a = Ray(Center[Circle[(0, 0), (1, 0)]], A)
b = OrthogonalLine(A, a)
B, C = Intersect(Circle[(0, 0), (1, 0)], b)
c = Segment(Center[Circle[(0, 0), (1, 0)]], B)
d = OrthogonalLine(B, c)
A' = Intersect(a, d)
A' = JunkTool1(A)
d = CircumcircleArc(B, A, A')
E, F = Intersect(d, Circle[(0, 0), (1, 0)])
G = If(E ≟ E, E, F)
e = CircumcircleArc(B, A, G)
A' = JunkTool1(A)
d = CircumcircleArc(B, A, A')
E, F = Intersect(d, Circle[(0, 0), (1, 0)])
G = If(E ≟ E, E, F)
f, H = JunkTool2(A, B)
g = CircumcircleArc(G, A, H)
a = Ray(Center[Circle[(0, 0), (1, 0)]], A)
b = OrthogonalLine(A, a)
C, D = Intersect(Circle[(0, 0), (1, 0)], b)
c = Segment(Center[Circle[(0, 0), (1, 0)]], C)
d = OrthogonalLine(C, c)
E = Intersect(d, a)
e = Circle(E, A, B)
F = Center(e)
f = Segment(A, B)
G = Midpoint(f)
g = Ray(F, G)
H = Intersect(e, g)
h = CircumcircleArc(A, H, B)
a = Ray(Center[Circle[(0, 0), (1, 0)]], A)
b = OrthogonalLine(A, a)
C, D = Intersect(Circle[(0, 0), (1, 0)], b)
c = Segment(Center[Circle[(0, 0), (1, 0)]], C)
d = OrthogonalLine(C, c)
E = Intersect(d, a)
e = Circle(E, A, B)
F, G = Intersect(e, Circle[(0, 0), (1, 0)])
f: abs(log(Distance[A, F] / Distance[A, G] / (Distance[B, F] / Distance[B, G])))
H = Center(e)
I = Midpoint(A, B)
g = Ray(H, I)
J = Intersect(e, g)
Name[A] + (Name[B]) + "=" + f
c, D = JunkTool2(C, A)
d, E = JunkTool2(C, B)
F = Center(c)
G = Center(d)
a = Segment(F, C)
b = Segment(G, C)
e = OrthogonalLine(C, a)
f = OrthogonalLine(C, b)
g = OrthogonalLine(A, e)
h = OrthogonalLine(B, f)
A' = Intersect(e, g)
B' = Intersect(f, h)
α = Angle(A', C, B')
β = Angle(Min[α, 360° - α])
"∡" + (Name[A]) + (Name[C]) + (Name[B]) + "=" + β
k = Circle(C, (0.5 * Distance[A, C]))
i = AngularBisector(A', C, B')
j = OrthogonalLine(A', i)
H = Intersect(i, j)
l = Ray(C, H)
I = Intersect(k, l)
c, C, D = JunkTool3(A, B)
E = Center(c)
a = Segment(E, B)
b = OrthogonalLine(B, a)
F = JunkTool1(B)
d = LineBisector(B, F)
G = Intersect(b, d)
e = Circle(G, B)
H, I = Intersect(e, Circle[(0, 0), (1, 0)])
f = CircumcircleArc(H, B, I)
A' = Mirror(A, Circle[(0, 0), (1, 0)])
c = Circle(A', A, B)
C' = Mirror(C, Circle[(0, 0), (1, 0)])
C'_1 = Mirror(C, c)
d = Circle(C'_1, C, C')
D, E = Intersect(d, Circle[(0, 0), (1, 0)])
F, G = Intersect(d, c)
g = Segment(Center[Circle[(0, 0), (1, 0)]], G)
G' = Intersect(Circle[(0, 0), (1, 0)], g)
H = If(G' ≟ G', F, G)
e = CircumcircleArc(D, C, E)
c, D = JunkTool2(B, A)
d, E = JunkTool2(B, C)
F = Center(c)
G = Center(d)
a = Segment(F, B)
b = Segment(G, B)
e = OrthogonalLine(B, a)
f = OrthogonalLine(B, b)
g = OrthogonalLine(A, e)
h = OrthogonalLine(C, f)
A' = Intersect(e, g)
C' = Intersect(f, h)
i = AngularBisector(A', B, C')
j = OrthogonalLine(B, i)
k = Ray(Center[Circle[(0, 0), (1, 0)]], B)
l = OrthogonalLine(B, k)
H, I = Intersect(Circle[(0, 0), (1, 0)], l)
m = Segment(Center[Circle[(0, 0), (1, 0)]], H)
n = OrthogonalLine(H, m)
B' = Intersect(n, k)
p = LineBisector(B', B)
J = Intersect(j, p)
q = Circle(J, B)
K, L = Intersect(q, Circle[(0, 0), (1, 0)])
r = CircumcircleArc(L, B, K)
c = PDiskRaisePerpendicular(A, B)
d = PDiskRaisePerpendicular(B, A)
A' = Mirror(A, c)
B' = Mirror(B, d)
a = Ray(Center[Circle[(0, 0), (1, 0)]], A)
b = LineBisector(B', B)
C_1 = Intersect(b, a)
e = Ray(Center[Circle[(0, 0), (1, 0)]], B)
f = LineBisector(A, A')
C_2 = Intersect(f, e)
g = Circle(C_1, B')
h = Circle(C_2, A)
C, D = Intersect(g, h)
k, E, F = JunkTool3(C, D)
p, G, H = JunkTool3(A, B)
K = Center(k)
L = Center(p)
q = Circle(K, D)
r = Circle(L, B)
I, J = Intersect(q, r)
M = If(abs(I)  <  1, I, J)
c = PDiskRaisePerpendicular(A, B)
d = PDiskRaisePerpendicular(B, A)
A' = Mirror(A, c)
B' = Mirror(B, d)
a = Ray(Center[Circle[(0, 0), (1, 0)]], A)
b = LineBisector(B', B)
C_1 = Intersect(b, a)
e = Ray(Center[Circle[(0, 0), (1, 0)]], B)
f = LineBisector(A, A')
C_2 = Intersect(f, e)
g = Circle(C_1, B')
h = Circle(C_2, A)
C, D = Intersect(g, h)
k, E, F = JunkTool3(C, D)
p, G, H = JunkTool3(A, B)
K = Center(k)
L = Center(p)
q = Circle(K, D)
r = Circle(L, B)
I, J = Intersect(q, r)
M = If(abs(I)  <  1, I, J)
d = PDiskRaisePerpendicular(A, M)
A' = Mirror(A, d)
P' = PDiskPointReflection(P, O)
a = LineBisector(P', P)
b = Ray(Center[Circle[(0, 0), (1, 0)]], O)
A = Intersect(b, a)
c = Circle(A, P)
l, C = PDiskPerpendicularBisector(O, A)
D = Center(l)
a = Line(D, B)
c = Circle(D, C)
E, F = Intersect(c, a)
G = If(abs(F)  <  1, F, E)
d, M = PDiskDropPerpendicular(G, C, B)
H = PDiskPointReflection(B, M)
e = PDiskCircleCenterAndPoint(O, H)