Constructing a Klein Line

Given: Two points A and B interior to the Klein Disk.
Construct: the Klein segment through A and B.

(Show/Hide) 1. Construct the Euclidean segment AB. 

By definition, segment AB is the desired Klein segment
through A and B.

Use the checkboxes to view the steps in the construction

Klein Segment Construction

γ = Circle((0, 0), (1, 0))
B = (0.3129062768922187, -0.547938287805143)
A = (-0.3769116506231043, -0.5134473914293768)
a = Segment(A, B)
b = 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])