Constructing a Klein Line

Given: Three points A, B, and C interior to the Klein Disk.
Measure: the Klein angle measure of ∡ACB.

(Show/Hide) 1. Construct triangle ΔABC. 
(Show/Hide) 2. Let a, b, and c be the Klein lengths of the respective 
                       sides opposite angles ∡A, ∡B, and ∡C.
(Show/Hide) 3. Use the hyperbolic law of cosines to find (∡C)°:



(∡C)° is the Klein angle measure of ∡ACB.

Use the checkboxes to view the steps in the construction

Klein Angle Measurement

$(\angle C)^\circ=\arccos\left(\frac{\cosh{c}-\cosh{a}\cosh{b}}{-\sinh{a}\sinh{b}}\right)$

γ = Circle((0, 0), (1, 0))
B = (0.04190637679691363, -0.7105382278623261)
A = (0.27348810960562925, -0.06506573854441697)
C = (-0.3276389415148666, -0.26215657497736633)
b_1 = Segment(A, C)
a_1 = Segment(C, B)
c_1 = Segment(B, A)
text4, a_2 = KleinDistance(B, C)
text5, b_2 = KleinDistance(A, C)
text6, c_2 = KleinDistance(A, B)
text7: "a=" + (Text[a_2])
text8: "b=" + (Text[b_2])
text9: "c=" + (Text[c_2])
d: (acos(((cosh(c_2) - (cosh(a_2) * cosh(b_2))) / ((-sinh(a_2))) * sinh(b_2))) * 180 / π)
text11, α = KleinAngleMeasure(A, C, B)
e = false
text12: "(∡C)°=" + (Text[α])
g = false
a = Segment(B, C)
b = Segment(A, C)
c = Segment(A, B)
f = false

Tool: Klein Ray (command KleinRay)
KleinRay[ <Point>, <Point> ]
Input: A, B
Output: C, b

a = Ray(A, B)
C, D = Intersect(Circle[(0, 0), (1, 0)], a)
b = Segment(A, C)

Tool: Klein Line (command KleinLine)
KleinLine[ <Point>, <Point> ]
Input: A, B
Output: d, D, C

C, a = KleinRay(A, B)
D, b = KleinRay(B, A)
d = Segment(D, C)

Tool: Klein Segment (command KleinSegment)
KleinSegment[ <Point>, <Point> ]
Input: A, B
Output: a

a = Segment(A, B)

Tool: Klein Pole (command KleinPole)
KleinPole[ <Point>, <Point> ]
Input: A, B
Output: P

a, C, D = KleinLine(A, B)
b = Segment((0, 0), C)
c = Segment((0, 0), D)
d = OrthogonalLine(C, b)
e = OrthogonalLine(D, c)
P = Intersect(d, e)

Tool: Klein Raise Perpendicular (command KleinRaisePerpendicular)
KleinRaisePerpendicular[ <Point>, <Point> ]
Input: A, B
Output: b

C = KleinPole(A, B)
a = Line(C, B)
D, E = Intersect(Circle[(0, 0), (1, 0)], a)
b = Segment(D, E)

Tool: Klein Drop Perpendicular (command KleinDropPerpendicular)
KleinDropPerpendicular[ <Point>, <Point>, <Point> ]
Input: A, B, F
Output: c, G

C = KleinPole(A, B)
a, D, E = KleinLine(A, B)
b = Line(C, F)
G = Intersect(b, a)
H, I = Intersect(Circle[(0, 0), (1, 0)], b)
c = Segment(H, I)

Tool: Klein Angle Bisector (command KleinAngleBisector)
KleinAngleBisector[ <Point>, <Point>, <Point> ]
Input: A, C, B
Output: d

D, a = KleinRay(C, A)
E, b = KleinRay(C, B)
P = KleinPole(D, E)
c = Line(P, C)
F, G = Intersect(Circle[(0, 0), (1, 0)], c)
d = Segment(F, G)

