[英]How to find neighbor Points on Line/Polyline c#
如果您可以将网格适合int值,这是一个幼稚的解决方案。 它应该涵盖线不像平方螺旋线那样“增长”的情况。 切换为双精度时,请注意可能的舍入问题。
var line = new List<Point>
{
new Point("A", 0, 0),
new Point("B", 1, 0),
new Point("C", 1, 1),
new Point("D", 3, 1),
new Point("E", 3, 2),
new Point("F", 4, 2)
};
var p = new Point("P",2,1);
Point first = null;
foreach (var point in line)
{
if (first != null)
{
if (p.X == first.X && p.X == point.X
&& (p.Y >= first.Y && p.Y <= point.Y
|| p.Y <= first.Y && p.Y >= point.Y))
{
PrintResult(first, p, point);
break;
}
if (p.Y == first.Y && p.Y == point.Y
&& (p.X >= first.X && p.X <= point.X
|| p.X <= first.X && p.X >= point.X))
{
PrintResult(first, p, point);
break;
}
}
first = point;
}
Console.ReadKey();
}
private static void PrintResult(Point first, Point p, Point second)
{
Console.WriteLine(first.Name);
Console.WriteLine(p.Name);
Console.WriteLine(second.Name);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.