Projective Geometry

πŸ‘‹ Introduction

Geometry and Algebra

  • Geometry
    • Points, lines, triangles, circles, conic sections...
    • Collinear, concurrent, parallel, perpendicular...
    • Distances, angles, areas, quadrance, spread, quadrea...
    • Midpoint, bisector, orthocenter, pole/polar, tangent...
  • Algebra
    • Addition, multiplication, inverse...
    • Elementary algebra: integer/rational/real/complex... numbers.
    • Abstract Algebra: rings, fields...
    • Linear algebra: vector, matrix, determinant, dot/cross product...
  • The two subjects are linked by coordinates.

πŸ”‘ Key points

  • The earth is not flat and our universe is non-Euclidean.

  • Non-Euclidean geometry is much easier to learn than you might think.

  • Our curriculum in school is completely wrong.

  • Euclidean geometry is asymmetric. Three sides determine a triangle, but three angles do not determine a triangle. This may not the case in general geometries. Euclidean geometry is just a special case.

  • Yet Euclidean geometry is computationally more efficient and is still used in our small-scale everyday life.

  • Incidenceship facilitates integer arithmetic; non-oriented measurement facilitates rational arithmetic; oriented measurement facilitates floating-point arithmetic. Don't shoot rabbits with machine guns.

The Basic Elements of Projective Plane

The concept of Projective Plane

  • Only "points" and "lines" are involved.

  • Assume that "points" (or "lines") are distinguishable.

  • Denote = as and refer to the same point.

  • E.g., =

  • We have the following rules:

    • = (reflective)
    • If = , then = (symmetric)
    • If = and = , then (transitive)
  • Unless otherwise mentioned, objects with different names are assumed to be distinct, i.e.Β .

  • This idea can be generalized to higher dimensions. However, we restrict here to 2D only.

Incidence

  • A point either lies on a line or it does not.

  • If a point lies on a line , denote .

  • For convenience, we also denote it as .

  • We have

Incidence

Projective Point and Line

  • Projective Point

    • Exactly one line passes through two distinct points.
    • Denote join(, ) or simply as a line joined by and .
    • We have:
      • =
      • and are always true.
  • Projective Line

    • Exactly one point met by two distinct lines.
    • Denote meet(, ) or simply as a point met by and .
    • We have:
      • =
      • and are always true.
  • Duality: "Point" and "Line" are interchangable here.

  • "Projective geometry is all geometry." (Arthur Cayley)

Example 1: Euclidean Geometry

  • Point: projection of a 3D vector onto a 2D plane :

  • for all represents the same point.

  • For instance, and represent the same point

  • is a point at infinity.

  • Line: , denoted by a vector .

  • for all represents the same line.

  • is the line at infinity.

  • is not a valid point or line.

Euclidean 2D plane from 3D vector

