Angles and orthogonal projection. #
This file proves lemmas relating to angles involving orthogonal projections.
@[simp]
theorem EuclideanGeometry.angle_self_orthogonalProjection {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] (p : P) {p' : P} {s : AffineSubspace ℝ P} [s.direction.HasOrthogonalProjection] (h : p' ∈ s) :
@[simp]
theorem EuclideanGeometry.angle_orthogonalProjection_self {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] (p : P) {p' : P} {s : AffineSubspace ℝ P} [s.direction.HasOrthogonalProjection] (h : p' ∈ s) :
theorem EuclideanGeometry.dist_orthogonalProjection_eq_sin_mul_dist {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] (p : P) {q : P} {s : AffineSubspace ℝ P} [s.direction.HasOrthogonalProjection] (h : q ∈ s) :
dist p ↑((orthogonalProjection s) p) = Real.sin (angle p q ↑((orthogonalProjection s) p)) * dist p q
theorem EuclideanGeometry.dist_orthogonalProjection_eq_sin_mul_dist_of_collinear {V : Type u_1} {P : Type u_2} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace P] [NormedAddTorsor V P] (p : P) {q r : P} {s : AffineSubspace ℝ P} [s.direction.HasOrthogonalProjection] (hq : q ∈ s) (hr : r ∈ s) (hcollinear : Collinear ℝ {↑((orthogonalProjection s) p), q, r}) (hqr : q ≠ r) :