我在两个项目中看似完全相同的C#代码基准测试存在问题。
该代码是卷绕数算法的C#实现,用于找出点是否在多边形内部。
该列表是具有经度和纬度的顶点的有序列表。从每个顶点按顺序绘制一条线时,将绘制出多边形,然后该方法确定该点是否在多边形内部。
这是代码:
public static bool IsPointInPolygon(List<Vertex> polygon, Vertex point)
{
int wn = 0;
for (int i = 0; i < (polygon.Count - 1); i++)
{
if (polygon[i].Latitude <= point.Latitude)
{
if (polygon[i + 1].Latitude > point.Latitude)
{
if (IsLeft(polygon[i], polygon[i + 1], point) > 0)
wn++;
}
}
else
{
if (polygon[i + 1].Latitude <= point.Latitude)
{
if (IsLeft(polygon[i], polygon[i + 1], point) < 0)
wn--;
}
}
}
return wn != 0;
}
private static double …Run Code Online (Sandbox Code Playgroud) c# ×1