Viviani's theorem
TheoremViviani's theorem#✓fully proved
Let \(A\), \(B\), \(C\) be points of the Euclidean plane \(\mathbb{R}^2\) with \(AB = BC = CA\), and let \(P\) be a point of the interior of the convex hull of \(\lbrace A, B, C \rbrace\). Then the sum of the distances from \(P\) to the lines \(AB\), \(BC\) and \(CA\) equals the distance from \(A\) to the line \(BC\), the altitude of the triangle.
No positivity hypothesis on the side length is needed: since \(P\) is an interior point, the points \(A\), \(B\), \(C\) are affinely independent, so the triangle is nondegenerate.
Proof: Following the barycentric-coordinate area decomposition in Wikipedia, "Viviani's theorem" (Proof section), we express the three distances as barycentric weights times a common height.
theorem viviani_general : ∀ (A B C P : EuclideanSpace ℝ (Fin 2)),
dist A B = dist B C → dist B C = dist C A →
P ∈ interior (convexHull ℝ {A, B, C}) →
Metric.infDist P ↑(affineSpan ℝ {A, B}) +
Metric.infDist P ↑(affineSpan ℝ {B, C}) +
Metric.infDist P ↑(affineSpan ℝ {C, A}) =
Metric.infDist A ↑(affineSpan ℝ {B, C})
Sources
- https://en.wikipedia.org/wiki/Viviani%27s_theorem.
Used by 1
TheoremViviani's theorem with a positive side length#✓fully proved
Let \(A\), \(B\), \(C\) be points of the Euclidean plane \(\mathbb{R}^2\) with \(AB = BC = CA\) and \(AB > 0\), and let \(P\) be a point of the interior of the convex hull of \(\lbrace A, B, C \rbrace\). Then the sum of the distances from \(P\) to the lines \(AB\), \(BC\) and \(CA\) equals the distance from \(A\) to the line \(BC\), the altitude of the triangle.
The hypothesis \(AB > 0\) is not needed: Viviani's theorem gives the same conclusion without it.
theorem viviani : ∀ (A B C P : EuclideanSpace ℝ (Fin 2)),
dist A B = dist B C → dist B C = dist C A → 0 < dist A B →
P ∈ interior (convexHull ℝ {A, B, C}) →
Metric.infDist P ↑(affineSpan ℝ {A, B}) +
Metric.infDist P ↑(affineSpan ℝ {B, C}) +
Metric.infDist P ↑(affineSpan ℝ {C, A}) =
Metric.infDist A ↑(affineSpan ℝ {B, C})
Uses 1
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.