海伦公式

海伦公式

海伦公式

假设在平面内,有一个三角形,边长分别为 \(a,b,c\),三角形的面积 \(S\) 可由以下公式求得:

\(\sqrt{p\left(p-a\right)\left(p-b\right)\left(p-c\right)}\)

而公式里的 \(p\) 为半周长(周长的一半):

\(p=\frac{a+b+c}{2}\)

证明

image

\(c^2-x^2=b^2-\left(a-x\right)^2\)

解得:

\(x=\frac{a^2-b^2+c^2}{2a}\)

那么:

\(h=\sqrt{c^2-x^2}=\sqrt{c^2-\left(\frac{a^2-b^2+c^2}{2a}\right)^2}\)

\(S=\frac{ah}{2}=\sqrt{\frac{a^2}{4}\left(c+\frac{a^2-b^2+c^2}{2a}\right)\left(c-\frac{a^2-b^2+c^2}{2a}\right)}\)

\(=\sqrt{\frac{a^2}{4}\left(\frac{2ac+a^2-b^2+c^2}{2a}\right)\left(\frac{2ac-a^2-b^2+c^2}{2a}\right)}\)

\(=\sqrt{\frac{a^2}{4}\left[\frac{\left(a+c\right)^2-b^2}{2a}\right]\left[\frac{b^2-\left(a-c\right)^2}{2a}\right]}\)

\(=\sqrt{\frac{\left(a+b+c\right)\left(a-b+c\right)\left(a+b-c\right)\left(b+c-a\right)}{16}}\)

\(=\sqrt{\left(\frac{a+b+c}{2}\right)\left[\frac{\left(a+b+c\right)-2a}{2}\right]\left[\frac{\left(a+b+c\right)-2b}{2}\right]\left[\frac{\left(a+b+c\right)-2c}{2}\right]}\)

\(=\sqrt{p\left(p-a\right)\left(p-b\right)\left(p-c\right)}\)

例题 计算三角形面积

题目大意

给出三角形三个顶点的坐标,求三角形面积。

题目思路

先用勾股定理求出三条边的边长,再用海伦公式就可以求出三角形面积。

参考代码

#include <bits/stdc++.h>

using namespace std;

double a1, a2, b1, b2, c1, c2, s1, s2, s3, p, S;

int main() {
  cin >> a1 >> a2 >> b1 >> b2 >> c1 >> c2;
  s1 = sqrt(pow(abs(a1 - b1), 2) + pow(abs(a2 - b2), 2));
  s2 = sqrt(pow(abs(b1 - c1), 2) + pow(abs(b2 - c2), 2));
  s3 = sqrt(pow(abs(c1 - a1), 2) + pow(abs(c2 - a2), 2));
  p = (s1 + s2 + s3) / 2;
  S = sqrt(p * (p - s1) * (p - s2) * (p - s3));
  cout << fixed << setprecision(2) << S << '\n';
  return 0;
}
posted @ 2024-08-04 11:23  小熊涛涛  阅读(7)  评论(0编辑  收藏  举报