Tool: Klein Midpoint (command KleinMidpoint)
Input: B, A
Output: I

P = KleinPole(A, B)
b = Ray(P, A)
c = Ray(P, B)
E, F = Intersect(Circle[(0, 0), (1, 0)], b)
G, H = Intersect(Circle[(0, 0), (1, 0)], c)
d = Segment(E, H)
e = Segment(G, F)
I = Intersect(e, d)

Tool: Klein Perpendicular Bisector (command KleinPerpendicularBisector)
Input: B, A
Output: E, d

E = KleinMidpoint(A, B)
d = KleinRaisePerpendicular(A, E)

Tool: Klein Point Reflection (command KleinPointReflection)
Input: A, M
Output: N

a, B, C = KleinLine(A, M)
Q = KleinPole(A, M)
b = Ray(Q, A)
D, E = Intersect(Circle[(0, 0), (1, 0)], b)
c = Ray(Q, M)
F, G = Intersect(Circle[(0, 0), (1, 0)], c)
d = Segment(G, M)
H = Midpoint(d)
P = KleinPole(H, M)
e = Ray(P, D)
f = Ray(P, E)
I, J = Intersect(Circle[(0, 0), (1, 0)], f)
T = If(E ≠ I, I, J)
K, L = Intersect(Circle[(0, 0), (1, 0)], e)
T' = If(K ≠ D, K, L)
g = Line(T, T')
N = Intersect(a, g)

Tool: Klein Circle Center And Point (command KleinCircleCenterAndPoint)
KleinCircleCenterAndPoint[ <Point>, <Point> ]
Input: O, P
Output: k

P' = KleinPointReflection(P, O)
b = KleinRaisePerpendicular(P, O)
C, D = Intersect(Circle[(0, 0), (1, 0)], b)
c = Segment(D, O)
E = Midpoint(c)
d = KleinAngleBisector(P, O, E)
F, G = Intersect(Circle[(0, 0), (1, 0)], d)
e = Segment(O, F)
H = Midpoint(e)
f, I = KleinDropPerpendicular(O, H, P)
P'' = Intersect(f, b)
P''' = KleinPointReflection(P'', O)
g = KleinAngleBisector(P, O, H)
J, K = Intersect(Circle[(0, 0), (1, 0)], g)
h = Segment(O, J)
L = Midpoint(h)
i, M = KleinDropPerpendicular(O, L, P)
P'''' = Intersect(i, d)
k = Conic(P, P'', P''', P'''', P')

Tool: Klein Circle Center And Radius (command KleinCircleCenterAndRadius)
Input: O, A, B
Output: e

C, b = KleinPerpendicularBisector(O, A)
D, E = Intersect(Circle[(0, 0), (1, 0)], b)
c = Segment(C, E)
F = Midpoint(c)
d, M = KleinDropPerpendicular(C, F, B)
G = KleinPointReflection(B, M)
e = KleinCircleCenterAndPoint(O, G)

Tool: Klein Distance (command KleinDistance)
Input: A, B
Output: text1, b

a = Line(A, B)
C, D = Intersect(Circle[(0, 0), (1, 0)], a)
b: abs(log(Distance[A, C] / Distance[A, D] / (Distance[B, C] / Distance[B, D]))) / 2
E = Midpoint(A, B)
text1: Name[A] + (Name[B]) + "=" + b

Tool: Klein Angle Measure (command KleinAngleMeasure)
Input: A, C, B
Output: text4, α

text1, a = KleinDistance(B, C)
text2, b = KleinDistance(A, C)
text3, c = KleinDistance(A, B)
α = Angle(acos((cosh(c) - (cosh(a) * cosh(b))) / (((-sinh(a)) * sinh(b)))))
text4: "∡" + (Name[A]) + (Name[C]) + (Name[B]) + "=" + α
d = AngularBisector(A, C, B)
e = Segment(A, B)
D = Intersect(d, e)
E = Midpoint(Segment[C, D])