<基础数学>已知三角形三点坐标, 求三角形的面积
程序员文章站
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),三角形的面积公式为:
- 法一: 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=21∣x1(y2−y3)+x2(y3−y1)+x3(y1−y2)∣
-
法二:已知三个点坐标,可得三角形三条边长度
a
、
b
、
c
a、b、c
a、b、c,可得
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(p−a)(p−b)(p−c)
法一代码实现:
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));
}
上一篇: java基础复习第一天
下一篇: 深入研究Twitter Redux存储