三点坐标求三角形的面积

方法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));
}

 

posted @ 2015-08-23 20:11  Running_Time  阅读(4349)  评论(0编辑  收藏  举报