三点坐标求三角形的面积
方法1:行列式
设三角形的面积为S, 则S = (1/2)*(下面行列式)
|x1 y1 1|
|x2 y2 1|
|x3 y3 1|
即 S=(1/2)*(x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2) = (1 / 2) * ((x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1));
代码:
//行列式计算三角形面积 double area(Point p1, Point p2, Point p3) { return fabs (0.5 * ((p2.x - p1.x) * (p3.y - p1.y) - (p3.x - p1.x) * (p2.y - p1.y))); }
方法2:海伦公式
S = sqrt (p * (p - a)(p - b)(p - c)) 其中p = (a + b + c) / 2, abc为三角形三边长
代码:
double dis(Point p1, Point p2) { return sqrt ((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y)); } //海伦公式计算三角形面积 double area(Point p1, Point p2, Point p3) { double a = dis (p1, p2); double b = dis (p2, p3); double c = dis (p3, p1); double p = (a + b + c) * 0.5; return sqrt (p * (p - a) * (p - b) * (p - c)); }
编译人生,运行世界!