euclidean{#fig:euclidean}

Calculation by Vector Operations

  • Let and .
    • Dot product = = .
    • Cross product =
  • Then, we have:
    • precisely when
    • Join of two points: =
    • Meet of two lines: =
    • precisely when

Examples

  • The linear equation that joins the point and is = , or , or .

  • The point lies on the line because = .

  • Exercise: Calculate the line equation that joins the points and .

🐍 Python Code (pg_object)

class pg_object(np.ndarray):
    @abstractmethod
    def dual(self):
        """abstract method"""
        pass

    def __new__(cls, inputarr):
*        obj = np.asarray(inputarr).view(cls)
        return obj

    def __eq__(self, other):
        if type(other) is type(self):
            return (np.cross(self, other) == 0).all()
        return False

    def __ne__(self, other):
        return not self.__eq__(other)

    def incident(self, l):
        return not self.dot(l)

    def __mul__(self, other):
        T = self.dual()
        return T(np.cross(self, other))

🐍 Python Code (pg_point and pg_line)

class pg_point(pg_object):
    def __new__(cls, inputarr):
        obj = pg_object(inputarr).view(cls)
        return obj

    def dual(self):
        return pg_line

class pg_line(pg_object):
    def __new__(cls, inputarr):
        obj = pg_object(inputarr).view(cls)
        return obj

    def dual(self):
        return pg_point

def join(p, q):
    assert isinstance(p, pg_point)
    return p * q

def meet(l, m):
    assert isinstance(l, pg_line)
    return l * m

🐍 Python Code (Example)

from __future__ import print_function
from pprint import pprint
import numpy as np

if __name__ == "__main__":
    p = pg_point([1, 3, 2])
    q = pg_point([4, 3, 5])
    print(join(p, q))

    l = pg_line([5, 7, 8])
    m = pg_line([-5, 1, 6])
    print(meet(l, m))

    p = pg_point([1-2j, 3-1j, 2+1j]) # complex number
    q = pg_point([-2+1j, 1-3j, -1-1j])
    assert p.incident(p*q)

Example 2: Perspective View of Euclidean Geometry

  • It turns out that we can choose any line in a plane as the line of infinity.

euclidean2{#fig:euclidean2}

Example 3: Spherical/Elliptic Geometry

  • Surprisingly, the vector notations and operators can also represent other geometries, such as spherical/Elliptic geometry.

  • "Point": projection of the 3D vector onto the unit sphere. where .

  • Here, the two points on the opposite poles are considered to be the same point.

  • "Line": represents the great circle intersecting the unit sphere and the plane .

  • The are called Homogeneous Coordinates.

  • Here, the coordinates can be integer numbers, rational numbers (the ratio of two integers), real numbers, complex numbers, or finite field numbers, or even polynomial functions.

Spherical Geometry from 3D vector

sphere{#fig:sphere}

Example 4: Hyperbolic Geometry from 3D vector

  • A velocity "point": projection of a 3D vector onto 2D plane :

Counterexamples

  • In some quorum systems, two "lines" are allowed to meet at more than one point. Therefore, it is a projective geometry only in very special cases.

  • In some systems, the line from to is not the same as the line from to , so they cannot form a projective geometry.

  • "Symmetry" is an important keyword in projective geometry.

Number systems

  • Integers ():
    • e.g.Β 
    • discrete, more computationally efficient.
  • Rational numbers ():
    • e.g.Β  (i.e.Β infinity)
    • Multiplication/division is simpler than addition/subtraction
  • Real numbers ():
    • e.g.Β , ,
    • May induce round-off errors.
  • Finite field, , where is a prime number (e.g. ) or prime powers (e.g.Β ).
    • Used in Coding Theory

Number systems (cont'd)

  • Complex numbers ():

    • e.g.Β ,
    • Besides the identity (the only automorphism of the real numbers), there is also the automorphism that sends to such that .
  • Complex numbers over integers ()

    • e.g.Β ,
    • are also known as Gaussian integers.
  • Complex numbers over rational numbers ()

  • Projective Geometry can work on all these number systems.

  • In fact, Projective Geometry can work on any field. Moreover, multiplicative inverse operations are not required.

  • No "Continuity" is assumed in Projective Geometry.

Example 4: Poker Card Geometry

  • Even "coordinates" is not necessary for projective geometry.

  • Consider the poker cards in @tbl:poker_card:

    • For example, meet() = 5, join(J, 4) = .
  • We call this Poker Card Geometry here.

Table



A 2 3 4 5 6 7 8 9 10 J Q K

2 3 4 5 6 7 8 9 10 J Q K A

4 5 6 7 8 9 10 J Q K A 2 3

10 J Q K A 2 3 4 5 6 7 8 9


: Poker Card Geometry {#tbl:poker_card}

Finite projective plane

  • Yet we may assign the homogeneous coordinate to a finite projective plane where the vector operations are in a finite field.

  • E.g. the poker card geometry is a finite projective plane of order 3.

  • The smallest finite projective plane (order 2) contains only 7 points and 7 lines.

  • If the order is prime or prime powers, then we can easily construct the finite projective plane via finite fields and homogeneous coordinates.

  • In 1989, the nonexistence of finite projective plane of order 10 was proved . The proof took the equivalent of 2000 hours on a Cray 1 supercomputer.

  • The existence of many other higher order finite projective planes remains an open question.

Not covered in this work

  • Unless specifically mentioned, we will not discuss finite projective plane further more.

  • Although coordinate systems are not a requirement for general projective geometry, practically all examples we deal with have homogeneous coordinates. The proofs of all theorems are based on the assumption of homogeneous coordinates.

Basic Properties

Collinear, Concurrent, and Coincidence

  • If all three points lie on the same line, they are said to be collinear.

  • If all three lines intersect at the same point, they are called concurrent.

  • Denote the coincidence relationship as coI().

  • coI() is true precisely when is true.

  • Similarly, coI() is true precisely when is true.

  • In general, coI() is true precisely when is true for all in the remaining points .

  • Unless otherwise mentioned, is assumed to be coincide, while is assumed to coincide with none of the three.

Parameterize a line

  • The points on a line can be parameterized by , with and are not both zero.

  • For integer coordinates, to show that can span all integer points on the line, we give the exact expression of for a point as follows.

  • Let .

  • Then

🐍 Python Code

def coincident(p, q, r):
    return r.incident(p * q)

def coI_core(l, Lst):
    for p in Lst:
        if not l.incident(p):
            return False
    return True

def coI(p, q, *rest):
    assert p != q
    return coI_core(p*q, rest )

# Note: `lambda` is a preserved keyword in python
def plucker(lambda1, p, mu1, q):
    T = type(p)
    return T(lambda1 * p + mu1 * q)

Pappus' Theorem

  • Theorem (Pappus): Given two lines and . Let =meet(), =meet(), and =meet(). Then are collinear.

  • Sketch of the proof:

    • Let .
    • Let .
    • Express in terms of .
    • Simplify the expression and conclude that it is equal to 0 (we may use the Python's symbolic package for the calculation).
  • Exercise: verify that this theorem holds for 3, 6, Q on and 8, 9, J on in the poker card geometry.

🐍 Python Code for the Proof

import sympy
sympy.init_printing()
pv = sympy.symbols("p:3", integer=True)
qv = sympy.symbols("q:3", integer=True)
lambda1, mu1 = sympy.symbols("lambda1 mu1", integer=True)
p = pg_point(pv); q = pg_point(qv)
r = plucker(lambda1, p, mu1, q)
sv = sympy.symbols("s:3", integer=True)
tv = sympy.symbols("t:3", integer=True)
lambda2, mu2 = sympy.symbols("lambda2 mu2", integer=True)
s = pg_point(sv); t = pg_point(tv)
u = plucker(lambda2, s, mu2, t)
G = (p * t) * (q * s)
H = (p * u) * (r * s)
I = (q * u) * (r * t)
ans = np.dot(G, H * I)
ans = sympy.simplify(ans)
print(ans) # get 0

An instance of Pappus' theorem

An instance of Pappus' theorem{#fig:pappus}

Another instance of Pappus' theorem

Another instance of Pappus' theorem{#fig:pappus2}

Triangles and Trilaterals

  • If three points , , and are not collinear, they form a triangle, denoted as .

  • If three lines , , and are not concurrent, they form a trilateral, denoted as .

  • Triangle and trilateral are dual if , and .

🐍 Python Code (II)

def tri(T):
    a1, a2, a3 = T
    l1 = a2 * a3
    l2 = a1 * a3
    l3 = a1 * a2
    return l1, l2, l3

def tri_func(func, T):
    a1, a2, a3 = T
    m1 = func(a2, a3)
    m2 = func(a1, a3)
    m3 = func(a1, a2)
    return m1, m2, m3

An example of triangle and trilateral

Triangle{#fig:triangle}

Projectivities and Perspectivities

Projectivities

  • An ordered set (whether collinear or not) is called a projective of a concurrent set precisely when , and .

  • Denote this as .

  • An ordered set (whether concurrent or not) is called a projective of a collinear set precisely when , and .

  • Denote this as .

  • If each ordered set is coincident, we may write:

    • Or simply write

Perspectivities

  • An ordered set is called a perspectivity of an ordered set precisely when and for some concurrent set .

  • Denote this as .

  • An ordered set is called a perspectivity of an ordered set precisely when and for some collinear set .

  • Denote this as .

An instance of perspectivity

perspectivity{#fig:perspec}

Another instance of perspectivity

perspecitivity2{#fig:perspec2}

Perspectivity

  • Similar definition for more than three points:
    • .
  • To check perspectivity:
    • First construct a point := meet().
    • For the rest of the points, check if are collinear.
  • Note that and does not imply .

🐍 Python Code (III)

def persp(L, M):
    if len(L) != len(M):
        return False
    if len(L) < 3:
        return True
    [pL, qL] = L[0:2]
    [pM, qM] = M[0:2]
    assert pL != qL
    assert pM != qM
    assert pL != pM
    assert qL != qM
    O = (pL * pM) * (qL * qM)
    for rL, rM in zip(L[2:], M[2:]):
        if not O.incident(rL * rM):
            return False
    return True

Desargues's Theorem

  • Theorem (Desargues): Let the trilateral be the dual of the triangle and the trilateral be the dual of the triangle . Then if and only if .

  • Sketch of the proof:

    • Let be the perspective point.
    • Let .
    • Let .
    • Let .
    • Let =
    • Let =
    • Let =
    • Express in terms of .
    • Simplify the expression and find that it is equal to 0. (we may use the Python's symbolic package for the calculation.)
    • Due to the duality, the only-if part can be proved using the same technique.

🐍 Python Code for the Proof (II)

# Define symbol points p, q, s, t as before
# Define symbol lambda1, mu1, lambda2, mu2 as before
# ...
lambda3, mu3 = sympy.symbols("lambda3 mu3", integer=True)
p2 = plucker(lambda1, p, mu1, t)
q2 = plucker(lambda2, q, mu2, t)
s2 = plucker(lambda3, s, mu3, t)
G = (p * q) * (p2 * q2)
H = (q * s) * (q2 * s2)
I = (s * p) * (s2 * p2)
ans = np.dot(G, H * I)
ans = sympy.simplify(ans)
print(ans) # get 0

An instance of Desargues' theorem

desargues{#fig:desargues}

Another instance of Desargues' theorem

desargues2{#fig:desargues2}

Projective Transformation

  • Given a function that transforms a point into another point .

  • If , , and are collinear and we always have , , and collinear. Then the function is called a projective transformation.

  • In Homogeneous coordinates, a projective transformation is any non-singular matrix multiplied by a vector.

Quadrangles and Quadrilateral Sets

  • Given four points , , and , if none of three are collinear, they form a quadrangle, denoted as .

  • Note that the quadrangle here can be either convex or self-intersecting.

  • In total, there are six lines formed by .

  • Suppose they meet another line at , where

    • = meet(), = meet()

    • = meet(), = meet()

    • = meet(), = meet()

  • We call these six points a quadrilateral set, denoted as .

Quadrilateral set

quad_set{#fig:quad_set}

Another quadrilateral set

quad_set2{#fig:quad_set2}

Harmonic Sets

  • In a quadrilateral set , if and , then it is called a harmonic set.

  • The Harmonic relation is denoted by .

  • Then and is called a harmonic conjugate.

  • Theorem: If , then .

  • In other words, projectivity preserves harmonic relation.

  • Theorem: If , then .

  • In other words, perspectivity preserves harmonic relation.

Basic metric between point and line

  • A basic metric between and , denoted by (inner product):

    • can be positive, negative, and zero.

    • precisely when lies on .

Cross Ratio

  • Given a line incident with . Choose an arbitrary point that is not on that line.

  • The cross ratio is defined as:

  • Note: the cross ratio does not depend on what is chosen.

🐍 Python Code (IV)

from fractions import Fraction
import numpy as np

def ratio_ratio(a, b, c, d):
    if isinstance(a, (int, np.int64)):
        return Fraction(a, b) / Fraction(c, d)
    return (a * d) / (b * c)

def x_ratio(A, B, l, m):
    dAl = A.dot(l)
    dAm = A.dot(m)
    dBl = B.dot(l)
    dBm = B.dot(m)
    return ratio_ratio(dAl, dAm, dBl, dBm)

def R(A, B, C, D):
    O = (C*D).aux()
    return x_ratio(A, B, O*C, O*D)

Polarities

  • A polarity is a projective correlation of period 2.

  • We call the polar of , and the pole of .

  • Denote and .

  • Except for the degenerate cases, and .

  • It may happen that is incident with so that each is self-conjugate.

  • The locus of self-conjugate points defines a conic. However, polarity is a more general concept than conics, because some polarities may have no self-conjugate points (or their self-conjugate points are complex).

The Use of a Self-Polar triangle

  • Any projective correlation that relates three vertices of one triangle to their respective opposite sides is a polarity.

  • Thus, any triangle , any point not on a side, and any line not throughout a vertex, determine a definite polarity .

The Conic

  • Historically ellipse (including circle), parabola, and hyperbola.

  • The locus of self-conjugate points is a conic.

  • Their polars are its tangents.

  • Any other line is called a secant or a nonsecant according to whether it meets the conic twice or not at all, i.e., according to whether the involution of conjugate points on it is hyperbolic or elliptic.

  • Note: Intersecting a conic with a line may result of an irrational intersection point.

Construct the polar of a point using a conic

  • To construct the polar of a given point , not on the conic, draw any two secants and through ; then the polar joins the two points meet() and meet().

Example of constructing the polar of a point

\begin{figure}[hp]
\centering
\input{figs/pole2polar.tikz}
\caption{Example of constructing the polar of a point}
\end{figure}

Another example of constructing the polar of a point

\begin{figure}[hp]
\centering
\input{figs/pole2polar2.tikz}
\caption{Another example of constructing the polar of a point}
\end{figure}

Construct the pole from a line

  • To construct the pole of a given secant , draw the polars of any two points on the line; then the common point of two polars is the pole of .

Constructing the pole of a line

\begin{figure}[hp]
\centering
\input{figs/polar2pole.tikz}
\caption{Constructing the pole of a line}
\end{figure}

Construct the tangent of a point on a conic

  • To construct the tangent at a given point on a conic, join to the pole of any secant through .

Example of construct the tangent of a point on a conic

\begin{figure}[hp]
\centering
\input{figs/tangent.tikz}
\caption{Construct the tangent of a point on a conic}
\end{figure}

Another example of constructing the tangent of a point on a conic

\begin{figure}[hp]
\centering
\input{figs/tangent2.tikz}
\caption{Another example of constructing the tangent of a point on a conic}
\end{figure}

Pascal's Theorem

  • If a hexagon is inscribed in a conic, the three pairs of opposite sides meet in collinear points.

An instance of Pascal' theorem

pascal{#fig:pascal}

Another instance of Pascal' theorem

pascal2{#fig:pascal2}

Backup

melpon.org

Cayley-Klein geometry

πŸ‘‹ Introduction

πŸ”‘ Key points

  • The gravitational/electromagnetic force between two objects is inversely proportional to the square of their distance.

  • Distances and angles may be powerful for oriented measures. But quadrance and spread are more energy saving for non-oriented measures.

  • Euclidean Geometry is a degenerate case.

Cayley-Klein Geometry

  • Projective geometry can be further categorized by polarities.

  • Except for degenerate cases, and

  • A fundamental cone is defined by a pole/polar pair such that and .

  • To visualize Cayley-Klein Geometry, we may project the objects onto the 2D plane.

  • In hyperbolic geometry, the projection of the fundamental cone onto the 2D plane is a unit circle, the so-called null circle. The distance and angle measurement can be negative outside the null circle.

  • We can think of Euclidean geometry as a hyperbolic geometry in which the null circle is expanded toward infinity.

  • In this section, we use the vector notation and .

Fundamental Cone with pole and polar

Fudanmental Cone with a pole and polar{#fig:F}

Examples

  • Let and

  • Hyperbolic geometry:

  • Elliptic geometry:

  • Euclidean geometry (degenerate conic):

  • psuedo-Euclidean geometry (degenerate conic):

]

Examples (cont'd)

  • Perspective view of Euclidean geometry (degenerate conic):
    • Let be the line of infinity.
    • Let and are two complex conjugate points on . Then
    • (outer product)

Orthogonality

  • A line is said to be perpendicular to a line if lies on , i.e., .

  • To find a perpendicular line of that passes through , join to the pole of , i.e., join(). We call this the altitude line of .

  • For duality, a point is said to be perpendicular to point if .

  • A similar definition can be given for altitude points.

  • Note that Euclidean geometry does not have the concept of the perpendicular point because every is the line of infinity.

Orthocenter of triangle

  • Theorem 1 (Orthocenter and ortholine). The altitude lines of a non-dual triangle meet at a unique point called the orthocenter of the triangle.

  • Despite the name "center", the orthocenter may be outside a triangle.

  • Theorem 2. If the orthocenter of triangle is , then the orthocenter of triangle is .

An instance of orthocenter theorem

An instance of orthocenter theorem{#fig:orthocenter}

An instance of Theorem 2

An instance of Theorem 2{#fig:orthocenter2}

Involution

  • Involution is closely related to geometric reflection.

  • The defining property of an involution is that for every point , .

  • Theorem: Let be an involution. Then

    1. there is a line for which for every poiny incident with .
    2. there is a point for which for every line incident with .
  • We call the line the mirror and the point the center of the involution.

  • If is at the line of infinity (Euclidean Geometry), then we get an undistorted Euclidean line reflection on .

  • If we choose , then the fundamental cone is invariant.

Involution (cont'd)

  • Theorem: The point transformation matrix of the projective involution with center and mirror is given by

  • In other words, = .

🐍 Python Code

from proj_geom import *

def is_perpendicular(l, m):
    return m.incident(dual(l))

def altitude(p, l):
    return p * dual(l)

def orthocenter(a1, a2, a3):
    t1 = altitude(a1, a2*a3)
    t2 = altitude(a2, a1*a3)
    return t1*t2

class reflect:
    def __init__(self, m, O):
        self.m = m
        self.O = O
        self.c = dot(m, O)

    def __call__(self, p):
        return pk_point(self.c, p, -2 * dot(self.m, p), self.O)

Mirror Image

{#looking-at-self}

Basic measurement

Quadrance and Spread for the general cases

  • Let .

  • .

  • .

  • The quadrance between points and is:

  • The spread between lines and is

  • Note: they are invariant to any projective transformations.

🐍 Python Code

import numpy as np
from fractions import *

def omega(l):
    return dot(l, dual(l))

def measure(a1, a2):
    omg = omega(a1*a2)
    if isinstance(omg, int):
        return Fraction(omg, omega(a1) * omega(a2))
    else:
        return omg / (omega(a1) * omega(a2))

def quadrance(a1, a2):
    return measure(a1, a2)

def spread(l1, l2):
    return measure(l1, l2)

versus raditional Distance and Angle

  • Hyperbolic:
  • Elliptic:
  • Euclidean:

Measure the dispersion among points on the unit sphere

The usual way:

nsimplex, n = K.shape
maxd = 0
mind = 1000
for k in range(nsimplex):
  p = X[K[k,:],:]
  for i in range(n-1):
    for j in range(i+1, n):
      dot = dot(p[i,:], p[j,:])
*     q = 1.0 - dot*dot
*     d = arcsin(sqrt(q))
      if maxd < d:
        maxd = d
      if mind > d:
        mind = d
*dis = maxd - mind

A better way:

nsimplex, n = K.shape
maxd = 0
mind = 1000
for k in range(nsimplex):
  p = X[K[k,:],:]
  for i in range(n-1):
    for j in range(i+1, n):
      dot = dot(p[i,:], p[j,:])

*     q = 1.0 - dot*dot
      if maxq < q:
        maxq = q
      if minq > q:
        minq = q
*dis = arcsin(sqrt(maxq)) \
*      - arcsin(sqrt(minq))

] ]

Spread law and Thales Theorem

  • Spread Law

  • (Compare with the sine law in Euclidean Geometry):

  • Theorem (Thales): Suppose that is a right triangle with . Then

  • Note: in some geometries, two lines being perpendicular does not imply they have a right angle ().

Triangle proportions

  • Theorem (Triangle proportions): Suppose is a point lying on the line . Define the quadrances and , and the spreads and . Then

Midpoint and Angle Bisector

  • There are two angle bisectors for two lines.
  • In general geometries, There are also two midpoints for two points.
  • Let be the midpoint of and .
  • Then = .
  • Let be the angle bisector of and .
  • Then = .
  • Note:
    • The midpoint could be irrational in general.
    • The midpoint could even be complex, even both points are real.
    • The bisectors of two lines are perpendicular.
    • In Euclidean geometry, the other midpoint is on the line of infinity.

Midpoint in Euclidean geometry

  • Let be the line of infinity.
  • = = .
  • Then, the midpoint = .
  • One midpoint in fact lies on .

Constructing angle bisectors using a conic

  1. For each line, construct the two tangents and of its intersection points with the fundamental conic to that conic.
  2. The following lines are the two angle bisectors:
    • join(meet(), meet())
    • join(meet(), meet())

Remark: the tangents in elliptic geometry have complex coordinates. However, the angle bisectors are real objects again.

Constructing a pair of angle bisectors

Constructing a pair of angle bisectors{#fig:bisector}

Angle Bisector Theorem

  • Let , , be three lines, none of which is tangent to the fundamental cone.

  • Then one set of angle bisector are concurrent.

  • Furthermore, the points meet(), meet(), meet(*) are collinear.

An instance of complete angle bisector theorem

An instance of complete angle bisector theorem{#fig:bisectortheorem}

Midpoint theorem

  • Let , , be three points, none of which lies on the fundamental cone.

  • Then one set of midpoints , , _ are collinear.

  • Furthermore, the lines join(), join(), join(*) meet at a point.

backup

> http://melpon.org/wandbox/permlink/Rsn3c3AW7Ud8E1qX

Hyperbolic/Elliptic Geometry

πŸ‘‹ Introduction

πŸ”‘ Key points

  • In Hyperbolic Geometry,

    • two parallel lines meet outside the null circle.

    • Given a line , there are more one parallel lines that pass through a point .

  • Notations: To distinguish with Euclidean geometry, lines are written as capital letters.

Quadrance and Spread in Hyperbolic/Elliptic geometry

  • For efficiency, quadrance and spread can also be written as follows.

  • The quadrance between points and is:

  • The spread between lines and is

  • Note: In Hyperbolic Geometry, the quadrance of two points inside the null circle is negative.

Relation with Traditional Distance and Angle

  • Hyperbolic:

    • Distance:
    • Angle:
  • Elliptic:

    • Distance:
    • Angle:

Spread law

  • Spread Law

  • (Compare with the sine law in traditional Hyperbolic Geometry):

  • (Compare with the sine law in traditional Elliptic Geometry):

Triple formulate

  • Let , and are points with , and . Let , and are lines with , and .

  • Theorem (Triple quad formula): If , and are collinear points then

  • Theorem (Triple spread formula): If , and are concurrent lines then

Cross Law

  • Theorem (Cross law)

  • Theorem (Cross dual law)

  • Note:

    • Given three quadrances, three spreads can be uniquely determined. Same as Euclidean Geometry.
    • Given three spreads, three quadrances can be uniquely determined. Not true in Euclidean Geometry.

Right triangles and Pythagoras

  • Theorem (Pythagoras): If and are perpendicular lines () then

  • Theorem (Thales): Suppose that is a right triangle with . Then and .

Right parallax

  • Theorem (Right parallax): If a right triangle has spreads , and , then it will have only one defined quadrance given by

  • We may restate this result in the form:

Triangle proportions and barycentric coordinates

Triangle proportions

  • Theorem (Triangle proportions): Suppose that is a point lying on the line . Define the quadrances and , and the spreads and . Then

Euclidean geometry

Basic

  • Line at infinity

  • Two special points and on play an important role in Euclidean Geometry:

    • ,
  • If we choose another line as line of infinity

Rational Trigonometry in Euclidean geometry

Notations

  • To distinguish with Euclidean geometry, points are written in capital letters.

Quadrance and Spread in Euclidean geometry

  • The quadrance between points and is:

  • The spread between lines and is:

  • The cross between lines and is:

Triple formulate

  • Let , and are points with , and . Let , and are lines with , and .

  • Theorem (Triple quad formula): If , and are collinear points then

  • Theorem (Triple spread formula): If , and are concurrent lines then

Spread Law

  • Suppose that triangle form quadrances , and , and it dual trilateral form spreads , and . Then:

  • Theorem (Spread Law)

  • (Compare with the sine law in Euclidean Geometry):

Cross Law

  • Theorem (Cross law)

  • (Compare with the Cosine law)

Right triangles and Pythagoras

  • Suppose that is a right triangle with . Then

  • Theorem (Thales)

  • Theorem (Pythagoras)

Archimedes' function

  • Archimedes' function

  • Non-symmetric but more efficient version:

Theorems

  • Theorem (Archimedes' formula): If , and , then =

Theorems (cont'd)

  • Theorem: As a quadratic equation in , the TQF can be rewritten as:

  • Theorem: The quadratic equations and has a common solutions iff

Heron's formula (Hero of Alexandria 60BC)

  • The area of a triangle with side lengths is where is the semi-perimeter.

Heron's formula{#fig:heron}

Archimedes' theorem

  • The area of a planar triangle with quadrances is given by

  • Note: Given . The area is maximum precisely when .

Brahmagupta's formula (convex)

  • Brahmagupta's theorem: where

  • Preferred form: =

Quadratic compatibility theorem

  • Two quadratic equations are compatible iff or

  • In this case, if then there is a unique sol'n:

Quadruple Quad Formula

  • Quadruple Quad Formula

  • Note that

    can be computed efficiently as:

Brahmagupta's formula

  • Brahmagupta's formula (convex): =

  • Robbin's formula (non-convex): =

  • Brahmagupta's identity

Cyclic quadrilateral quadrea theorem

where

Ptolemy's theorem & generalizations

  • Claudius Ptolemy: 90-168 A.D. (Alexandria) Astronomer & geographer & mathematician

  • Ptolemy's theorem If is a cyclic quadrilateral with the lengths and diagonal lengths , then [Actually needs convexity!]

Ptolemy's theorem

{#fig:Ptolemy}

Exercise

  • Ex. , , ,

  • Then the quadrances are:

  • The diagonal quadrances are:

Ptolemy's theorem (rational version)

  • Ptolemy's theorem (rational version): If _ is a cyclic quadrilateral with quadrances then

  • Ex. For , , , with

  • we can verify directly that .

  • Note that with the rational form of Ptolemy's theorem, the three quantities appear symmetrically: so convexity of the cyclic quadrilateral is no longer required!

Proof of Ptolemy's theorem

Sketch of the proof:

  • Without loss of generality, we can assume that the circle is a unit circle.
  • Recall that a point on a unit circle can be parameterized as: where and are not both zero.
  • Let .
  • Express in terms of 's and 's
  • Express in terms of 's and 's.
  • Simplify the expression and derive that it is equal to 0. (we may use the Python's symbolic package for the calculation. It took about 8 minutes on my computer :-)

🐍 Python Code

import numpy as np
from fractions import *
from proj_geom import *

def quad1(x1, z1, x2, z2):
    if isinstance(x1, int):
        return (Fraction(x1,z1) - Fraction(x2,z2))**2
    else:
        return (x1/z1 - x2/z2)**2

def quadrance(a1, a2):
    return quad1(a1[0], a1[2], a2[0], a2[2]) + \
            quad1(a1[1], a1[2], a2[1], a2[2])

def uc_point(lambda1, mu1):
    return pg_point([lambda1**2 - mu1**2,
                2*lambda1*mu1, lambda1**2 + mu1**2])

def Ar(a, b, c):
    ''' Archimedes's function '''
    return (4*a*b) - (a + b - c)**2

🐍 Python Code

if __name__ == "__main__":
    import sympy
    sympy.init_printing()

    lambda1, mu1 = sympy.symbols("lambda1 mu1", integer=True)
    lambda2, mu2 = sympy.symbols("lambda2 mu2", integer=True)
    lambda3, mu3 = sympy.symbols("lambda3 mu3", integer=True)
    lambda4, mu4 = sympy.symbols("lambda4 mu4", integer=True)
    a1 = uc_point(lambda1, mu1)
    a2 = uc_point(lambda2, mu2)
    a3 = uc_point(lambda3, mu3)
    a4 = uc_point(lambda4, mu4)
    q12 = quadrance(a1, a2)
    q23 = quadrance(a2, a3)
    q34 = quadrance(a3, a4)
    q14 = quadrance(a1, a4)
    q24 = quadrance(a2, a4)
    q13 = quadrance(a1, a3)
    t = Ar(q12*q34, q23*q14, q13*q24)
    t = sympy.simplify(t)
    print(t) # get 0

Backup

>  pandoc -t latex -F pandoc-crossref -o temp2.svg .\01proj_geom.md .\02ck_geom.md .\03RT.md .\04RT_2.md latex.yaml .\crossref.yaml
>  pandoc -t beamer -F pandoc-crossref -o temp2.svg .\01proj_geom.md .\02ck_geom.md .\03RT.md .\04RT_2.md beamer.yaml .\crossref_2.yaml

Projective Geometry in 1D

πŸ‘‹ Introduction

πŸ”‘ Key points

  • A simplified version of the projective plane.

  • MΓΆbius transformation can be viewed as a projective transform of a complex projective point.

Projective Line's Basic Elements

Projective Line Concept

  • Only involve "Points".

  • "Points" is assumed to be distinguishable.

  • Denote = as and are referred to the same point.

  • E.g., =

  • We have the following rules:

    • = (reflective)
    • If = , then = (symmetric)
    • If = and = , then (transitive)
  • Unless mention specifically, objects in different names are assumed to be distinct, i.e.Β .

Homogenous Coordinates

  • Let and .

    • dot product = = .
    • cross product =
  • Then, we have:

    • if and only if
  • Example: the point and is the same because

  • The cross product is also used as a basic measure between two points.

  • The cross ratio of four points is given by:

Example 1: Euclidean Geometry

  • Point: projection of a 2D vector to 1D line :

  • is a point at infinity.

  • is not a valid point.

Example 1: Euclidean Geometry (measurement)

  • The quadrance between points and is:

  • Let , and are points with , and .

  • TQF (Triple quad formula):

  • TQF (non-symetric form):

Euclidean 1D plane from 2D vector

<!--
![](figs/euclidean.png){#fig:euclidean}
-->

Example 2: Elliptic Geometry

  • "Point": projection of 2D vector to the unit circle.

    where .

  • Two points on the opposite poles are considered the same point here.

Example 2: Elliptic Geometry (measurement)

  • The measure of two points is the "spread" of the point.

  • The spread between points and is:

  • Let , and are points with , and .

  • TSF (Triple spread formula):

<!--
![](figs/sphere.png){#fig:sphere}
-->

Example 4: Hyperbolic Geometry

  • A velocity "point": projection of a 2D vector to 1D line :

  • The measure of two velocity points is the relative speed of two points.

  • Assume that the speed of light is normalized as 1. Then Speed(, ) can never exceed 1 when and .

Projective Transformation

  • Given a nonsingular matrix = . The transformation

  • Let , the formula becomes:

  • This is exactly the MΓΆbius transformation, where is a complex number.

  • MΓΆbius transformation plays an important role in the electromagetic theory.

  • There are two fixed points in this transformation, considering infinity as also a fixed point.