Documentation

Mathlib.Geometry.Euclidean.Angle.Sphere

Angles in circles and spheres #

This file proves results about angles in circles and spheres.

theorem Orientation.oangle_eq_two_zsmul_oangle_sub_of_norm_eq {V : Type u_1} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [Fact (Module.finrank ℝ V = 2)] (o : Orientation ℝ V (Fin 2)) {x y z : V} (hxyne : x β‰  y) (hxzne : x β‰  z) (hxy : β€–xβ€– = β€–yβ€–) (hxz : β€–xβ€– = β€–zβ€–) :
o.oangle y z = 2 β€’ o.oangle (y - x) (z - x)

The angle at the center of a circle equals twice the angle at the circumference, oriented vector angle form.

theorem Orientation.oangle_eq_two_zsmul_oangle_sub_of_norm_eq_real {V : Type u_1} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [Fact (Module.finrank ℝ V = 2)] (o : Orientation ℝ V (Fin 2)) {x y z : V} (hxyne : x β‰  y) (hxzne : x β‰  z) {r : ℝ} (hx : β€–xβ€– = r) (hy : β€–yβ€– = r) (hz : β€–zβ€– = r) :
o.oangle y z = 2 β€’ o.oangle (y - x) (z - x)

The angle at the center of a circle equals twice the angle at the circumference, oriented vector angle form with the radius specified.

theorem Orientation.two_zsmul_oangle_sub_eq_two_zsmul_oangle_sub_of_norm_eq {V : Type u_1} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [Fact (Module.finrank ℝ V = 2)] (o : Orientation ℝ V (Fin 2)) {x₁ xβ‚‚ y z : V} (hx₁yne : x₁ β‰  y) (hx₁zne : x₁ β‰  z) (hxβ‚‚yne : xβ‚‚ β‰  y) (hxβ‚‚zne : xβ‚‚ β‰  z) {r : ℝ} (hx₁ : β€–x₁‖ = r) (hxβ‚‚ : β€–xβ‚‚β€– = r) (hy : β€–yβ€– = r) (hz : β€–zβ€– = r) :
2 β€’ o.oangle (y - x₁) (z - x₁) = 2 β€’ o.oangle (y - xβ‚‚) (z - xβ‚‚)

Oriented vector angle version of "angles in same segment are equal" and "opposite angles of a cyclic quadrilateral add to Ο€", for oriented angles mod Ο€ (for which those are the same result), represented here as equality of twice the angles.

theorem EuclideanGeometry.Sphere.angle_eq_pi_div_two_iff_mem_sphere_of_isDiameter {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] {p₁ pβ‚‚ p₃ : P} {s : Sphere P} (hd : s.IsDiameter p₁ p₃) :
angle p₁ pβ‚‚ p₃ = Real.pi / 2 ↔ pβ‚‚ ∈ s

Thales' theorem: The angle inscribed in a semicircle is a right angle.

theorem EuclideanGeometry.Sphere.angle_eq_pi_div_two_iff_mem_sphere_ofDiameter {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] {p₁ pβ‚‚ p₃ : P} :
angle p₁ pβ‚‚ p₃ = Real.pi / 2 ↔ pβ‚‚ ∈ Sphere.ofDiameter p₁ p₃

Thales' theorem: For three distinct points, the angle at the second point is a right angle if and only if the second point lies on the sphere having the first and third points as diameter endpoints.

theorem EuclideanGeometry.Sphere.thales_theorem {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] {p₁ pβ‚‚ p₃ : P} {s : Sphere P} (hd : s.IsDiameter p₁ p₃) :
angle p₁ pβ‚‚ p₃ = Real.pi / 2 ↔ pβ‚‚ ∈ s

Alias of EuclideanGeometry.Sphere.angle_eq_pi_div_two_iff_mem_sphere_of_isDiameter.


Thales' theorem: The angle inscribed in a semicircle is a right angle.

