C#定义一个四边形类,判断这四个顶点是否构成四边形,并计算面积
程序员文章站
2022-04-02 18:50:14
...
C#定义一个四边形类,包含四个顶点坐标,以及定义判断这四个顶点是否构成四边形的函数,并计算面积。
具体代码如下:
class SBX
{
public int Px1, Px2, Px3, Px4, Py1, Py2, Py3, Py4; //顶点坐标
public bool IsSBX() //判断是否是四边形
{
if ((Py4 - Py3) * (Px4 - Px2) == (Py4 - Py2) * (Px4 - Px3))
return false;
else if ((Py4 - Py3) * (Px4 - Px1) == (Py4 - Py1) * (Px4 - Px3))
return false;
else if ((Py4 - Py2) * (Px4 - Px1) == (Py4 - Py1) * (Px4 - Px2))
return false;
else if ((Py3 - Py2) * (Px3 - Px1) == (Py3 - Py1) * (Px3 - Px2))
return false; //任意三个顶点成直线,非四边形
else
return true;
}
public double Mj() //计算四边形面积
{
return Math.Abs(Px1 * Py2 + Px2 * Py3 + Px3 * Py1 - Py1 * Px2 - Py2 * Px3 - Py3 * Px1) / 2.0+
Math.Abs(Px1 * Py4 + Px4 * Py3 + Px3 * Py1 - Py1 * Px4 - Py4 * Px3 - Py3 * Px1) / 2.0;
}
}
这里计算四边形面积是将其切割为两个三角形,再求和。
已知三个顶点求三角形面积的数学方法(上面求三角形面积的代码是我从课本上抄的,但是不知道为什么这么写,就去查了一下)
直角梯形面积 — 两个直角三角形面积
=[ (y2-y1+y2-y3)(x3-x1)-(y2-y1)(x2-x1)-(y2-y3)(x3-x2) ] /2
=(-x1y2-x2y3-x3y1+y1x2+y2x3+y3x1) /2
这个结果的绝对值与代码中是一样的