我希望找到极值点,输出必须类似于this,但我的代码给了我this output
所以,我想改变它来给我正确的输出,我该怎么做呢?非常感谢!
public override void Run(List<Point> points, List<Line> lines, List<Polygon> polygons, ref List<Point> outPoints, ref List<Line> outLines, ref List<Polygon> outPolygons)
{
List<Point> opoints = new List<Point>();
HelperMethods helper = new HelperMethods();
for (int i = 0; i < points.Count; i++)
{
for (int j = 0; j < points.Count; j++)
{
for (int k = 0; k < points.Count; k++)
{
if (points[i] != points[j] && points[j] != points[k] && points[i] != points[k])
{
for (int p = 0; p < points.Count; p++)
{
if (i != p && j != p && k != p)
{
if (HelperMethods.PointInTriangle(points[p], points[i], points[j], points[k]) == Enums.PointInPolygon.Inside)
{
opoints.Add(points[p]);
}
}
}
}
}
}
}
outPoints = opoints;
}发布于 2020-03-06 20:24:17
如果任何人有同样的问题,我解决了我的问题,并将分享解决方案来帮助其他人。
在opoints列表中,凸包内有所有点:

但是我们的工作是找到凸包的外部点:

因此,我们可以通过循环遍历所有点来实现这一点,并且只显示opoints列表中不存在的点。
代码如下:
for (int m = 0; m < points.Count; m++)
{
if (!opoints.Contains(points[m]))
outPoints.Add(points[m]);
}https://stackoverflow.com/questions/60553303
复制相似问题