theorem EuclideanGeometry.Sphere.isDiameter_of_angle_eq_pi_div_two {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] {p₁ pβ‚‚ p₃ : P} {s : Sphere P} [Fact (Module.finrank ℝ V = 2)] (hp₁ : p₁ ∈ s) (hpβ‚‚ : pβ‚‚ ∈ s) (hp₃ : p₃ ∈ s) (hne₁₂ : p₁ β‰  pβ‚‚) (hne₂₃ : pβ‚‚ β‰  p₃) (hangle : angle p₁ pβ‚‚ p₃ = Real.pi / 2) :
s.IsDiameter p₁ p₃

Converse of Thales' theorem in 2D: if three distinct points on a circle form a right angle, then the chord is a diameter.

For a tangent line to a sphere, the angle between the line and the radius at the tangent point equals Ο€ / 2.

If the angle between the line p q and the radius at p equals Ο€ / 2, then the line p q is tangent to the sphere at p.

A line through p is tangent to the sphere at p if and only if the angle between the line and the radius at p equals Ο€ / 2.

theorem EuclideanGeometry.Sphere.oangle_center_eq_two_zsmul_oangle {V : Type u_3} {P : Type u_4} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] [hd2 : Fact (Module.finrank ℝ V = 2)] [Module.Oriented ℝ V (Fin 2)] {s : Sphere P} {p₁ pβ‚‚ p₃ : P} (hp₁ : p₁ ∈ s) (hpβ‚‚ : pβ‚‚ ∈ s) (hp₃ : p₃ ∈ s) (hpβ‚‚p₁ : pβ‚‚ β‰  p₁) (hpβ‚‚p₃ : pβ‚‚ β‰  p₃) :
oangle p₁ s.center p₃ = 2 β€’ oangle p₁ pβ‚‚ p₃

The angle at the center of a circle equals twice the angle at the circumference, oriented angle version.

theorem EuclideanGeometry.Sphere.two_zsmul_oangle_eq {V : Type u_3} {P : Type u_4} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] [hd2 : Fact (Module.finrank ℝ V = 2)] [Module.Oriented ℝ V (Fin 2)] {s : Sphere P} {p₁ pβ‚‚ p₃ pβ‚„ : P} (hp₁ : p₁ ∈ s) (hpβ‚‚ : pβ‚‚ ∈ s) (hp₃ : p₃ ∈ s) (hpβ‚„ : pβ‚„ ∈ s) (hpβ‚‚p₁ : pβ‚‚ β‰  p₁) (hpβ‚‚pβ‚„ : pβ‚‚ β‰  pβ‚„) (hp₃p₁ : p₃ β‰  p₁) (hp₃pβ‚„ : p₃ β‰  pβ‚„) :
2 β€’ oangle p₁ pβ‚‚ pβ‚„ = 2 β€’ oangle p₁ p₃ pβ‚„

Oriented angle version of "angles in same segment are equal" and "opposite angles of a cyclic quadrilateral add to Ο€", for oriented angles mod Ο€ (for which those are the same result), represented here as equality of twice the angles.

theorem EuclideanGeometry.Cospherical.two_zsmul_oangle_eq {V : Type u_3} {P : Type u_4} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] [hd2 : Fact (Module.finrank ℝ V = 2)] [Module.Oriented ℝ V (Fin 2)] {p₁ pβ‚‚ p₃ pβ‚„ : P} (h : Cospherical {p₁, pβ‚‚, p₃, pβ‚„}) (hpβ‚‚p₁ : pβ‚‚ β‰  p₁) (hpβ‚‚pβ‚„ : pβ‚‚ β‰  pβ‚„) (hp₃p₁ : p₃ β‰  p₁) (hp₃pβ‚„ : p₃ β‰  pβ‚„) :
2 β€’ oangle p₁ pβ‚‚ pβ‚„ = 2 β€’ oangle p₁ p₃ pβ‚„

