Documentation

EuclideanGeometry.Foundation.Axiom.Basic.Angle

Angle Conversions #

Recall in Euclidean Geometry, the measure of angle is subtle. The measure of an angle can be treated as a number in ℝ⧸2π, (- π, π], [0, 2π), ℝ⧸π, or even [0, π] (after taking abs). Each of them has their own suitable applications.

In this file, we define suitable coversion function between ℝ⧸2π,ℝ⧸π and (- π, π]. Starting from Dir.toAngValue, we convert Dir to AngValue. We shall primarily use ℝ/2π, and gives coercion and compatibility theorems with respect to ℝ⧸π and (- π, π].

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    theorem EuclidGeom.AngDValue.coe_def (x : ) :
    ∠[x] = x
    @[simp]

    An induction principle to deduce results for AngDValue from those for , used with induction θ using AngDValue.induction_on.

    @[simp]
    @[simp]
    theorem EuclidGeom.AngDValue.coe_add_coe (x : ) (y : ) :
    (∠[x] + ∠[y]) = ∠[x] + ∠[y]
    @[simp]
    theorem EuclidGeom.AngDValue.coe_neg_coe (x : ) :
    (-∠[x]) = -∠[x]
    @[simp]
    theorem EuclidGeom.AngDValue.coe_sub_coe (x : ) (y : ) :
    (∠[x] - ∠[y]) = ∠[x] - ∠[y]
    @[simp]
    theorem EuclidGeom.AngDValue.coe_nsmul_coe (n : ) (x : ) :
    (n ∠[x]) = n ∠[x]
    @[simp]
    theorem EuclidGeom.AngDValue.coe_zsmul_coe (z : ) (x : ) :
    (z ∠[x]) = z ∠[x]
    @[simp]
    @[simp]
    @[simp]
    theorem EuclidGeom.AngDValue.coe_nsmul (n : ) (x : EuclidGeom.AngValue) :
    (n x) = n x
    @[simp]
    theorem EuclidGeom.AngDValue.coe_zsmul (z : ) (x : EuclidGeom.AngValue) :
    (z x) = z x
    theorem EuclidGeom.AngDValue.eq_iff_pi_dvd_sub {ψ : } {θ : } :
    ∠[θ] = ∠[ψ] ∃ (k : ), θ - ψ = Real.pi * k
    @[simp]
    @[simp]
    @[simp]
    @[simp]
    theorem EuclidGeom.AngDValue.two_nsmul_coe_div_two (θ : ) :
    2 ∠[θ / 2] = ∠[θ]
    @[simp]
    theorem EuclidGeom.AngDValue.two_zsmul_coe_div_two (θ : ) :
    2 ∠[θ / 2] = ∠[θ]
    theorem EuclidGeom.AngValue.coe_eq_coe_iff {θ₁ : EuclidGeom.AngValue} {θ₂ : EuclidGeom.AngValue} :
    θ₁ = θ₂ θ₁ = θ₂ θ₁ = θ₂ + ∠[Real.pi]
    theorem EuclidGeom.AngValue.coe_eq_coe_iff_two_nsmul_eq {θ₁ : EuclidGeom.AngValue} {θ₂ : EuclidGeom.AngValue} :
    θ₁ = θ₂ 2 θ₁ = 2 θ₂
    @[simp]
    theorem EuclidGeom.AngValue.coe_add_pi {θ : EuclidGeom.AngValue} :
    (θ + ∠[Real.pi]) = θ
    @[inline, reducible]
    abbrev EuclidGeom.AngDValue.lift {α : Sort u_1} (f : EuclidGeom.AngValueα) (hf : ∀ (θ : EuclidGeom.AngValue), f (θ + ∠[Real.pi]) = f θ) :
    Equations
    Instances For
      Equations
      • One or more equations did not get rendered due to their size.
      Instances For

        The canonical map from to the quotient AngValue.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For

          Delaborator for AngValue.coe

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem EuclidGeom.AngValue.eq_coe_of_toReal_eq {θ : EuclidGeom.AngValue} {x : } (h : θ.toReal = x) :
              θ = ∠[x]
              @[simp]
              theorem EuclidGeom.AngValue.toReal_coe_eq_self {r : } (h₁ : -Real.pi < r) (h₂ : r Real.pi) :
              ∠[r].toReal = r
              theorem EuclidGeom.AngValue.coe_eq_iff {r : } {s : } :
              ∠[r] = ∠[s] ∃ (k : ), r - s = k * (2 * Real.pi)
              theorem EuclidGeom.AngValue.toReal_coe_eq_self_add_two_mul_int_mul_pi (r : ) :
              ∃ (k : ), ∠[r].toReal = r + k * (2 * Real.pi)
              theorem EuclidGeom.AngValue.coe_eq_of_add_two_mul_int_mul_pi {r₁ : } {r₂ : } (k : ) (h : r₁ = r₂ + k * (2 * Real.pi)) :
              ∠[r₁] = ∠[r₂]
              @[simp]
              theorem EuclidGeom.AngValue.add_two_pi (x : ) :
              ∠[x + 2 * Real.pi] = ∠[x]
              @[simp]
              theorem EuclidGeom.AngValue.sub_two_pi (x : ) :
              ∠[x - 2 * Real.pi] = ∠[x]
              @[simp]
              theorem EuclidGeom.AngValue.neg_toReal {θ : EuclidGeom.AngValue} (h : θ ∠[Real.pi]) :
              (-θ).toReal = -θ.toReal
              @[simp]
              @[simp]

              An angle is positive if it is strictly between 0 and π.

              Equations
              Instances For

                An angle is negative if it is strictly between - π and 0.

                Equations
                Instances For

                  An angle is non-degenerate if it is not 0 or π.

                  Instances For
                    theorem EuclidGeom.AngValue.isND_of_isPos {θ : EuclidGeom.AngValue} (h : θ.IsPos) :
                    θ.IsND
                    theorem EuclidGeom.AngValue.isND_of_isNeg {θ : EuclidGeom.AngValue} (h : θ.IsNeg) :
                    θ.IsND
                    theorem EuclidGeom.AngValue.toReal_pos_of_isPos {θ : EuclidGeom.AngValue} (h : θ.IsPos) :
                    0 < θ.toReal
                    theorem EuclidGeom.AngValue.toReal_neg_of_isNeg {θ : EuclidGeom.AngValue} (h : θ.IsNeg) :
                    θ.toReal < 0
                    theorem EuclidGeom.AngValue.isPos_of_toReal_pos_of_ne_pi {θ : EuclidGeom.AngValue} (h : 0 < θ.toReal) (hn : θ ∠[Real.pi]) :
                    θ.IsPos
                    theorem EuclidGeom.AngValue.isNeg_of_toReal_pos {θ : EuclidGeom.AngValue} (h : θ.toReal < 0) :
                    θ.IsNeg
                    theorem EuclidGeom.AngValue.isPos_iff {θ : EuclidGeom.AngValue} :
                    θ.IsPos 0 < θ.toReal θ.toReal < Real.pi
                    theorem EuclidGeom.AngValue.not_isPos_iff {θ : EuclidGeom.AngValue} :
                    ¬θ.IsPos θ.toReal 0 θ.toReal = Real.pi
                    theorem EuclidGeom.AngValue.isNeg_iff {θ : EuclidGeom.AngValue} :
                    θ.IsNeg θ.toReal < 0
                    theorem EuclidGeom.AngValue.isND_iff' {θ : EuclidGeom.AngValue} :
                    θ.IsND θ.toReal 0 θ.toReal Real.pi
                    theorem EuclidGeom.AngValue.not_isND_iff' {θ : EuclidGeom.AngValue} :
                    ¬θ.IsND θ.toReal = 0 θ.toReal = Real.pi
                    @[simp]
                    @[simp]
                    @[simp]
                    theorem EuclidGeom.AngValue.ne_neg_of_isPos {θ : EuclidGeom.AngValue} {ψ : EuclidGeom.AngValue} (hs : θ.IsPos) (hp : ψ.IsPos) :
                    θ -ψ
                    theorem EuclidGeom.AngValue.ne_neg_of_isNeg {θ : EuclidGeom.AngValue} {ψ : EuclidGeom.AngValue} (hs : θ.IsNeg) (hp : ψ.IsNeg) :
                    θ -ψ
                    theorem EuclidGeom.AngValue.coe_isPos_of_zero_lt_self_lt_pi {x : } (h0 : 0 < x) (hp : x < Real.pi) :
                    ∠[x].IsPos
                    theorem EuclidGeom.AngValue.coe_isNeg_of_neg_pi_lt_self_lt_zero {x : } (hp : -Real.pi < x) (h0 : x < 0) :
                    ∠[x].IsNeg
                    @[simp]
                    @[simp]
                    @[simp]
                    theorem EuclidGeom.AngValue.ne_add_pi_of_isPos {θ : EuclidGeom.AngValue} {ψ : EuclidGeom.AngValue} (hs : θ.IsPos) (hp : ψ.IsPos) :
                    θ ψ + ∠[Real.pi]
                    theorem EuclidGeom.AngValue.eq_of_isPos_of_two_nsmul_eq {θ : EuclidGeom.AngValue} {ψ : EuclidGeom.AngValue} (hs : θ.IsPos) (hp : ψ.IsPos) (h : 2 θ = 2 ψ) :
                    θ = ψ
                    theorem EuclidGeom.AngValue.eq_of_isPos_of_coe_eq {θ : EuclidGeom.AngValue} {ψ : EuclidGeom.AngValue} (hs : θ.IsPos) (hp : ψ.IsPos) (h : θ = ψ) :
                    θ = ψ
                    theorem EuclidGeom.AngValue.ne_add_pi_of_isNeg {θ : EuclidGeom.AngValue} {ψ : EuclidGeom.AngValue} (hs : θ.IsNeg) (hp : ψ.IsNeg) :
                    θ ψ + ∠[Real.pi]
                    theorem EuclidGeom.AngValue.eq_of_isNeg_of_two_nsmul_eq {θ : EuclidGeom.AngValue} {ψ : EuclidGeom.AngValue} (hs : θ.IsNeg) (hp : ψ.IsNeg) (h : 2 θ = 2 ψ) :
                    θ = ψ
                    theorem EuclidGeom.AngValue.eq_of_isNeg_of_coe_eq {θ : EuclidGeom.AngValue} {ψ : EuclidGeom.AngValue} (hs : θ.IsNeg) (hp : ψ.IsNeg) (h : θ = ψ) :
                    θ = ψ
                    @[simp]
                    @[simp]
                    @[simp]

                    An angle is acute if it is strictly between - π / 2 and π / 2.

                    Equations
                    Instances For

                      An angle is obtuse if it is strictly between π / 2 and - π / 2.

                      Equations
                      Instances For

                        An angle is right if it is - π / 2 or π / 2.

                        Equations
                        Instances For
                          theorem EuclidGeom.AngValue.isRt_iff {θ : EuclidGeom.AngValue} :
                          θ.IsRt θ = ∠[Real.pi / 2] θ = ∠[-Real.pi / 2]
                          theorem EuclidGeom.AngValue.isAcu_or_isNeg_of_isRt {θ : EuclidGeom.AngValue} (h : ¬θ.IsRt) :
                          θ.IsAcu θ.IsObt
                          theorem EuclidGeom.AngValue.isObt_iff {θ : EuclidGeom.AngValue} :
                          θ.IsObt θ.toReal < -Real.pi / 2 Real.pi / 2 < θ.toReal
                          theorem EuclidGeom.AngValue.isRt_iff' {θ : EuclidGeom.AngValue} :
                          θ.IsRt θ.toReal = -Real.pi / 2 θ.toReal = Real.pi / 2
                          theorem EuclidGeom.AngValue.isAcu_iff {θ : EuclidGeom.AngValue} :
                          θ.IsAcu -Real.pi / 2 < θ.toReal θ.toReal < Real.pi / 2
                          @[simp]
                          @[simp]
                          @[simp]
                          @[simp]
                          @[simp]
                          @[simp]
                          theorem EuclidGeom.AngValue.ne_add_pi_of_isAcu {θ : EuclidGeom.AngValue} {ψ : EuclidGeom.AngValue} (hs : θ.IsAcu) (hp : ψ.IsAcu) :
                          θ ψ + ∠[Real.pi]
                          theorem EuclidGeom.AngValue.eq_of_isAcu_of_two_nsmul_eq {θ : EuclidGeom.AngValue} {ψ : EuclidGeom.AngValue} (hs : θ.IsAcu) (hp : ψ.IsAcu) (h : 2 θ = 2 ψ) :
                          θ = ψ
                          theorem EuclidGeom.AngValue.eq_of_isAcu_of_coe_eq {θ : EuclidGeom.AngValue} {ψ : EuclidGeom.AngValue} (hs : θ.IsAcu) (hp : ψ.IsAcu) (h : θ = ψ) :
                          θ = ψ
                          theorem EuclidGeom.AngValue.ne_add_pi_of_isObt {θ : EuclidGeom.AngValue} {ψ : EuclidGeom.AngValue} (hs : θ.IsObt) (hp : ψ.IsObt) :
                          θ ψ + ∠[Real.pi]
                          theorem EuclidGeom.AngValue.eq_of_isObt_of_two_nsmul_eq {θ : EuclidGeom.AngValue} {ψ : EuclidGeom.AngValue} (hs : θ.IsObt) (hp : ψ.IsObt) (h : 2 θ = 2 ψ) :
                          θ = ψ
                          theorem EuclidGeom.AngValue.eq_of_isObt_of_coe_eq {θ : EuclidGeom.AngValue} {ψ : EuclidGeom.AngValue} (hs : θ.IsObt) (hp : ψ.IsObt) (h : θ = ψ) :
                          θ = ψ
                          @[simp]
                          @[simp]
                          @[simp]
                          theorem EuclidGeom.AngValue.add_ne_pi_of_isAcu {θ : EuclidGeom.AngValue} {ψ : EuclidGeom.AngValue} (hs : θ.IsAcu) (hp : ψ.IsAcu) :
                          θ + ψ ∠[Real.pi]
                          theorem EuclidGeom.AngValue.add_ne_pi_of_isObt {θ : EuclidGeom.AngValue} {ψ : EuclidGeom.AngValue} (hs : θ.IsObt) (hp : ψ.IsObt) :
                          θ + ψ ∠[Real.pi]
                          theorem EuclidGeom.AngValue.eq_pi_div_two_of_isRt_of_isPos {θ : EuclidGeom.AngValue} (hr : θ.IsRt) (h : ¬θ.IsNeg) :
                          θ = ∠[Real.pi / 2]
                          theorem EuclidGeom.AngValue.eq_zero_of_not_isND_of_isAcu {θ : EuclidGeom.AngValue} (hr : ¬θ.IsND) (h : θ.IsAcu) :
                          θ = 0
                          theorem EuclidGeom.AngValue.eq_pi_of_not_isND_of_isObt {θ : EuclidGeom.AngValue} (hr : ¬θ.IsND) (h : θ.IsObt) :
                          θ = ∠[Real.pi]

                          The absolute value of an angle $θ$ is the absolute value of $θ.toReal$.

                          Equations
                          Instances For
                            theorem EuclidGeom.AngValue.eq_or_eq_neg_of_isRt {θ : EuclidGeom.AngValue} {ψ : EuclidGeom.AngValue} (hs : θ.IsRt) (hp : ψ.IsRt) :
                            θ = ψ θ = -ψ

                            The absolute value of an angle is equal to its norm.

                            Half of an angle. Note that there are two possible values when dividing by two in AngValue (their difference is π). We choose the acute angle as the canonical value for half of an angle for angles not equal to π, and the half of π is defined as π / 2.

                            Equations
                            Instances For
                              theorem EuclidGeom.AngValue.coe_half {x : } (hn : -Real.pi < x) (h : x Real.pi) :
                              EuclidGeom.AngValue.half ∠[x] = ∠[x / 2]