0
A
回答
0
我不知道这是否回答你的问题,但这里有一段代码,我几年前写的。
它计算多边形点列表中的点索引以及垂直于最近边缘的距离。
它使用一个Vector2
结构定义矢量运算+
,-
,*
(点积)和方法GetLength
和GetSquaredLength
。同样的代码也应该与Vector3
(3D)一起运行。
请参阅备注以了解详情。
// Polygon points
List<Vector2> p;
/// <summary> Calculates the perpendicular vector from nearest point on polygon to given point. If no points available minIndex is -1. </summary>
public void GetPolygonDist(Vector2 point, out Vector2 minDist, out int minIndex) {
if (p.Count == 0) { minDist = Vector2.Null(); minIndex = -1; return; }
Vector2 dist;
minDist = point - p[0];
minIndex = 0;
for (int i = 0; i < p.Count - 1; i++) {
Vector2 l = p[i + 1] - p[i]; // Edge
if (l.GetLength() < 1e-9) continue; // Ignore edge of length almost zero
Vector2 d = point - p[i]; // Polygon point to point
Vector2 b = (l * d)/(l * l) * l; // Projection to edge
double f = Math.Sign(b * l) * (b.GetLength()/l.GetLength()); // Where on the edge is the perpendicular?
if (f < 0.0) dist = point - p[i]; // Point before the edge
else if (f > 1.0) dist = point - p[i + 1]; // Point after the edge
else dist = d - b; // Perpendicular
if (dist.GetSquaredLength() < minDist.GetSquaredLength()) {
minDist = dist;
minIndex = i;
}
}
}
+0
thanx,但我需要一个js –
+1
你没有标记它js。它有点数学,所以把它转换成js应该不是很难。 – joe
相关问题
- 1. 从一个点到多边形的距离
- 2. 找到所有点与多边形边界之间的最小距离
- 3. 点特征到最近多边形的距离R
- 4. 多边形边上的点
- 5. 如何找到远离某个多边形的所有点?
- 6. Mysql从测试点到多边形的距离
- 7. 如何在多边形内找到点?
- 8. 如何确定一个多边形的顶点,该多边形的外边缘距离Google地图上javascript或线条的某个给定距离?
- 9. Python:找到点是否位于多边形的边界上
- 10. 给定一个多边形和一个二维点,如何找到最接近该点的多边形的特征(顶点或边)?
- 11. 多边形点离质心最远的距离
- 12. 在每个多边形中查找一组多边形的最大点R
- 13. 如何在不规则多边形内找到一个点
- 14. 如何从一组线中找到包围点的多边形?
- 15. API距离多边形
- 16. 确定一个点的多边形是
- 17. 给定非凸多边形中的一大组顶点,我如何找到边?
- 18. 确定哪些多边形的点是从一个大组多边形
- 19. 用于多个多边形的点多边形算法
- 20. 两个多边形的最近点
- 21. Graphviz:减少倾斜的多边形节点上的边距
- 22. 多边形顶点从一组点
- 23. 检查点是一个多边形
- 24. 我如何找到多点之间指定点的最短距离?
- 25. 点在多边形
- 26. 从多个多边形搜索点
- 27. Python中找到最近的多边形给定的点坐标
- 28. MySQL查找离点最近的多边形
- 29. 查找图层中一个多边形与其他多边形的最小距离?
- 30. QGis:找到一个点所在的多边形
到目前为止您的进展如何?请显示一些代码。 – joe
嗨,欢迎来到Stack Overflow。请修改您的帖子以包含您迄今为止解决问题的尝试,以及您收到的结果和错误。 – Noich