Oriented angle version of "angles in same segment are equal" and "opposite angles of a cyclic quadrilateral add to Ο€", for oriented angles mod Ο€ (for which those are the same result), represented here as equality of twice the angles.

theorem EuclideanGeometry.Sphere.oangle_eq_pi_sub_two_zsmul_oangle_center_left {V : Type u_3} {P : Type u_4} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] [hd2 : Fact (Module.finrank ℝ V = 2)] [Module.Oriented ℝ V (Fin 2)] {s : Sphere P} {p₁ pβ‚‚ : P} (hp₁ : p₁ ∈ s) (hpβ‚‚ : pβ‚‚ ∈ s) (h : p₁ β‰  pβ‚‚) :
oangle p₁ s.center pβ‚‚ = ↑Real.pi - 2 β€’ oangle s.center pβ‚‚ p₁

The angle at the apex of an isosceles triangle is Ο€ minus twice a base angle, oriented angle-at-point form where the apex is given as the center of a circle.

theorem EuclideanGeometry.Sphere.oangle_eq_pi_sub_two_zsmul_oangle_center_right {V : Type u_3} {P : Type u_4} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] [hd2 : Fact (Module.finrank ℝ V = 2)] [Module.Oriented ℝ V (Fin 2)] {s : Sphere P} {p₁ pβ‚‚ : P} (hp₁ : p₁ ∈ s) (hpβ‚‚ : pβ‚‚ ∈ s) (h : p₁ β‰  pβ‚‚) :
oangle p₁ s.center pβ‚‚ = ↑Real.pi - 2 β€’ oangle pβ‚‚ p₁ s.center

The angle at the apex of an isosceles triangle is Ο€ minus twice a base angle, oriented angle-at-point form where the apex is given as the center of a circle.

theorem EuclideanGeometry.Sphere.two_zsmul_oangle_center_add_two_zsmul_oangle_eq_pi {V : Type u_3} {P : Type u_4} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] [hd2 : Fact (Module.finrank ℝ V = 2)] [Module.Oriented ℝ V (Fin 2)] {s : Sphere P} {p₁ pβ‚‚ p₃ : P} (hp₁ : p₁ ∈ s) (hpβ‚‚ : pβ‚‚ ∈ s) (hp₃ : p₃ ∈ s) (hpβ‚‚p₁ : pβ‚‚ β‰  p₁) (hpβ‚‚p₃ : pβ‚‚ β‰  p₃) (hp₁p₃ : p₁ β‰  p₃) :
2 β€’ oangle p₃ p₁ s.center + 2 β€’ oangle p₁ pβ‚‚ p₃ = ↑Real.pi

Twice a base angle of an isosceles triangle with apex at the center of a circle, plus twice the angle at the apex of a triangle with the same base but apex on the circle, equals Ο€.

theorem EuclideanGeometry.Sphere.abs_oangle_center_left_toReal_lt_pi_div_two {V : Type u_3} {P : Type u_4} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] [hd2 : Fact (Module.finrank ℝ V = 2)] [Module.Oriented ℝ V (Fin 2)] {s : Sphere P} {p₁ pβ‚‚ : P} (hp₁ : p₁ ∈ s) (hpβ‚‚ : pβ‚‚ ∈ s) :
|(oangle s.center pβ‚‚ p₁).toReal| < Real.pi / 2

A base angle of an isosceles triangle with apex at the center of a circle is acute.

theorem EuclideanGeometry.Sphere.abs_oangle_center_right_toReal_lt_pi_div_two {V : Type u_3} {P : Type u_4} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] [hd2 : Fact (Module.finrank ℝ V = 2)] [Module.Oriented ℝ V (Fin 2)] {s : Sphere P} {p₁ pβ‚‚ : P} (hp₁ : p₁ ∈ s) (hpβ‚‚ : pβ‚‚ ∈ s) :
|(oangle pβ‚‚ p₁ s.center).toReal| < Real.pi / 2

A base angle of an isosceles triangle with apex at the center of a circle is acute.

