Projective Geometry: Homography, Cross-ratio, Harmonic Conjugates, Polarity
Loading the math board and drawing, please wait…
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
Point(xAxis) → PIf(x(P) ≟ x(P), x(P), Infinity) → pPoint(xAxis) → NIf(x(N) ≟ x(N), x(N), Infinity) → nPoint(xAxis) → IIf(x(I) ≟ x(I), x(I), Infinity) → dPoint(xAxis) → EIf(x(E) ≟ x(E), x(E), Infinity) → eIf(abs(n) ≠ Infinity, Line[V, N], Line[V, xAxis]) → lVNPoint(lVN) → N'If(abs(p) ≠ Infinity, Line[V, P], Line[V, xAxis]) → lVPPoint(lVP) → P'Line(N', P') → lIf(abs(d) ≠ Infinity, Line[V, I], Line[V, xAxis]) → lVIIntersect(l, lVI) → I'If(abs(e) ≠ Infinity, Line[V, E], Line[V, xAxis]) → lVEIntersect(l, lVE) → E'Angle(N, V, P) → ViewIf(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))]]) → dhIf(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))]]) → ehIf(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))]]) → nhIf(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))]]) → phIf(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)))]]]) → crIf(x(N') ≟ x(N') ∧ x(E') ≟ x(E'), (Vector[N', E'] * vU'), Infinity) → mN'E'If(x(N') ≟ x(N') ∧ x(I') ≟ x(I'), (Vector[N', I'] * vU'), Infinity) → mN'I'If(x(P') ≟ x(P') ∧ x(E') ≟ x(E'), (Vector[P', E'] * vU'), Infinity) → mP'E'If(x(P') ≟ x(P') ∧ x(I') ≟ x(I'), (Vector[P', I'] * vU'), Infinity) → mP'I'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'Line(N', lVE) → lEParallelLine(P', lVI) → lIParallelOrthogonalLine(I, lVE) → lIPerpendicularIntersect(lEParallel, lVP) → P'pIntersect(lIPerpendicular, lVE) → VpIntersect(lIParallel, lVN) → N'pSegment(N', E') → seN'E'Segment(N', I') → seN'I'Segment(N, E) → seNESegment(N, I) → seNISegment(P', E') → seP'E'Segment(P', I') → seP'I'Segment(P, E) → sePESegment(P, I) → sePISegment(N', E') → ssN'E'Segment(N', I') → ssN'I'Segment(P', E') → ssP'E'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.