欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

<基础数学>已知三角形三点坐标, 求三角形的面积

程序员文章站 2022-04-03 23:44:52
...

在二维坐标系中,已知三角形的三个点A、B、C的坐标分别为 ( x 1 , y 1 ) , ( x 2 , y 2 ) , ( x 3 , y 3 ) (x1,y1),(x2,y2),(x3,y3) (x1,y1)(x2,y2)(x3,y3),三角形的面积公式为:

  1. 法一 S = 1 2 ∣ x 1 ( y 2 − y 3 ) + x 2 ( y 3 − y 1 ) + x 3 ( y 1 − y 2 ) ∣ S=\frac12|x1(y2-y3)+x2(y3-y1)+x3(y1-y2)| S=21x1(y2y3)+x2(y3y1)+x3(y1y2)
  2. 法二:已知三个点坐标,可得三角形三条边长度 a 、 b 、 c a、b、c abc,可得 p = a + b + c 2 p=\frac{a+b+c}2 p=2a+b+c p p p为三角形周长的一半,即
    S = p ( p − a ) ( p − b ) ( p − c ) S=\sqrt{p(p-a)(p-b)(p-c)} S=p(pa)(pb)(pc)

法一代码实现:

double TriangleArea(vector<double>& point1, vector<double>& point2, vector<double>& point3,) 
{
	return 0.5*(point1[0]*(point2[1]-point3[1])+point2[0]*(point3[1]-point1[1])+point3[0]*(point1[1]-point2[1]));
}

法二代码实现:

double GetLength(const vector<double>& p1, const vector<double>& p2)
{
		int x=p1[0]-p2[0];
        int y=p1[1]-p2[1];
        return sqrt(x*x+y*y);
}

double TriangleArea(vector<double>& point1, vector<double>& point2, vector<double>& point3,) 
{
	double a=GetLength(point1,point2);
	double b=GetLength(point1,point3);
	double c=GetLength(point2,point3);
	double p=0.5*(a+b+c);
	return sqrt(p*(p-a)*(p-b)*(p-c));
}
相关标签: 基础数学