Documentation

Mathlib.Geometry.Euclidean.Altitude

Altitudes of a simplex #

This file defines the altitudes of a simplex and their feet.

Main definitions #

References #

noncomputable def Affine.Simplex.altitude {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)) :

An altitude of a simplex is the line that passes through a vertex and is orthogonal to the opposite face.

Instances For

    The definition of an altitude.

    @[simp]
    theorem Affine.Simplex.altitude_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).altitude = s.altitude โˆ˜ โ‡‘e.symm
    theorem Affine.Simplex.mem_altitude {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.altitude i

    A vertex lies in the corresponding altitude.

    The direction of an altitude.

    The vector span of the opposite face lies in the direction orthogonal to an altitude.

    theorem Affine.Simplex.altitude_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)) :

    An altitude is finite-dimensional.

    @[simp]
    theorem Affine.Simplex.finrank_direction_altitude {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)) :

    An altitude is one-dimensional (i.e., a line).

    theorem Affine.Simplex.affineSpan_pair_eq_altitude_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) (i : Fin (n + 1)) (p : P) :
    affineSpan โ„ {p, s.points i} = s.altitude i โ†” p โ‰  s.points i โˆง p โˆˆ affineSpan โ„ (Set.range s.points) โˆง p -แตฅ s.points i โˆˆ (affineSpan โ„ (s.points '' {i}แถœ)).directionแ—ฎ

    A line through a vertex is the altitude through that vertex if and only if it is orthogonal to the opposite face.

    noncomputable def Affine.Simplex.altitudeFoot {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)) :
    P

    The foot of an altitude is the orthogonal projection of a vertex of a simplex onto the opposite face.

    Instances For
      @[simp]
      theorem Affine.Simplex.altitudeFoot_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)) :
      (s.reindex e).altitudeFoot = s.altitudeFoot โˆ˜ โ‡‘e.symm
      @[simp]
      theorem Affine.Simplex.altitudeFoot_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โ‚‚) (i : Fin (n + 1)) :
      (s.map f.toAffineMap โ‹ฏ).altitudeFoot i = f (s.altitudeFoot i)
      @[simp]
      theorem Affine.Simplex.altitudeFoot_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) (S : AffineSubspace โ„ P) (hS : affineSpan โ„ (Set.range s.points) โ‰ค S) (i : Fin (n + 1)) :
      โ†‘((s.restrict S hS).altitudeFoot i) = s.altitudeFoot i
      @[simp]
      theorem Affine.Simplex.ne_altitudeFoot {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)) :
      s.points i โ‰  s.altitudeFoot i
      @[simp]
      theorem Affine.Simplex.altitudeFoot_mem_affineSpan_image_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) (i : Fin (n + 1)) :
      theorem Affine.Simplex.altitudeFoot_mem_altitude {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)) :
      s.altitudeFoot i โˆˆ s.altitude i
      noncomputable def Affine.Simplex.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) (i : Fin (n + 1)) :

      The height of a vertex of a simplex is the distance between it and the foot of the altitude from that vertex.

      Instances For
        @[simp]
        theorem Affine.Simplex.height_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)) :
        (s.reindex e).height = s.height โˆ˜ โ‡‘e.symm
        @[simp]
        theorem Affine.Simplex.height_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โ‚‚) (i : Fin (n + 1)) :
        (s.map f.toAffineMap โ‹ฏ).height i = s.height i
        @[simp]
        theorem Affine.Simplex.height_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) (S : AffineSubspace โ„ P) (hS : affineSpan โ„ (Set.range s.points) โ‰ค S) (i : Fin (n + 1)) :
        (s.restrict S hS).height i = s.height i
        @[simp]
        theorem Affine.Simplex.height_pos {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)) :
        0 < s.height i

        Extension for the positivity tactic: the height of a simplex is always positive.

        Instances For
          @[simp]
          theorem Affine.Simplex.height_eq_dist {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] (s : Simplex โ„ P 1) (i : Fin 2) :
          s.height i = dist (s.points 0) (s.points 1)

          The height of a 1-dimensional simplex equals to the distance between the two vertices.

          theorem Affine.Simplex.inner_vsub_altitudeFoot_vsub_altitudeFoot_eq_zero {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} (s : Simplex โ„ P n) {i j : Fin (n + 1)} (h : i โ‰  j) :
          have this := โ‹ฏ; inner โ„ (s.points j -แตฅ s.altitudeFoot i) (s.points i -แตฅ s.altitudeFoot i) = 0

          Altitudes are perpendicular to the faces containing their foot.

          theorem Affine.Simplex.inner_vsub_vsub_altitudeFoot_eq_height_sq {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} (s : Simplex โ„ P n) [NeZero n] {i j : Fin (n + 1)} (h : i โ‰  j) :

          The inner product of an edge from j to i and the vector from the foot of i to i is the square of the height.

          theorem Affine.Simplex.abs_inner_vsub_altitudeFoot_lt_mul {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} (s : Simplex โ„ P n) [n.AtLeastTwo] {i j : Fin (n + 1)} (hij : i โ‰  j) :

          The inner product of two distinct altitudes has absolute value strictly less than the product of their lengths.

          Equivalently, neither vector is a multiple of the other; the angle between them is not 0 or ฯ€.

          The inner product of two altitudes has value strictly greater than the negated product of their lengths.

          theorem Affine.Simplex.abs_inner_vsub_altitudeFoot_div_lt_one {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace โ„ V] [MetricSpace P] [NormedAddTorsor V P] {n : โ„•} (s : Simplex โ„ P n) [n.AtLeastTwo] {i j : Fin (n + 1)} (hij : i โ‰  j) :