Documentation

Mathlib.Geometry.Euclidean.NinePointCircle

Nine-point circle #

This file defines the nine-point circle of a triangle, and its higher dimension analogue, the 3(n+1)-point sphere of a simplex. Specifically for triangles, we show that it passes through nine specific points as desired.

Main definitions #

References #

The 3(n+1)-point sphere of a simplex. Due to the lack of a better name and to avoid numbers in the identifier, we still use the name "nine-point circle" even for higher dimensions. The center $N$ is defined on the Euler line, collinear with circumcenter $O$ and centroid $G$, in the order of $O$, $G$, and $N$, with $OG : GN = n : 1$. The radius is $1/n$ of the circumradius.

Instances For
    @[simp]
    theorem Affine.Simplex.ninePointCircle_reindex {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] {m n : β„•} (s : Simplex ℝ P n) (e : Fin (n + 1) ≃ Fin (m + 1)) :
    theorem Affine.Simplex.ninePointCircle_map {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] {Vβ‚‚ : Type u_3} {Pβ‚‚ : Type u_4} [NormedAddCommGroup Vβ‚‚] [InnerProductSpace ℝ Vβ‚‚] [MetricSpace Pβ‚‚] [NormedAddTorsor Vβ‚‚ Pβ‚‚] {n : β„•} (s : Simplex ℝ P n) (f : P →ᡃⁱ[ℝ] Pβ‚‚) :
    (s.map f.toAffineMap β‹―).ninePointCircle = { center := f s.ninePointCircle.center, radius := s.ninePointCircle.radius }
    noncomputable def Affine.Simplex.eulerPoint {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] {n : β„•} (s : Simplex ℝ P n) (i : Fin (n + 1)) :
    P

    Euler points are a set of points that the ninePointCircle passes through. They are defined as being $1/n$th of the way from the Monge point to a vertex. Specifically for triangles, these are the midpoints between the orthocenter and a given vertex (Affine.Triangle.eulerPoint_eq_midpoint).

    Instances For
      @[simp]
      theorem Affine.Simplex.eulerPoint_reindex {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] {m n : β„•} (s : Simplex ℝ P n) (e : Fin (n + 1) ≃ Fin (m + 1)) :
      (s.reindex e).eulerPoint = s.eulerPoint ∘ ⇑e.symm
      @[simp]
      theorem Affine.Simplex.eulerPoint_map {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] {Vβ‚‚ : Type u_3} {Pβ‚‚ : Type u_4} [NormedAddCommGroup Vβ‚‚] [InnerProductSpace ℝ Vβ‚‚] [MetricSpace Pβ‚‚] [NormedAddTorsor Vβ‚‚ Pβ‚‚] {n : β„•} (s : Simplex ℝ P n) (f : P →ᡃⁱ[ℝ] Pβ‚‚) (i : Fin (n + 1)) :
      (s.map f.toAffineMap β‹―).eulerPoint i = f (s.eulerPoint i)
      @[simp]
      theorem Affine.Simplex.eulerPoint_restrict {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] {n : β„•} (s : Simplex ℝ P n) (S : AffineSubspace ℝ P) (hS : affineSpan ℝ (Set.range s.points) ≀ S) (i : Fin (n + 1)) :
      ↑((s.restrict S hS).eulerPoint i) = s.eulerPoint i
      theorem Affine.Simplex.points_vsub_eulerPoint {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] {n : β„•} (s : Simplex ℝ P n) (i : Fin (n + 1)) :
      s.points i -α΅₯ s.eulerPoint i = ((↑n - 1) / ↑n) β€’ (s.points i -α΅₯ s.mongePoint)
      theorem Affine.Simplex.eulerPoint_mem_ninePointCircle {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] {n : β„•} [NeZero n] (s : Simplex ℝ P n) (i : Fin (n + 1)) :