Constructing a Klein Line

Given: Two points O and A interior to the Klein Disk.
Construct: the Klein circle centered at O and passing through A.

* Indicates use of a previously described construction.

(Show/Hide)  *1. Let k be the Klein line through A and O.
(Show/Hide)  *2. Construct the Klein line m through O that is    
                         perpendicular (in the Klein sense) to k.
(Show/Hide)  *3. Let A_2 be the reflection of A about the line through  
                         O that is perpendicular to k (i.e. across m).
(Show/Hide)  *4. Let F be any point other than O on m.  Construct    
                         the Klein angle bisector a of ∡AOF.

Use the checkboxes to view the steps in the construction

Klein Disk Center/Point Circle Construction

m

b

(Show/Hide)  *5. Let s be the line through A that is perpendicular (in the Klein sense) to a. Let P be the foot of   
                         this perpendicular on a.
(Show/Hide)  *6. Let A_3 be the reflection of A about the line through P that is perpendicular to s (i.e. across a).
(Show/Hide)  *7. Let A_4 be the reflection of A_3 about the line through O that is perpendicular to m (i.e. across k).
(Show/Hide)  *8. Let b be the Klein angle bisector of ∡AOP.
(Show/Hide)  *9. Let t be the line through A that is perpendicular (in the Klein sense) to b. Let Q be the foot of    
                         this perpendicular on b.
(Show/Hide)*10. Let A_5 be the reflection of A about the line through Q that is perpendicular to t (i.e. across b).
(Show/Hide) 11. Let e be the conic (ellipse) determined by the five points A, A_2, A_3, A_4, A_5.  (Note that this is 
                         not a standard Euclidean straightedge and compass construction).

Ellipse e is the Klein circle centered at O that passes through point A.

A = (0.7397746273444686, -0.027284213563568985)
O = (0.13668277767557238, -0.5589572915611479)
γ = Circle((0, 0), (1, 0))
k, B_1, C = KleinLine(A, O)
m = KleinRaisePerpendicular(A, O)
D, E = Intersect(γ, m)
F = Midpoint(E, O)
a = KleinAngleBisector(A, O, F)
G, H = Intersect(γ, a)
I = Midpoint(O, G)
s, P = KleinDropPerpendicular(O, I, A)
A_2 = KleinPointReflection(A, O)
A_3 = KleinPointReflection(A, P)
K, L = Intersect(γ, s)
A_4 = KleinPointReflection(A_3, O)
b = KleinAngleBisector(A, O, P)
J, M = Intersect(γ, b)
N = Midpoint(J, O)
t, Q = KleinDropPerpendicular(O, N, A)
A_5 = KleinPointReflection(A, Q)
e = Conic(A, A_2, A_3, A_4, A_5)
B = Point(m)
R = Point(b)
S, T = Intersect(γ, t)
c = false
d = false
f = false
g = false
h = false
i = false
j = false
l = false
n = false
o = false
p = 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])