Projective Geometry: Homography, Cross-ratio, Harmonic Conjugates, Polarity

Projective Geometry: Homography, Cross-ratio, Harmonic Conjugates, Polarity
Loading the math board and drawing, please wait…
2020-11-02 13:48
This example demonstrates key concepts in projective geometry, including homography, cross-ratio, harmonic conjugates, and polarity. Using GeoGebra commands such as Point, Line, Intersect, etc., dynamic exploration of these geometric concepts is possible. Suitable for high school and above students and teachers.

GeoGebra Commands & Parameters

  1. Point(xAxis) → P
  2. If(x(P) ≟ x(P), x(P), Infinity) → p
  3. Point(xAxis) → N
  4. If(x(N) ≟ x(N), x(N), Infinity) → n
  5. Point(xAxis) → I
  6. If(x(I) ≟ x(I), x(I), Infinity) → d
  7. Point(xAxis) → E
  8. If(x(E) ≟ x(E), x(E), Infinity) → e
  9. If(abs(n) ≠ Infinity, Line[V, N], Line[V, xAxis]) → lVN
  10. Point(lVN) → N'
  11. If(abs(p) ≠ Infinity, Line[V, P], Line[V, xAxis]) → lVP
  12. Point(lVP) → P'
  13. Line(N', P') → l
  14. If(abs(d) ≠ Infinity, Line[V, I], Line[V, xAxis]) → lVI
  15. Intersect(l, lVI) → I'
  16. If(abs(e) ≠ Infinity, Line[V, E], Line[V, xAxis]) → lVE
  17. Intersect(l, lVE) → E'
  18. Angle(N, V, P) → View
  19. If(n ≠ n ∨ abs(n) ≟ Infinity, (2 * p) - e, If[p ≠ p ∨ abs(p) ≟ Infinity, (2 * n) - e, If[e ≠ e ∨ abs(e) ≟ Infinity, (n + p) / 2, (((2 * n) * p) - ((n + p) * e)) / (n + p - (2 * e))]]) → dh
  20. If(n ≠ n ∨ abs(n) ≟ Infinity, (2 * p) - d, If[p ≠ p ∨ abs(p) ≟ Infinity, (2 * n) - d, If[d ≠ d ∨ abs(d) ≟ Infinity, (n + p) / 2, (((2 * n) * p) - ((n + p) * d)) / (n + p - (2 * d))]]) → eh
  21. If(e ≠ e ∨ abs(e) ≟ Infinity, (2 * d) - p, If[d ≠ d ∨ abs(d) ≟ Infinity, (2 * e) - p, If[p ≠ p ∨ abs(p) ≟ Infinity, (d + e) / 2, (((2 * d) * e) - ((d + e) * p)) / (e + d - (2 * p))]]) → nh
  22. If(e ≠ e ∨ abs(e) ≟ Infinity, (2 * d) - n, If[d ≠ d ∨ abs(d) ≟ Infinity, (2 * e) - n, If[n ≠ n ∨ abs(n) ≟ Infinity, (d + e) / 2, (((2 * d) * e) - ((d + e) * n)) / (d + e - (2 * n))]]) → ph
  23. If(e ≠ e ∨ abs(e) ≟ Infinity, (d - p) / (d - n), If[d ≠ d ∨ abs(d) ≟ Infinity, (e - n) / (e - p), If[p ≠ p ∨ abs(p) ≟ Infinity, (e - n) / (d - n), If[n ≠ n ∨ abs(n) ≟ Infinity, (d - p) / (e - p), (((e - n) * (d - p))) / (((d - n) * (e - p)))]]]) → cr
  24. If(x(N') ≟ x(N') ∧ x(E') ≟ x(E'), (Vector[N', E'] * vU'), Infinity) → mN'E'
  25. If(x(N') ≟ x(N') ∧ x(I') ≟ x(I'), (Vector[N', I'] * vU'), Infinity) → mN'I'
  26. If(x(P') ≟ x(P') ∧ x(E') ≟ x(E'), (Vector[P', E'] * vU'), Infinity) → mP'E'
  27. If(x(P') ≟ x(P') ∧ x(I') ≟ x(I'), (Vector[P', I'] * vU'), Infinity) → mP'I'
  28. If(x(E') ≠ x(E') ∨ abs(x(E')) ≟ Infinity, mP'I' / mN'I', If[x(I') ≠ x(I') ∨ abs(x(I')) ≟ Infinity, mN'E' / mP'E', If[x(N') ≠ x(N') ∨ abs(x(N')) ≟ Infinity, mP'I' / mP'E', If[x(P') ≠ x(P') ∨ abs(x(P')) ≟ Infinity, mN'E' / mN'I', ((mN'E' * mP'I')) / ((mN'I' * mP'E'))]]]) → cr'
  29. Line(N', lVE) → lEParallel
  30. Line(P', lVI) → lIParallel
  31. OrthogonalLine(I, lVE) → lIPerpendicular
  32. Intersect(lEParallel, lVP) → P'p
  33. Intersect(lIPerpendicular, lVE) → Vp
  34. Intersect(lIParallel, lVN) → N'p
  35. Segment(N', E') → seN'E'
  36. Segment(N', I') → seN'I'
  37. Segment(N, E) → seNE
  38. Segment(N, I) → seNI
  39. Segment(P', E') → seP'E'
  40. Segment(P', I') → seP'I'
  41. Segment(P, E) → sePE
  42. Segment(P, I) → sePI
  43. Segment(N', E') → ssN'E'
  44. Segment(N', I') → ssN'I'
  45. Segment(P', E') → ssP'E'
  46. Segment(P', I') → ssP'I'

AI Drawing Prompt Reference

On a coordinate plane, place four points P, N, I, and E on the x-axis. From a viewpoint V, draw rays from V through each of these points. On each ray, select a corresponding point P', N', I', and E', and connect these projected points to form a line. Construct lines through the projected points that are parallel or perpendicular to certain existing lines, and find their intersections. Draw segments connecting the original points and the projected points, as well as segments between the projected points. Finally, compute and display geometric relationships such as cross-ratio and harmonic conjugates, and mark relevant angles.
The prompt above was compiled from the original drawing commands and is for reference only.