theorem EuclideanGeometry.Sphere.tan_div_two_smul_rotation_pi_div_two_vadd_midpoint_eq_center {V : Type u_3} {P : Type u_4} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] [hd2 : Fact (Module.finrank ℝ V = 2)] [Module.Oriented ℝ V (Fin 2)] {s : Sphere P} {p₁ pβ‚‚ : P} (hp₁ : p₁ ∈ s) (hpβ‚‚ : pβ‚‚ ∈ s) (h : p₁ β‰  pβ‚‚) :
((oangle pβ‚‚ p₁ s.center).tan / 2) β€’ (o.rotation ↑(Real.pi / 2)) (pβ‚‚ -α΅₯ p₁) +α΅₯ midpoint ℝ p₁ pβ‚‚ = s.center

Given two points on a circle, the center of that circle may be expressed explicitly as a multiple (by half the tangent of the angle between the chord and the radius at one of those points) of a Ο€ / 2 rotation of the vector between those points, plus the midpoint of those points.

theorem EuclideanGeometry.Sphere.inv_tan_div_two_smul_rotation_pi_div_two_vadd_midpoint_eq_center {V : Type u_3} {P : Type u_4} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] [hd2 : Fact (Module.finrank ℝ V = 2)] [Module.Oriented ℝ V (Fin 2)] {s : Sphere P} {p₁ pβ‚‚ p₃ : P} (hp₁ : p₁ ∈ s) (hpβ‚‚ : pβ‚‚ ∈ s) (hp₃ : p₃ ∈ s) (hp₁pβ‚‚ : p₁ β‰  pβ‚‚) (hp₁p₃ : p₁ β‰  p₃) (hpβ‚‚p₃ : pβ‚‚ β‰  p₃) :
((oangle p₁ pβ‚‚ p₃).tan⁻¹ / 2) β€’ (o.rotation ↑(Real.pi / 2)) (p₃ -α΅₯ p₁) +α΅₯ midpoint ℝ p₁ p₃ = s.center

Given three points on a circle, the center of that circle may be expressed explicitly as a multiple (by half the inverse of the tangent of the angle at one of those points) of a Ο€ / 2 rotation of the vector between the other two points, plus the midpoint of those points.

theorem EuclideanGeometry.Sphere.dist_div_cos_oangle_center_div_two_eq_radius {V : Type u_3} {P : Type u_4} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] [hd2 : Fact (Module.finrank ℝ V = 2)] [Module.Oriented ℝ V (Fin 2)] {s : Sphere P} {p₁ pβ‚‚ : P} (hp₁ : p₁ ∈ s) (hpβ‚‚ : pβ‚‚ ∈ s) (h : p₁ β‰  pβ‚‚) :
dist p₁ pβ‚‚ / (oangle pβ‚‚ p₁ s.center).cos / 2 = s.radius

Given two points on a circle, the radius of that circle may be expressed explicitly as half the distance between those two points divided by the cosine of the angle between the chord and the radius at one of those points.

theorem EuclideanGeometry.Sphere.dist_div_cos_oangle_center_eq_two_mul_radius {V : Type u_3} {P : Type u_4} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] [hd2 : Fact (Module.finrank ℝ V = 2)] [Module.Oriented ℝ V (Fin 2)] {s : Sphere P} {p₁ pβ‚‚ : P} (hp₁ : p₁ ∈ s) (hpβ‚‚ : pβ‚‚ ∈ s) (h : p₁ β‰  pβ‚‚) :
dist p₁ pβ‚‚ / (oangle pβ‚‚ p₁ s.center).cos = 2 * s.radius

Given two points on a circle, twice the radius of that circle may be expressed explicitly as the distance between those two points divided by the cosine of the angle between the chord and the radius at one of those points.

