好的,这是我计算四边形面积的代码;这很好用:
float Pk(float x1,float y1,float x2,float y2,float x3,float y3,float x4,float y4)
{
return abs(((x1*y2)-(x2*y1))+((x2*y3)-(x3*y2))+((x3*y4)-(x4*y3))+((x4*y1)-(x1*y4)))/2;
}
分数如下:
我无法计算这样的区域(需要找到ABCD区域)。你有没有想过如何做到这一点,没有实际尝试所有可能的组合,因为我的程序有点复杂,需要花费很多时间。
提前致谢。
答案 0 :(得分:0)
似乎您想在调用区域功能之前按逆时针顺序对点进行排序。
要做到这一点,首先要找到所有点的边界框的中心。然后找到每个点和中心点之间的角度。根据角度对点列表进行排序。
使用已排序的点列表,调用区域功能。
答案 1 :(得分:0)
如果要计算给定点的凸包面积,则简单:计算凸包。然后你将有船体的分拣点。然后只需使用您的算法来计算面积。 凸壳计算有很多算法。看看这里: https://en.wikipedia.org/wiki/Convex_hull_algorithms