mathlib3 documentation

geometry.euclidean.angle.unoriented.affine

Angles between points #

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.

This file defines unoriented angles in Euclidean affine spaces.

Main definitions #

noncomputable def euclidean_geometry.angle {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] (p1 p2 p3 : P) :

The undirected angle at p2 between the line segments to p1 and p3. If either of those points equals p2, this is π/2. Use open_locale euclidean_geometry to access the ∠ p1 p2 p3 notation.

Equations
theorem euclidean_geometry.continuous_at_angle {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {x : P × P × P} (hx12 : x.fst x.snd.fst) (hx32 : x.snd.snd x.snd.fst) :
@[simp]
theorem affine_isometry.angle_map {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {V₂ : Type u_3} {P₂ : Type u_4} [normed_add_comm_group V₂] [inner_product_space V₂] [metric_space P₂] [normed_add_torsor V₂ P₂] (f : P →ᵃⁱ[] P₂) (p₁ p₂ p₃ : P) :
euclidean_geometry.angle (f p₁) (f p₂) (f p₃) = euclidean_geometry.angle p₁ p₂ p₃
@[simp, norm_cast]
@[simp]
theorem euclidean_geometry.angle_const_vadd {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] (v : V) (p₁ p₂ p₃ : P) :
euclidean_geometry.angle (v +ᵥ p₁) (v +ᵥ p₂) (v +ᵥ p₃) = euclidean_geometry.angle p₁ p₂ p₃

Angles are translation invariant

@[simp]
theorem euclidean_geometry.angle_vadd_const {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] (v₁ v₂ v₃ : V) (p : P) :
euclidean_geometry.angle (v₁ +ᵥ p) (v₂ +ᵥ p) (v₃ +ᵥ p) = euclidean_geometry.angle v₁ v₂ v₃

Angles are translation invariant

@[simp]
theorem euclidean_geometry.angle_const_vsub {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] (p p₁ p₂ p₃ : P) :
euclidean_geometry.angle (p -ᵥ p₁) (p -ᵥ p₂) (p -ᵥ p₃) = euclidean_geometry.angle p₁ p₂ p₃

Angles are translation invariant

@[simp]
theorem euclidean_geometry.angle_vsub_const {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] (p₁ p₂ p₃ p : P) :
euclidean_geometry.angle (p₁ -ᵥ p) (p₂ -ᵥ p) (p₃ -ᵥ p) = euclidean_geometry.angle p₁ p₂ p₃

Angles are translation invariant

@[simp]
theorem euclidean_geometry.angle_add_const {V : Type u_1} [normed_add_comm_group V] [inner_product_space V] (v₁ v₂ v₃ v : V) :
euclidean_geometry.angle (v₁ + v) (v₂ + v) (v₃ + v) = euclidean_geometry.angle v₁ v₂ v₃

Angles in a vector space are translation invariant

@[simp]
theorem euclidean_geometry.angle_const_add {V : Type u_1} [normed_add_comm_group V] [inner_product_space V] (v v₁ v₂ v₃ : V) :
euclidean_geometry.angle (v + v₁) (v + v₂) (v + v₃) = euclidean_geometry.angle v₁ v₂ v₃

Angles in a vector space are translation invariant

@[simp]
theorem euclidean_geometry.angle_sub_const {V : Type u_1} [normed_add_comm_group V] [inner_product_space V] (v₁ v₂ v₃ v : V) :
euclidean_geometry.angle (v₁ - v) (v₂ - v) (v₃ - v) = euclidean_geometry.angle v₁ v₂ v₃

Angles in a vector space are translation invariant

@[simp]
theorem euclidean_geometry.angle_const_sub {V : Type u_1} [normed_add_comm_group V] [inner_product_space V] (v v₁ v₂ v₃ : V) :
euclidean_geometry.angle (v - v₁) (v - v₂) (v - v₃) = euclidean_geometry.angle v₁ v₂ v₃

Angles in a vector space are invariant to inversion

@[simp]
theorem euclidean_geometry.angle_neg {V : Type u_1} [normed_add_comm_group V] [inner_product_space V] (v₁ v₂ v₃ : V) :
euclidean_geometry.angle (-v₁) (-v₂) (-v₃) = euclidean_geometry.angle v₁ v₂ v₃

Angles in a vector space are invariant to inversion

The angle at a point does not depend on the order of the other two points.

The angle at a point is nonnegative.

The angle at a point is at most π.

The angle ∠AAB at a point.

The angle ∠ABB at a point.

theorem euclidean_geometry.angle_eq_of_ne {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p1 p2 : P} (h : p1 p2) :

The angle ∠ABA at a point.

If the angle ∠ABC at a point is π, the angle ∠BAC is 0.

If the angle ∠ABC at a point is π, the angle ∠BCA is 0.

If ∠BCD = π, then ∠ABC = ∠ABD.

If ∠BCD = π, then ∠ACB + ∠ACD = π.

Vertical Angles Theorem: angles opposite each other, formed by two intersecting straight lines, are equal.

If ∠ABC = π then dist A B ≠ 0.

If ∠ABC = π then dist C B ≠ 0.

If ∠ABC = π, then (dist A C) = (dist A B) + (dist B C).

theorem euclidean_geometry.dist_eq_add_dist_iff_angle_eq_pi {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p1 p2 p3 : P} (hp1p2 : p1 p2) (hp3p2 : p3 p2) :

If A ≠ B and C ≠ B then ∠ABC = π if and only if (dist A C) = (dist A B) + (dist B C).

If ∠ABC = 0, then (dist A C) = abs ((dist A B) - (dist B C)).

theorem euclidean_geometry.dist_eq_abs_sub_dist_iff_angle_eq_zero {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p1 p2 p3 : P} (hp1p2 : p1 p2) (hp3p2 : p3 p2) :

If A ≠ B and C ≠ B then ∠ABC = 0 if and only if (dist A C) = abs ((dist A B) - (dist B C)).

If M is the midpoint of the segment AB, then ∠AMB = π.

If M is the midpoint of the segment AB and C is the same distance from A as it is from B then ∠CMA = π / 2.

If M is the midpoint of the segment AB and C is the same distance from A as it is from B then ∠CMB = π / 2.

theorem sbtw.angle₁₂₃_eq_pi {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p₁ p₂ p₃ : P} (h : sbtw p₁ p₂ p₃) :

If the second of three points is strictly between the other two, the angle at that point is π.

theorem sbtw.angle₃₂₁_eq_pi {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p₁ p₂ p₃ : P} (h : sbtw p₁ p₂ p₃) :

If the second of three points is strictly between the other two, the angle at that point (reversed) is π.

theorem euclidean_geometry.angle_eq_pi_iff_sbtw {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p₁ p₂ p₃ : P} :
euclidean_geometry.angle p₁ p₂ p₃ = real.pi sbtw p₁ p₂ p₃

The angle between three points is π if and only if the second point is strictly between the other two.

theorem wbtw.angle₂₁₃_eq_zero_of_ne {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p₁ p₂ p₃ : P} (h : wbtw p₁ p₂ p₃) (hp₂p₁ : p₂ p₁) :
euclidean_geometry.angle p₂ p₁ p₃ = 0

If the second of three points is weakly between the other two, and not equal to the first, the angle at the first point is zero.

theorem sbtw.angle₂₁₃_eq_zero {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p₁ p₂ p₃ : P} (h : sbtw p₁ p₂ p₃) :
euclidean_geometry.angle p₂ p₁ p₃ = 0

If the second of three points is strictly between the other two, the angle at the first point is zero.

theorem wbtw.angle₃₁₂_eq_zero_of_ne {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p₁ p₂ p₃ : P} (h : wbtw p₁ p₂ p₃) (hp₂p₁ : p₂ p₁) :
euclidean_geometry.angle p₃ p₁ p₂ = 0

If the second of three points is weakly between the other two, and not equal to the first, the angle at the first point (reversed) is zero.

theorem sbtw.angle₃₁₂_eq_zero {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p₁ p₂ p₃ : P} (h : sbtw p₁ p₂ p₃) :
euclidean_geometry.angle p₃ p₁ p₂ = 0

If the second of three points is strictly between the other two, the angle at the first point (reversed) is zero.

theorem wbtw.angle₂₃₁_eq_zero_of_ne {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p₁ p₂ p₃ : P} (h : wbtw p₁ p₂ p₃) (hp₂p₃ : p₂ p₃) :
euclidean_geometry.angle p₂ p₃ p₁ = 0

If the second of three points is weakly between the other two, and not equal to the third, the angle at the third point is zero.

theorem sbtw.angle₂₃₁_eq_zero {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p₁ p₂ p₃ : P} (h : sbtw p₁ p₂ p₃) :
euclidean_geometry.angle p₂ p₃ p₁ = 0

If the second of three points is strictly between the other two, the angle at the third point is zero.

theorem wbtw.angle₁₃₂_eq_zero_of_ne {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p₁ p₂ p₃ : P} (h : wbtw p₁ p₂ p₃) (hp₂p₃ : p₂ p₃) :
euclidean_geometry.angle p₁ p₃ p₂ = 0

If the second of three points is weakly between the other two, and not equal to the third, the angle at the third point (reversed) is zero.

theorem sbtw.angle₁₃₂_eq_zero {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p₁ p₂ p₃ : P} (h : sbtw p₁ p₂ p₃) :
euclidean_geometry.angle p₁ p₃ p₂ = 0

If the second of three points is strictly between the other two, the angle at the third point (reversed) is zero.

theorem euclidean_geometry.angle_eq_zero_iff_ne_and_wbtw {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p₁ p₂ p₃ : P} :
euclidean_geometry.angle p₁ p₂ p₃ = 0 p₁ p₂ wbtw p₂ p₁ p₃ p₃ p₂ wbtw p₂ p₃ p₁

The angle between three points is zero if and only if one of the first and third points is weakly between the other two, and not equal to the second.

theorem euclidean_geometry.angle_eq_zero_iff_eq_and_ne_or_sbtw {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p₁ p₂ p₃ : P} :
euclidean_geometry.angle p₁ p₂ p₃ = 0 p₁ = p₃ p₁ p₂ sbtw p₂ p₁ p₃ sbtw p₂ p₃ p₁

The angle between three points is zero if and only if one of the first and third points is strictly between the other two, or those two points are equal but not equal to the second.

theorem euclidean_geometry.collinear_iff_eq_or_eq_or_angle_eq_zero_or_angle_eq_pi {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p₁ p₂ p₃ : P} :
collinear {p₁, p₂, p₃} p₁ = p₂ p₃ = p₂ euclidean_geometry.angle p₁ p₂ p₃ = 0 euclidean_geometry.angle p₁ p₂ p₃ = real.pi

Three points are collinear if and only if the first or third point equals the second or the angle between them is 0 or π.

theorem euclidean_geometry.collinear_of_angle_eq_zero {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p₁ p₂ p₃ : P} (h : euclidean_geometry.angle p₁ p₂ p₃ = 0) :
collinear {p₁, p₂, p₃}

If the angle between three points is 0, they are collinear.

theorem euclidean_geometry.collinear_of_angle_eq_pi {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p₁ p₂ p₃ : P} (h : euclidean_geometry.angle p₁ p₂ p₃ = real.pi) :
collinear {p₁, p₂, p₃}

If the angle between three points is π, they are collinear.

theorem euclidean_geometry.angle_ne_zero_of_not_collinear {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p₁ p₂ p₃ : P} (h : ¬collinear {p₁, p₂, p₃}) :
euclidean_geometry.angle p₁ p₂ p₃ 0

If three points are not collinear, the angle between them is nonzero.

theorem euclidean_geometry.angle_ne_pi_of_not_collinear {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p₁ p₂ p₃ : P} (h : ¬collinear {p₁, p₂, p₃}) :

If three points are not collinear, the angle between them is not π.

theorem euclidean_geometry.angle_pos_of_not_collinear {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p₁ p₂ p₃ : P} (h : ¬collinear {p₁, p₂, p₃}) :
0 < euclidean_geometry.angle p₁ p₂ p₃

If three points are not collinear, the angle between them is positive.

theorem euclidean_geometry.angle_lt_pi_of_not_collinear {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p₁ p₂ p₃ : P} (h : ¬collinear {p₁, p₂, p₃}) :

If three points are not collinear, the angle between them is less than π.

The cosine of the angle between three points is 1 if and only if the angle is 0.

The cosine of the angle between three points is 0 if and only if the angle is π / 2.

The cosine of the angle between three points is -1 if and only if the angle is π.

The sine of the angle between three points is 0 if and only if the angle is 0 or π.

The sine of the angle between three points is 1 if and only if the angle is π / 2.

theorem euclidean_geometry.collinear_iff_eq_or_eq_or_sin_eq_zero {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p₁ p₂ p₃ : P} :
collinear {p₁, p₂, p₃} p₁ = p₂ p₃ = p₂ real.sin (euclidean_geometry.angle p₁ p₂ p₃) = 0

Three points are collinear if and only if the first or third point equals the second or the sine of the angle between three points is zero.

theorem euclidean_geometry.sin_pos_of_not_collinear {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p₁ p₂ p₃ : P} (h : ¬collinear {p₁, p₂, p₃}) :

If three points are not collinear, the sine of the angle between them is positive.

theorem euclidean_geometry.sin_ne_zero_of_not_collinear {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p₁ p₂ p₃ : P} (h : ¬collinear {p₁, p₂, p₃}) :

If three points are not collinear, the sine of the angle between them is nonzero.

theorem euclidean_geometry.collinear_of_sin_eq_zero {V : Type u_1} {P : Type u_2} [normed_add_comm_group V] [inner_product_space V] [metric_space P] [normed_add_torsor V P] {p₁ p₂ p₃ : P} (h : real.sin (euclidean_geometry.angle p₁ p₂ p₃) = 0) :
collinear {p₁, p₂, p₃}

If the sine of the angle between three points is 0, they are collinear.