theorem EuclideanGeometry.Sphere.dist_div_sin_oangle_div_two_eq_radius {V : Type u_3} {P : Type u_4} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] [hd2 : Fact (Module.finrank ℝ V = 2)] [Module.Oriented ℝ V (Fin 2)] {s : Sphere P} {p₁ pβ‚‚ p₃ : P} (hp₁ : p₁ ∈ s) (hpβ‚‚ : pβ‚‚ ∈ s) (hp₃ : p₃ ∈ s) (hp₁pβ‚‚ : p₁ β‰  pβ‚‚) (hp₁p₃ : p₁ β‰  p₃) (hpβ‚‚p₃ : pβ‚‚ β‰  p₃) :
dist p₁ p₃ / |(oangle p₁ pβ‚‚ p₃).sin| / 2 = s.radius

Given three points on a circle, the radius of that circle may be expressed explicitly as half the distance between two of those points divided by the absolute value of the sine of the angle at the third point (a version of the law of sines or sine rule).

theorem EuclideanGeometry.Sphere.dist_div_sin_oangle_eq_two_mul_radius {V : Type u_3} {P : Type u_4} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] [hd2 : Fact (Module.finrank ℝ V = 2)] [Module.Oriented ℝ V (Fin 2)] {s : Sphere P} {p₁ pβ‚‚ p₃ : P} (hp₁ : p₁ ∈ s) (hpβ‚‚ : pβ‚‚ ∈ s) (hp₃ : p₃ ∈ s) (hp₁pβ‚‚ : p₁ β‰  pβ‚‚) (hp₁p₃ : p₁ β‰  p₃) (hpβ‚‚p₃ : pβ‚‚ β‰  p₃) :
dist p₁ p₃ / |(oangle p₁ pβ‚‚ p₃).sin| = 2 * s.radius

Given three points on a circle, twice the radius of that circle may be expressed explicitly as the distance between two of those points divided by the absolute value of the sine of the angle at the third point (a version of the law of sines or sine rule).

theorem Affine.Triangle.inv_tan_div_two_smul_rotation_pi_div_two_vadd_midpoint_eq_circumcenter {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] [hd2 : Fact (Module.finrank ℝ V = 2)] [Module.Oriented ℝ V (Fin 2)] (t : Triangle ℝ P) {i₁ iβ‚‚ i₃ : Fin 3} (h₁₂ : i₁ β‰  iβ‚‚) (h₁₃ : i₁ β‰  i₃) (h₂₃ : iβ‚‚ β‰  i₃) :
((EuclideanGeometry.oangle (t.points i₁) (t.points iβ‚‚) (t.points i₃)).tan⁻¹ / 2) β€’ (EuclideanGeometry.o.rotation ↑(Real.pi / 2)) (t.points i₃ -α΅₯ t.points i₁) +α΅₯ midpoint ℝ (t.points i₁) (t.points i₃) = Simplex.circumcenter t

The circumcenter of a triangle may be expressed explicitly as a multiple (by half the inverse of the tangent of the angle at one of the vertices) of a Ο€ / 2 rotation of the vector between the other two vertices, plus the midpoint of those vertices.

theorem Affine.Triangle.dist_div_sin_oangle_div_two_eq_circumradius {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] [hd2 : Fact (Module.finrank ℝ V = 2)] [Module.Oriented ℝ V (Fin 2)] (t : Triangle ℝ P) {i₁ iβ‚‚ i₃ : Fin 3} (h₁₂ : i₁ β‰  iβ‚‚) (h₁₃ : i₁ β‰  i₃) (h₂₃ : iβ‚‚ β‰  i₃) :
dist (t.points i₁) (t.points i₃) / |(EuclideanGeometry.oangle (t.points i₁) (t.points iβ‚‚) (t.points i₃)).sin| / 2 = Simplex.circumradius t

The circumradius of a triangle may be expressed explicitly as half the length of a side divided by the absolute value of the sine of the angle at the third point (a version of the law of sines or sine rule).

