Documentation

Mathlib.Geometry.Euclidean.Incenter

Incenters and excenters of simplices. #

This file defines the insphere and exspheres of a simplex (tangent to the faces of the simplex), and the center and radius of such spheres.

The terms "exsphere", "excenter" and "exradius" are used in this file in a general sense where a Finset signs of indices is given that determine, up to negating all the signs, which vertices of the simplex lie on the same side of the opposite face as the excenter and which lie on the opposite side of that face. This includes the cases of the insphere, incenter and inradius, when signs is โˆ… (or univ); the insphere always exists. It also includes the case of an exsphere opposite a vertex, when signs is a singleton (or its complement), which always exists in two or more dimensions. In three or more dimensions, there are further possibilities for signs, and the corresponding excenters may or may not exist, depending on the choice of simplex. For convenience, the most common definitions exsphere, excenter and exradius have corresponding insphere, incenter and inradius definitions, and various lemmas are duplicated for the case of the insphere to avoid needing to pass an ExcenterExists hypothesis in that case. However, other definitions such as excenterWeights, touchpoint and touchpointWeights are not duplicated.

Main definitions #

References #

def Affine.Simplex.excenterWeightsUnnorm {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] (s : Simplex โ„ P n) (signs : Finset (Fin (n + 1))) (i : Fin (n + 1)) :

The unnormalized weights of the vertices in an affine combination that gives an excenter with signs determined by the given set of indices (for the empty set, this is the incenter; for a singleton set, this is the excenter opposite a vertex). An excenter with those signs exists if and only if the sum of these weights is nonzero (so the normalized weights sum to 1).

