我有 NxN 值的高度图。
我想找到一个给定点 A(红点),其 x 和 y 坐标给定(并且 z 从数据中已知,因此 A 是曲面的顶点)位于圆周上的一组点以 A 为中心、以 R 为半径的圆的形状,它是覆盖在数据点描述的假想表面上的圆形“布”(灰色)的良好近似值。
采样,即我试图找到的点集之间的倒数距离,不需要是均匀的,但我仍然想至少找到网格边缘与网格边缘相交的所有点距 A 距离为 R 的圆。
如何找到这组点呢?
这是一个已知问题吗?
(source: keplero.com http://www.keplero.com/upps/grid.jpg)
-- edit
Jan 使用的假设是正确的:样本形成一个与 [0,0] 对齐的规则矩形或正方形网格(在 X-Y 平面中)。但我想考虑 Z 方向的位移来计算距离。您可以将高度图视为地形,而我正在寻找的算法作为向探险家提供的说明,该探险家仅在给定纬度或经度的路径上行进,标记距 A 距离为 R 的点。步行距离,这考虑了迄今为止完成的所有 Z 位移。探险家也在山谷中攀登和下山。
简单的算法是这样的。我们知道,给定 R,x 轴和 y 轴上的最大位移对应于完全平坦的表面。如果没有斜率,x、y 点将全部位于边界正方形 Ax-R
此时,它将开始行进到附近的单元格,因为如果周界进入网格的一个单元格的边缘,它也必须离开该单元格。
我认为以精确的方式解决这个问题非常困难,因此我建议尝试直接的方法来模拟探险家在地面上采取的路径。
鉴于你的出发点A
和行驶距离d
, 计算一个圆的点P
在 XY 平面上d
from A
.
对于每个点p
in P
,与线段相交A-p
与你的网格,这样你最终会得到一系列点,探险家从一个网格方块穿过到下一个网格方块,如果探险家从一个网格方块出发,则会发生这种情况A
。然后,应通过网格数据插值为这些点指定 z 坐标。
因此,您可以前进通过此点序列并跟踪迄今为止行驶的距离。最终将达到目标距离 - 调整p
就在此时。
P 现在包含您要查找的周长。调整样本保真度(大小P
)根据您的需要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)