theorem Affine.Triangle.dist_div_sin_oangle_eq_two_mul_circumradius {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] [hd2 : Fact (Module.finrank ℝ V = 2)] [Module.Oriented ℝ V (Fin 2)] (t : Triangle ℝ P) {i₁ iβ‚‚ i₃ : Fin 3} (h₁₂ : i₁ β‰  iβ‚‚) (h₁₃ : i₁ β‰  i₃) (h₂₃ : iβ‚‚ β‰  i₃) :
dist (t.points i₁) (t.points i₃) / |(EuclideanGeometry.oangle (t.points i₁) (t.points iβ‚‚) (t.points i₃)).sin| = 2 * Simplex.circumradius t

Twice the circumradius of a triangle may be expressed explicitly as the length of a side divided by the absolute value of the sine of the angle at the third point (a version of the law of sines or sine rule).

theorem Affine.Triangle.circumsphere_eq_of_dist_of_oangle {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] [hd2 : Fact (Module.finrank ℝ V = 2)] [Module.Oriented ℝ V (Fin 2)] (t : Triangle ℝ P) {i₁ iβ‚‚ i₃ : Fin 3} (h₁₂ : i₁ β‰  iβ‚‚) (h₁₃ : i₁ β‰  i₃) (h₂₃ : iβ‚‚ β‰  i₃) :
Simplex.circumsphere t = { center := ((EuclideanGeometry.oangle (t.points i₁) (t.points iβ‚‚) (t.points i₃)).tan⁻¹ / 2) β€’ (EuclideanGeometry.o.rotation ↑(Real.pi / 2)) (t.points i₃ -α΅₯ t.points i₁) +α΅₯ midpoint ℝ (t.points i₁) (t.points i₃), radius := dist (t.points i₁) (t.points i₃) / |(EuclideanGeometry.oangle (t.points i₁) (t.points iβ‚‚) (t.points i₃)).sin| / 2 }

The circumsphere of a triangle may be expressed explicitly in terms of two points and the angle at the third point.

theorem Affine.Triangle.circumsphere_eq_circumsphere_of_eq_of_eq_of_two_zsmul_oangle_eq {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] [hd2 : Fact (Module.finrank ℝ V = 2)] [Module.Oriented ℝ V (Fin 2)] {t₁ tβ‚‚ : Triangle ℝ P} {i₁ iβ‚‚ i₃ : Fin 3} (h₁₂ : i₁ β‰  iβ‚‚) (h₁₃ : i₁ β‰  i₃) (h₂₃ : iβ‚‚ β‰  i₃) (h₁ : t₁.points i₁ = tβ‚‚.points i₁) (h₃ : t₁.points i₃ = tβ‚‚.points i₃) (hβ‚‚ : 2 β€’ EuclideanGeometry.oangle (t₁.points i₁) (t₁.points iβ‚‚) (t₁.points i₃) = 2 β€’ EuclideanGeometry.oangle (tβ‚‚.points i₁) (tβ‚‚.points iβ‚‚) (tβ‚‚.points i₃)) :

If two triangles have two points the same, and twice the angle at the third point the same, they have the same circumsphere.

theorem Affine.Triangle.mem_circumsphere_of_two_zsmul_oangle_eq {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] [hd2 : Fact (Module.finrank ℝ V = 2)] [Module.Oriented ℝ V (Fin 2)] {t : Triangle ℝ P} {p : P} {i₁ iβ‚‚ i₃ : Fin 3} (h₁₂ : i₁ β‰  iβ‚‚) (h₁₃ : i₁ β‰  i₃) (h₂₃ : iβ‚‚ β‰  i₃) (h : 2 β€’ EuclideanGeometry.oangle (t.points i₁) p (t.points i₃) = 2 β€’ EuclideanGeometry.oangle (t.points i₁) (t.points iβ‚‚) (t.points i₃)) :

Given a triangle, and a fourth point such that twice the angle between two points of the triangle at that fourth point equals twice the third angle of the triangle, the fourth point lies in the circumsphere of the triangle.