Equations
    Instances For
      @[simp]
      theorem Affine.Simplex.excenterWeightsUnnorm_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 : โ„•} [NeZero n] (s : Simplex โ„ P n) (f : P โ†’แตƒโฑ[โ„] Pโ‚‚) :

      Whether an excenter exists with a given choice of signs.

      Equations
        Instances For
          @[simp]
          theorem Affine.Simplex.excenterExists_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 : โ„•} [NeZero n] (s : Simplex โ„ P n) (f : P โ†’แตƒโฑ[โ„] Pโ‚‚) :
          def Affine.Simplex.excenterWeights {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] (s : Simplex โ„ P n) (signs : Finset (Fin (n + 1))) :
          Fin (n + 1) โ†’ โ„

          The normalized weights of the vertices in an affine combination that gives an excenter with signs determined by the given set of indices. An excenter with those signs exists if and only if the sum of these weights is 1.

          Equations
            Instances For
              @[simp]
              theorem Affine.Simplex.excenterWeights_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 : โ„•} [NeZero n] (s : Simplex โ„ P n) (f : P โ†’แตƒโฑ[โ„] Pโ‚‚) :
              theorem Affine.Simplex.ExcenterExists.excenterWeights_ne_zero {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] {s : Simplex โ„ P n} {signs : Finset (Fin (n + 1))} (h : s.ExcenterExists signs) (i : Fin (n + 1)) :
              theorem Affine.Simplex.sum_excenterWeights {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] (s : Simplex โ„ P n) (signs : Finset (Fin (n + 1))) [Decidable (s.ExcenterExists signs)] :
              โˆ‘ i : Fin (n + 1), s.excenterWeights signs i = if s.ExcenterExists signs then 1 else 0
              @[simp]
              theorem Affine.Simplex.sum_excenterWeights_eq_one_iff {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] (s : Simplex โ„ P n) {signs : Finset (Fin (n + 1))} :
              โˆ‘ i : Fin (n + 1), s.excenterWeights signs i = 1 โ†” s.ExcenterExists signs
              theorem Affine.Simplex.ExcenterExists.sum_excenterWeights_eq_one {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] (s : Simplex โ„ P n) {signs : Finset (Fin (n + 1))} :
              s.ExcenterExists signs โ†’ โˆ‘ i : Fin (n + 1), s.excenterWeights signs i = 1

              Alias of the reverse direction of Affine.Simplex.sum_excenterWeights_eq_one_iff.

              @[simp]

              The existence of the incenter, expressed in terms of ExcenterExists.

              The inverse of the distance from one vertex to the opposite face, expressed as a sum of multiples of that quantity for the other vertices. The multipliers, expressed here in terms of inner products, are equal to the cosines of angles between faces (informally, the inverse distances are proportional to the volumes of the faces and this is equivalent to expressing the volume of a face as the sum of the signed volumes of projections of the other faces onto that face).

              theorem Affine.Simplex.inv_height_lt_sum_inv_height {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] (s : Simplex โ„ P n) [n.AtLeastTwo] (i : Fin (n + 1)) :
              (s.height i)โปยน < โˆ‘ j : Fin (n + 1) with j โ‰  i, (s.height j)โปยน

              The inverse of the distance from one vertex to the opposite face is less than the sum of that quantity for the other vertices. This implies the existence of the excenter opposite that vertex; it also gives information about the location of the incenter (see excenterWeights_empty_lt_inv_two).

              The existence of the excenter opposite a vertex (in two or more dimensions), expressed in terms of ExcenterExists.

              The barycentric coordinates of the incenter are less than 2โปยน (thus, it lies closer on an angle bisector to the opposite side than to the vertex, or equivalently the image of the incenter under a homothety with scale factor 2 about a vertex lies outside the simplex).

              The exsphere with signs determined by the given set of indices (for the empty set, this is the insphere; for a singleton set, this is the exsphere opposite a vertex). This is only meaningful if s.ExcenterExists; otherwise, it is a sphere of radius zero at some arbitrary point.

              Equations
                Instances For
                  theorem Affine.Simplex.exsphere_reindex {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {m n : โ„•} [NeZero m] [NeZero n] (s : Simplex โ„ P n) (e : Fin (n + 1) โ‰ƒ Fin (m + 1)) (signs : Finset (Fin (m + 1))) :

                  The insphere of a simplex.

                  Equations
                    Instances For
                      def Affine.Simplex.excenter {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] (s : Simplex โ„ P n) (signs : Finset (Fin (n + 1))) :
                      P

                      The excenter with signs determined by the given set of indices (for the empty set, this is the incenter; for a singleton set, this is the excenter opposite a vertex). This is only meaningful if s.ExcenterExists signs; otherwise, it is some arbitrary point.

                      Equations
                        Instances For
                          theorem Affine.Simplex.excenter_reindex {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {m n : โ„•} [NeZero m] [NeZero n] (s : Simplex โ„ P n) (e : Fin (n + 1) โ‰ƒ Fin (m + 1)) (signs : Finset (Fin (m + 1))) :
                          @[simp]
                          theorem Affine.Simplex.ExcenterExists.excenter_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 : โ„•} [NeZero n] {s : Simplex โ„ P n} {signs : Finset (Fin (n + 1))} (h : s.ExcenterExists signs) (f : P โ†’แตƒโฑ[โ„] Pโ‚‚) :
                          (s.map f.toAffineMap โ‹ฏ).excenter signs = f (s.excenter signs)

                          The incenter of a simplex.

                          Equations
                            Instances For
                              @[simp]
                              theorem Affine.Simplex.incenter_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 : โ„•} [NeZero n] (s : Simplex โ„ P n) (f : P โ†’แตƒโฑ[โ„] Pโ‚‚) :
                              (s.map f.toAffineMap โ‹ฏ).incenter = f s.incenter
                              def Affine.Simplex.exradius {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] (s : Simplex โ„ P n) (signs : Finset (Fin (n + 1))) :

                              The distance between an excenter and a face of the simplex (zero if no such excenter exists).

                              Equations
                                Instances For
                                  theorem Affine.Simplex.exradius_reindex {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {m n : โ„•} [NeZero m] [NeZero n] (s : Simplex โ„ P n) (e : Fin (n + 1) โ‰ƒ Fin (m + 1)) (signs : Finset (Fin (m + 1))) :
                                  @[simp]
                                  theorem Affine.Simplex.exradius_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 : โ„•} [NeZero n] (s : Simplex โ„ P n) (f : P โ†’แตƒโฑ[โ„] Pโ‚‚) :
                                  (s.map f.toAffineMap โ‹ฏ).exradius = s.exradius

                                  The distance between the incenter and a face of the simplex.

                                  Equations
                                    Instances For
                                      @[simp]
                                      theorem Affine.Simplex.inradius_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 : โ„•} [NeZero n] (s : Simplex โ„ P n) (f : P โ†’แตƒโฑ[โ„] Pโ‚‚) :
                                      (s.map f.toAffineMap โ‹ฏ).inradius = s.inradius
                                      @[simp]
                                      theorem Affine.Simplex.exsphere_center {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] (s : Simplex โ„ P n) (signs : Finset (Fin (n + 1))) :
                                      (s.exsphere signs).center = s.excenter signs
                                      @[simp]
                                      theorem Affine.Simplex.exsphere_radius {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] (s : Simplex โ„ P n) (signs : Finset (Fin (n + 1))) :
                                      (s.exsphere signs).radius = s.exradius signs
                                      @[simp]
                                      theorem Affine.Simplex.exsphere_compl {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] (s : Simplex โ„ P n) (signs : Finset (Fin (n + 1))) :
                                      s.exsphere signsแถœ = s.exsphere signs
                                      @[simp]
                                      theorem Affine.Simplex.excenter_compl {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] (s : Simplex โ„ P n) (signs : Finset (Fin (n + 1))) :
                                      s.excenter signsแถœ = s.excenter signs
                                      @[simp]
                                      theorem Affine.Simplex.exradius_compl {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] (s : Simplex โ„ P n) (signs : Finset (Fin (n + 1))) :
                                      s.exradius signsแถœ = s.exradius signs
                                      theorem Affine.Simplex.ExcenterExists.signedInfDist_excenter_eq_mul_sum_inv {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] {s : Simplex โ„ P n} {signs : Finset (Fin (n + 1))} (h : s.ExcenterExists signs) (i : Fin (n + 1)) :
                                      (s.signedInfDist i) (s.excenter signs) = (if i โˆˆ signs then -1 else 1) * (โˆ‘ j : Fin (n + 1), s.excenterWeightsUnnorm signs j)โปยน
                                      theorem Affine.Simplex.ExcenterExists.affineCombination_eq_excenter_iff {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] {s : Simplex โ„ P n} {signs : Finset (Fin (n + 1))} (h : s.ExcenterExists signs) {w : Fin (n + 1) โ†’ โ„} (hw : โˆ‘ j : Fin (n + 1), w j = 1) :
                                      theorem Affine.Simplex.ExcenterExists.excenter_notMem_affineSpan_face {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] {s : Simplex โ„ P n} {signs : Finset (Fin (n + 1))} (h : s.ExcenterExists signs) {fs : Finset (Fin (n + 1))} {m : โ„•} (hfs : fs.card = m + 1) (hne : m โ‰  n) :
                                      s.excenter signs โˆ‰ affineSpan โ„ (Set.range (s.face hfs).points)
                                      theorem Affine.Simplex.ExcenterExists.excenter_ne_point {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] {s : Simplex โ„ P n} {signs : Finset (Fin (n + 1))} (h : s.ExcenterExists signs) (i : Fin (n + 1)) :
                                      s.excenter signs โ‰  s.points i
                                      theorem Affine.Simplex.ExcenterExists.excenterWeights_eq_excenterWeights_iff {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] {s : Simplex โ„ P n} {signsโ‚ signsโ‚‚ : Finset (Fin (n + 1))} (hโ‚ : s.ExcenterExists signsโ‚) (hโ‚‚ : s.ExcenterExists signsโ‚‚) :
                                      s.excenterWeights signsโ‚ = s.excenterWeights signsโ‚‚ โ†” signsโ‚ = signsโ‚‚ โˆจ signsโ‚ = signsโ‚‚แถœ
                                      theorem Affine.Simplex.ExcenterExists.excenter_eq_excenter_iff {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] {s : Simplex โ„ P n} {signsโ‚ signsโ‚‚ : Finset (Fin (n + 1))} (hโ‚ : s.ExcenterExists signsโ‚) (hโ‚‚ : s.ExcenterExists signsโ‚‚) :
                                      s.excenter signsโ‚ = s.excenter signsโ‚‚ โ†” signsโ‚ = signsโ‚‚ โˆจ signsโ‚ = signsโ‚‚แถœ
                                      def Affine.Simplex.touchpoint {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] (s : Simplex โ„ P n) (signs : Finset (Fin (n + 1))) (i : Fin (n + 1)) :
                                      P

                                      A touchpoint is where an exsphere of a simplex is tangent to one of the faces.

                                      Equations
                                        Instances For
                                          theorem Affine.Simplex.touchpoint_reindex {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {m n : โ„•} [NeZero m] [NeZero n] (s : Simplex โ„ P n) (e : Fin (n + 1) โ‰ƒ Fin (m + 1)) (signs : Finset (Fin (m + 1))) (i : Fin (m + 1)) :
                                          (s.reindex e).touchpoint signs i = s.touchpoint (Finset.map e.symm.toEmbedding signs) (e.symm i)
                                          @[simp]
                                          theorem Affine.Simplex.ExcenterExists.touchpoint_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 : โ„•} [NeZero n] {s : Simplex โ„ P n} {signs : Finset (Fin (n + 1))} (h : s.ExcenterExists signs) (f : P โ†’แตƒโฑ[โ„] Pโ‚‚) (i : Fin (n + 1)) :
                                          (s.map f.toAffineMap โ‹ฏ).touchpoint signs i = f (s.touchpoint signs i)
                                          @[simp]
                                          theorem Affine.Simplex.ExcenterExists.touchpoint_restrict {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] {s : Simplex โ„ P n} {signs : Finset (Fin (n + 1))} (h : s.ExcenterExists signs) (S : AffineSubspace โ„ P) (hS : affineSpan โ„ (Set.range s.points) โ‰ค S) (i : Fin (n + 1)) :
                                          โ†‘((s.restrict S hS).touchpoint signs i) = s.touchpoint signs i
                                          theorem Affine.Simplex.ExcenterExists.signedInfDist_excenter {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] {s : Simplex โ„ P n} {signs : Finset (Fin (n + 1))} (h : s.ExcenterExists signs) (i : Fin (n + 1)) :
                                          (s.signedInfDist i) (s.excenter signs) = (if i โˆˆ signs then -1 else 1) * โ†‘(SignType.sign (โˆ‘ j : Fin (n + 1), s.excenterWeightsUnnorm signs j)) * s.exradius signs

                                          The signed distance between the excenter and its projection in the plane of each face is the exradius.

                                          The signed distance between the incenter and its projection in the plane of each face is the inradius.

                                          In other words, the incenter is internally tangent to the faces.

                                          theorem Affine.Simplex.ExcenterExists.dist_excenter {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] {s : Simplex โ„ P n} {signs : Finset (Fin (n + 1))} (h : s.ExcenterExists signs) (i : Fin (n + 1)) :
                                          dist (s.excenter signs) (s.touchpoint signs i) = s.exradius signs

                                          The distance between the excenter and its projection in the plane of each face is the exradius.

                                          The distance between the incenter and its projection in the plane of each face is the inradius.

                                          theorem Affine.Simplex.ExcenterExists.dist_excenter_eq_dist_excenter {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] {s : Simplex โ„ P n} {signs : Finset (Fin (n + 1))} (h : s.ExcenterExists signs) (iโ‚ iโ‚‚ : Fin (n + 1)) :
                                          dist (s.excenter signs) (s.touchpoint signs iโ‚) = dist (s.excenter signs) (s.touchpoint signs iโ‚‚)

                                          An excenter is equidistant to any two of its touchpoints.

                                          theorem Affine.Simplex.dist_incenter_eq_dist_incenter {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โ‚ iโ‚‚ : Fin (n + 1)) :

                                          The incenter is equidistant to any two of its touchpoints.

                                          def Affine.Simplex.touchpointWeights {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] (s : Simplex โ„ P n) (signs : Finset (Fin (n + 1))) (i : Fin (n + 1)) :
                                          Fin (n + 1) โ†’ โ„

                                          The unique weights of the vertices in an affine combination equal to the given touchpoint.

                                          Equations
                                            Instances For
                                              @[simp]
                                              theorem Affine.Simplex.sum_touchpointWeights {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] (s : Simplex โ„ P n) (signs : Finset (Fin (n + 1))) (i : Fin (n + 1)) :
                                              โˆ‘ j : Fin (n + 1), s.touchpointWeights signs i j = 1
                                              @[simp]
                                              theorem Affine.Simplex.affineCombination_eq_touchpoint_iff {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] {s : Simplex โ„ P n} {signs : Finset (Fin (n + 1))} {i : Fin (n + 1)} {w : Fin (n + 1) โ†’ โ„} (hw : โˆ‘ j : Fin (n + 1), w j = 1) :
                                              theorem Affine.Simplex.touchpointWeights_reindex {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {m n : โ„•} [NeZero m] [NeZero n] (s : Simplex โ„ P n) (e : Fin (n + 1) โ‰ƒ Fin (m + 1)) (signs : Finset (Fin (m + 1))) (i : Fin (m + 1)) :
                                              @[simp]
                                              theorem Affine.Simplex.ExcenterExists.touchpointWeights_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 : โ„•} [NeZero n] {s : Simplex โ„ P n} {signs : Finset (Fin (n + 1))} (h : s.ExcenterExists signs) (f : P โ†’แตƒโฑ[โ„] Pโ‚‚) :
                                              (s.map f.toAffineMap โ‹ฏ).touchpointWeights signs = s.touchpointWeights signs
                                              @[simp]
                                              theorem Affine.Simplex.touchpointWeights_eq_zero {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] {s : Simplex โ„ P n} {signs : Finset (Fin (n + 1))} (i : Fin (n + 1)) :
                                              s.touchpointWeights signs i i = 0
                                              theorem Affine.Simplex.ExcenterExists.touchpoint_ne_point {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} [NeZero n] {s : Simplex โ„ P n} [n.AtLeastTwo] {signs : Finset (Fin (n + 1))} (h : s.ExcenterExists signs) (i j : Fin (n + 1)) :
                                              s.touchpoint signs i โ‰  s.points j

                                              All excenters exist for a triangle.

                                              An excenter of a triangle is either the incenter or the excenter opposite a vertex.

                                              theorem Affine.Triangle.excenter_eq_incenter_or_excenter_singleton_of_ne {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] (t : Triangle โ„ P) (signs : Finset (Fin 3)) {iโ‚ iโ‚‚ iโ‚ƒ : Fin 3} (hโ‚โ‚‚ : iโ‚ โ‰  iโ‚‚) (hโ‚โ‚ƒ : iโ‚ โ‰  iโ‚ƒ) (hโ‚‚โ‚ƒ : iโ‚‚ โ‰  iโ‚ƒ) :

                                              An excenter of a triangle is either the incenter or the excenter opposite one of three enumerated different vertices. This is intended for when it is known a point is an excenter and it is to be proved which excenter it is by elimination of the other cases.

                                              theorem Affine.Triangle.sSameSide_affineSpan_pair_incenter_point {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] (t : Triangle โ„ P) {iโ‚ iโ‚‚ iโ‚ƒ : Fin 3} (hโ‚โ‚‚ : iโ‚ โ‰  iโ‚‚) (hโ‚โ‚ƒ : iโ‚ โ‰  iโ‚ƒ) (hโ‚‚โ‚ƒ : iโ‚‚ โ‰  iโ‚ƒ) :
                                              (affineSpan โ„ {t.points iโ‚‚, t.points iโ‚ƒ}).SSameSide (Simplex.incenter t) (t.points iโ‚)
                                              theorem Affine.Triangle.sSameSide_affineSpan_pair_point_incenter {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] (t : Triangle โ„ P) {iโ‚ iโ‚‚ iโ‚ƒ : Fin 3} (hโ‚โ‚‚ : iโ‚ โ‰  iโ‚‚) (hโ‚โ‚ƒ : iโ‚ โ‰  iโ‚ƒ) (hโ‚‚โ‚ƒ : iโ‚‚ โ‰  iโ‚ƒ) :
                                              (affineSpan โ„ {t.points iโ‚‚, t.points iโ‚ƒ}).SSameSide (t.points iโ‚) (Simplex.incenter t)
                                              theorem Affine.Triangle.sOppSide_affineSpan_pair_excenter_singleton_point {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] (t : Triangle โ„ P) {iโ‚ iโ‚‚ iโ‚ƒ : Fin 3} (hโ‚โ‚‚ : iโ‚ โ‰  iโ‚‚) (hโ‚โ‚ƒ : iโ‚ โ‰  iโ‚ƒ) (hโ‚‚โ‚ƒ : iโ‚‚ โ‰  iโ‚ƒ) :
                                              (affineSpan โ„ {t.points iโ‚‚, t.points iโ‚ƒ}).SOppSide (Simplex.excenter t {iโ‚}) (t.points iโ‚)
                                              theorem Affine.Triangle.sOppSide_affineSpan_pair_point_excenter_singleton {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] (t : Triangle โ„ P) {iโ‚ iโ‚‚ iโ‚ƒ : Fin 3} (hโ‚โ‚‚ : iโ‚ โ‰  iโ‚‚) (hโ‚โ‚ƒ : iโ‚ โ‰  iโ‚ƒ) (hโ‚‚โ‚ƒ : iโ‚‚ โ‰  iโ‚ƒ) :
                                              (affineSpan โ„ {t.points iโ‚‚, t.points iโ‚ƒ}).SOppSide (t.points iโ‚) (Simplex.excenter t {iโ‚})
                                              theorem Affine.Triangle.sSameSide_affineSpan_pair_excenter_singleton_point {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] (t : Triangle โ„ P) {iโ‚ iโ‚‚ iโ‚ƒ : Fin 3} (hโ‚โ‚‚ : iโ‚ โ‰  iโ‚‚) (hโ‚โ‚ƒ : iโ‚ โ‰  iโ‚ƒ) (hโ‚‚โ‚ƒ : iโ‚‚ โ‰  iโ‚ƒ) :
                                              (affineSpan โ„ {t.points iโ‚‚, t.points iโ‚ƒ}).SSameSide (Simplex.excenter t {iโ‚‚}) (t.points iโ‚)
                                              theorem Affine.Triangle.sSameSide_affineSpan_pair_point_excenter_singleton {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] (t : Triangle โ„ P) {iโ‚ iโ‚‚ iโ‚ƒ : Fin 3} (hโ‚โ‚‚ : iโ‚ โ‰  iโ‚‚) (hโ‚โ‚ƒ : iโ‚ โ‰  iโ‚ƒ) (hโ‚‚โ‚ƒ : iโ‚‚ โ‰  iโ‚ƒ) :
                                              (affineSpan โ„ {t.points iโ‚‚, t.points iโ‚ƒ}).SSameSide (t.points iโ‚) (Simplex.excenter t {iโ‚‚})
                                              theorem Affine.Triangle.affineSpan_pair_eq_orthRadius {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] (t : Triangle โ„ P) [Fact (Module.finrank โ„ V = 2)] (signs : Finset (Fin 3)) {iโ‚ iโ‚‚ iโ‚ƒ : Fin 3} (hโ‚โ‚‚ : iโ‚ โ‰  iโ‚‚) (hโ‚โ‚ƒ : iโ‚ โ‰  iโ‚ƒ) (hโ‚‚โ‚ƒ : iโ‚‚ โ‰  iโ‚ƒ) :
                                              affineSpan โ„ {t.points iโ‚‚, t.points iโ‚ƒ} = (Simplex.exsphere t signs).orthRadius (Simplex.touchpoint t signs iโ‚)
                                              theorem Affine.Triangle.affineSpan_pair_eq_orthRadius_insphere {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] (t : Triangle โ„ P) [Fact (Module.finrank โ„ V = 2)] {iโ‚ iโ‚‚ iโ‚ƒ : Fin 3} (hโ‚โ‚‚ : iโ‚ โ‰  iโ‚‚) (hโ‚โ‚ƒ : iโ‚ โ‰  iโ‚ƒ) (hโ‚‚โ‚ƒ : iโ‚‚ โ‰  iโ‚ƒ) :
                                              theorem Affine.Triangle.sbtw_touchpoint_empty {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] (t : Triangle โ„ P) {iโ‚ iโ‚‚ iโ‚ƒ : Fin 3} (hโ‚โ‚‚ : iโ‚ โ‰  iโ‚‚) (hโ‚โ‚ƒ : iโ‚ โ‰  iโ‚ƒ) (hโ‚‚โ‚ƒ : iโ‚‚ โ‰  iโ‚ƒ) :
                                              Sbtw โ„ (t.points iโ‚) (Simplex.touchpoint t โˆ… iโ‚‚) (t.points iโ‚ƒ)
                                              theorem Affine.Triangle.sbtw_touchpoint_singleton {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] (t : Triangle โ„ P) {iโ‚ iโ‚‚ iโ‚ƒ : Fin 3} (hโ‚โ‚‚ : iโ‚ โ‰  iโ‚‚) (hโ‚โ‚ƒ : iโ‚ โ‰  iโ‚ƒ) (hโ‚‚โ‚ƒ : iโ‚‚ โ‰  iโ‚ƒ) :
                                              Sbtw โ„ (t.points iโ‚) (Simplex.touchpoint t {iโ‚‚} iโ‚‚) (t.points iโ‚ƒ)
                                              theorem Affine.Triangle.touchpoint_singleton_sbtw {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] (t : Triangle โ„ P) {iโ‚ iโ‚‚ iโ‚ƒ : Fin 3} (hโ‚โ‚‚ : iโ‚ โ‰  iโ‚‚) (hโ‚โ‚ƒ : iโ‚ โ‰  iโ‚ƒ) (hโ‚‚โ‚ƒ : iโ‚‚ โ‰  iโ‚ƒ) :
                                              Sbtw โ„ (Simplex.touchpoint t {iโ‚} iโ‚‚) (t.points iโ‚ƒ) (t.points iโ‚)