c# - 从坐标列表中查找左下角坐标
问题描述
我有一个坐标列表(圆形对象),我试图在左下角找到对象。
(左上角是 0,0)
我使用的逻辑是“左下圆圈是 X 最小,Y 最大”,它在大多数情况下都有效;
但在这种情况下它会失败,例如因为左下角坐标(圆)不是 X 值最小的坐标;
我使用这样的东西,它大部分都有效;
private static int FindBottomLeftCircle(List<Circle> circles)
{
return circles.IndexOf(circles.OrderBy(c => c.Center.Y).Reverse().Take(13).OrderBy(c => c.Center.X).First());
}
如果底行大约有 13 个圆圈,效果最好。但正如您所看到的,这种方法存在问题。
如何可靠地找到左下角的圆形对象?
解决方案
只是一个想法。当从那个圆绘制到另一个圆的向量与 X 在 (-45, 135) 度范围内成角度时,说一个圆比另一个圆左下角是否正确。然后我们可以通过计算与向量 (1, -1) 的标量积来确定角度是否正确。所以我们需要找到比任何其他都更左下角的圆圈:
circles.First(x => circles.All(y => y.Center.X - x.Center.X - (y.Center.Y - x.Center.Y) => 0))
推荐阅读
- java - 如何将 XML 字符串添加到现有的 BaseX 数据库?
- c++ - 1D 中的非均匀 FFT 前向和后向测试
- java - 在 java 类中从 @XMLElement 获取注释值
- npm - NPM 在更新另一个包时会卸载不相关的包
- java - 从包含部分文件的 hadoop 文件中读取 n 行
- javascript - 您将如何在 DynamoDB 中为一对多和多对多建模
- c# - 写入数据库时 ASP.NET 控制器出错
- css - 每当css请求字体文件时,如何修复发送404页面的反应路由器?
- javascript - 如何在bixby中获取用户当前位置和地址
- apache-kafka - ms 自批处理创建以来已过去加上逗留时间