@@ -179,6 +179,46 @@ theorem oangle_center_eq_two_zsmul_oangle {s : Sphere P} {p₁ p₂ p₃ : P} (h
179179 rw [oangle, oangle, o.oangle_eq_two_zsmul_oangle_sub_of_norm_eq_real _ _ hp₂ hp₁ hp₃] <;>
180180 simp [hp₂p₁, hp₂p₃]
181181
182+ /-- The angle at the center of a circle equals twice the angle at the circumference, unoriented
183+ angle version, provided twice the angle at the circumference is at most `π`. -/
184+ theorem angle_center_eq_two_mul_angle_of_two_mul_angle_le_pi {s : Sphere P} {p₁ p₂ p₃ : P}
185+ (hp₁ : p₁ ∈ s) (hp₂ : p₂ ∈ s) (hp₃ : p₃ ∈ s) (hp₂p₁ : p₂ ≠ p₁) (hp₂p₃ : p₂ ≠ p₃)
186+ (h : 2 * ∠ p₁ p₂ p₃ ≤ π) : ∠ p₁ s.center p₃ = 2 * ∠ p₁ p₂ p₃ := by
187+ have hp₁c : p₁ ≠ s.center := by
188+ rintro rfl
189+ rw [center_mem_iff] at hp₁
190+ exact hp₂p₁ (dist_eq_zero.mp (by rw [mem_sphere.mp hp₂, hp₁]))
191+ have hp₃c : p₃ ≠ s.center := by
192+ rintro rfl
193+ rw [center_mem_iff] at hp₃
194+ exact hp₂p₃ (dist_eq_zero.mp (by rw [mem_sphere.mp hp₂, hp₃]))
195+ refine Real.injOn_cos ⟨angle_nonneg p₁ s.center p₃, angle_le_pi p₁ s.center p₃⟩
196+ ⟨mul_nonneg zero_le_two (angle_nonneg p₁ p₂ p₃), h⟩ ?_
197+ rw [← cos_oangle_eq_cos_angle hp₁c hp₃c,
198+ oangle_center_eq_two_zsmul_oangle hp₁ hp₂ hp₃ hp₂p₁ hp₂p₃, Real.cos_two_mul,
199+ ← cos_oangle_eq_cos_angle hp₂p₁.symm hp₂p₃.symm, two_zsmul, Real.Angle.cos_add]
200+ nlinarith [Real.Angle.cos_sq_add_sin_sq (∡ p₁ p₂ p₃)]
201+
202+ /-- The angle at the center of a circle is `2 * π` minus twice the angle at the circumference,
203+ unoriented angle version, provided twice the angle at the circumference is at least `π`. -/
204+ theorem angle_center_eq_two_pi_sub_two_mul_angle_of_pi_le_two_mul_angle {s : Sphere P}
205+ {p₁ p₂ p₃ : P} (hp₁ : p₁ ∈ s) (hp₂ : p₂ ∈ s) (hp₃ : p₃ ∈ s) (hp₂p₁ : p₂ ≠ p₁)
206+ (hp₂p₃ : p₂ ≠ p₃) (h : π ≤ 2 * ∠ p₁ p₂ p₃) :
207+ ∠ p₁ s.center p₃ = 2 * π - 2 * ∠ p₁ p₂ p₃ := by
208+ have hp₁c : p₁ ≠ s.center := by
209+ rintro rfl; rw [center_mem_iff] at hp₁
210+ exact hp₂p₁ (dist_eq_zero.mp (by rw [mem_sphere.mp hp₂, hp₁]))
211+ have hp₃c : p₃ ≠ s.center := by
212+ rintro rfl; rw [center_mem_iff] at hp₃
213+ exact hp₂p₃ (dist_eq_zero.mp (by rw [mem_sphere.mp hp₂, hp₃]))
214+ refine Real.injOn_cos ⟨angle_nonneg p₁ s.center p₃, angle_le_pi p₁ s.center p₃⟩
215+ ⟨by linarith [angle_le_pi p₁ p₂ p₃], by linarith⟩ ?_
216+ rw [show (2 : ℝ) * π - 2 * ∠ p₁ p₂ p₃ = -(2 * ∠ p₁ p₂ p₃) + 2 * π by ring,
217+ Real.cos_add_two_pi, Real.cos_neg, ← cos_oangle_eq_cos_angle hp₁c hp₃c,
218+ oangle_center_eq_two_zsmul_oangle hp₁ hp₂ hp₃ hp₂p₁ hp₂p₃, Real.cos_two_mul,
219+ ← cos_oangle_eq_cos_angle hp₂p₁.symm hp₂p₃.symm, two_zsmul, Real.Angle.cos_add]
220+ nlinarith [Real.Angle.cos_sq_add_sin_sq (∡ p₁ p₂ p₃)]
221+
182222/-- Oriented angle version of "angles in same segment are equal" and "opposite angles of a
183223cyclic quadrilateral add to π", for oriented angles mod π (for which those are the same result),
184224represented here as equality of twice the angles. -/
0 commit comments