Skip to content

Commit 0c44846

Browse files
committed
feat(Geometry/Euclidean/Angle): add the Alternate segment theorem
1 parent 88d006a commit 0c44846

1 file changed

Lines changed: 22 additions & 0 deletions

File tree

Mathlib/Geometry/Euclidean/Angle/Sphere.lean

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,28 @@ theorem two_zsmul_oangle_center_add_two_zsmul_oangle_eq_pi {s : Sphere P} {p₁
227227
rw [← oangle_center_eq_two_zsmul_oangle hp₁ hp₂ hp₃ hp₂p₁ hp₂p₃,
228228
oangle_eq_pi_sub_two_zsmul_oangle_center_right hp₁ hp₃ hp₁p₃, add_sub_cancel]
229229

230+
/-- **Alternate segment theorem**: Oriented angle version of "the angle between a tangent and
231+
a chord equals the inscribed angle subtending that chord", for oriented angles mod π,
232+
represented here as equality of twice the angles. -/
233+
theorem two_zsmul_oangle_tangent_eq {s : Sphere P} {p₁ p₂ p₃ p₄ : P} (hp₁ : p₁ ∈ s) (hp₂ : p₂ ∈ s)
234+
(hp₃ : p₃ ∈ s) (htan : s.IsTangentAt p₁ line[ℝ, p₁, p₄]) (hp₄p₁ : p₄ ≠ p₁) (hp₃p₁ : p₃ ≠ p₁)
235+
(hp₃p₂ : p₃ ≠ p₂) (hp₂p₁ : p₂ ≠ p₁) :
236+
(2 : ℤ) • ∡ p₄ p₁ p₂ = (2 : ℤ) • ∡ p₁ p₃ p₂ := by
237+
have hcenter : s.center ≠ p₁ := by
238+
rintro rfl
239+
exact hp₃p₁ (dist_eq_zero.mp (by rw [mem_sphere.mp hp₃, ← mem_sphere.mp hp₁, dist_self]))
240+
have htan_chord : (2 : ℤ) • ∡ p₄ p₁ p₂ = π + (2 : ℤ) • ∡ s.center p₁ p₂ := by
241+
have hright : (2 : ℤ) • ∡ p₄ p₁ s.center = π := by
242+
rw [Real.Angle.two_zsmul_eq_pi_iff, ← Real.Angle.abs_toReal_eq_pi_div_two_iff,
243+
← angle_eq_abs_oangle_toReal hp₄p₁ hcenter]
244+
exact htan.angle_eq_pi_div_two (right_mem_affineSpan_pair ℝ p₁ p₄)
245+
rw [← oangle_add hp₄p₁ hcenter hp₂p₁, smul_add, hright]
246+
have hinscribed : (2 : ℤ) • ∡ p₁ p₃ p₂ = π + (2 : ℤ) • ∡ s.center p₁ p₂ := by
247+
have h := two_zsmul_oangle_center_add_two_zsmul_oangle_eq_pi hp₁ hp₃ hp₂ hp₃p₁ hp₃p₂ hp₂p₁.symm
248+
rw [oangle_rev, smul_neg] at h
249+
rw [← h]; abel
250+
exact htan_chord.trans hinscribed.symm
251+
230252
/-- A base angle of an isosceles triangle with apex at the center of a circle is acute. -/
231253
theorem abs_oangle_center_left_toReal_lt_pi_div_two {s : Sphere P} {p₁ p₂ : P} (hp₁ : p₁ ∈ s)
232254
(hp₂ : p₂ ∈ s) : |(∡ s.center p₂ p₁).toReal| < π / 2 :=

0 commit comments

Comments
 (0)