theorem Affine.Triangle.dist_div_sin_angle_div_two_eq_circumradius {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₃) :
dist (t.points i₁) (t.points i₃) / Real.sin (EuclideanGeometry.angle (t.points i₁) (t.points iβ‚‚) (t.points i₃)) / 2 = Simplex.circumradius t

The circumradius of a triangle may be expressed explicitly as half the length of a side divided by the sine of the angle at the third point (a version of the law of sines or sine rule).

theorem Affine.Triangle.dist_div_sin_angle_eq_two_mul_circumradius {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₃) :
dist (t.points i₁) (t.points i₃) / Real.sin (EuclideanGeometry.angle (t.points i₁) (t.points iβ‚‚) (t.points i₃)) = 2 * Simplex.circumradius t

Twice the circumradius of a triangle may be expressed explicitly as the length of a side divided by the sine of the angle at the third point (a version of the law of sines or sine rule).

theorem EuclideanGeometry.cospherical_of_two_zsmul_oangle_eq_of_not_collinear {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] [hd2 : Fact (Module.finrank ℝ V = 2)] [Module.Oriented ℝ V (Fin 2)] {p₁ pβ‚‚ p₃ pβ‚„ : P} (h : 2 β€’ oangle p₁ pβ‚‚ pβ‚„ = 2 β€’ oangle p₁ p₃ pβ‚„) (hn : Β¬Collinear ℝ {p₁, pβ‚‚, pβ‚„}) :
Cospherical {p₁, pβ‚‚, p₃, pβ‚„}

Converse of "angles in same segment are equal" and "opposite angles of a cyclic quadrilateral add to Ο€", for oriented angles mod Ο€.

theorem EuclideanGeometry.concyclic_of_two_zsmul_oangle_eq_of_not_collinear {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] [hd2 : Fact (Module.finrank ℝ V = 2)] [Module.Oriented ℝ V (Fin 2)] {p₁ pβ‚‚ p₃ pβ‚„ : P} (h : 2 β€’ oangle p₁ pβ‚‚ pβ‚„ = 2 β€’ oangle p₁ p₃ pβ‚„) (hn : Β¬Collinear ℝ {p₁, pβ‚‚, pβ‚„}) :
Concyclic {p₁, pβ‚‚, p₃, pβ‚„}

Converse of "angles in same segment are equal" and "opposite angles of a cyclic quadrilateral add to Ο€", for oriented angles mod Ο€, with a "concyclic" conclusion.

theorem EuclideanGeometry.cospherical_or_collinear_of_two_zsmul_oangle_eq {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] [hd2 : Fact (Module.finrank ℝ V = 2)] [Module.Oriented ℝ V (Fin 2)] {p₁ pβ‚‚ p₃ pβ‚„ : P} (h : 2 β€’ oangle p₁ pβ‚‚ pβ‚„ = 2 β€’ oangle p₁ p₃ pβ‚„) :
Cospherical {p₁, pβ‚‚, p₃, pβ‚„} ∨ Collinear ℝ {p₁, pβ‚‚, p₃, pβ‚„}

Converse of "angles in same segment are equal" and "opposite angles of a cyclic quadrilateral add to Ο€", for oriented angles mod Ο€, with a "cospherical or collinear" conclusion.

theorem EuclideanGeometry.concyclic_or_collinear_of_two_zsmul_oangle_eq {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] [hd2 : Fact (Module.finrank ℝ V = 2)] [Module.Oriented ℝ V (Fin 2)] {p₁ pβ‚‚ p₃ pβ‚„ : P} (h : 2 β€’ oangle p₁ pβ‚‚ pβ‚„ = 2 β€’ oangle p₁ p₃ pβ‚„) :
Concyclic {p₁, pβ‚‚, p₃, pβ‚„} ∨ Collinear ℝ {p₁, pβ‚‚, p₃, pβ‚„}

Converse of "angles in same segment are equal" and "opposite angles of a cyclic quadrilateral add to Ο€", for oriented angles mod Ο€, with a "concyclic or collinear" conclusion.