【发布时间】:2012-11-26 09:04:26
【问题描述】:
我有一个 NxN 值的高度图。
我想找到,给定一个点 A(红点),它的 x 和 y 坐标是给定的(并且 z 从数据中已知,所以 A 是表面的一个顶点)一组位于在圆心在 A 和半径 R 的圆周上,这是一个很好的近似圆形“布”(灰色)覆盖在由数据点描述的假想表面上。
采样,即我试图找到的点集之间的倒数距离,不需要是统一的,但我仍然希望至少找到所有与边缘相交的点与距 A 距离为 R 的圆啮合。
如何找到这组点?
这是一个已知问题吗?
(来源:keplero.com)
--编辑
Jan 使用的假设是正确的:样本形成与 [0,0] 对齐的规则矩形或正方形网格(在 X-Y 平面中)。但我想考虑 Z 方向的位移来计算距离。您可以将高度图视为地形,并将我正在寻找的算法视为向探险者提供的指令,该指令仅在给定纬度或经度的路径上行驶,标记距离 A 为 R 的点。步行距离,这是考虑到到目前为止所做的所有 Z 位移。探险者也在山谷中攀爬和下降。
这个简单的算法是这样的。我们知道给定 R,x 和 y 轴上的最大位移对应于完全平坦的表面。如果没有斜率,x,y 点都在边界正方形 Ax-R
此时,它将开始向靠近的单元格移动,因为如果周界进入网格的一个单元格的边缘,它也必须退出该单元格。
【问题讨论】:
-
“圆心在 A 和半径 R” - 请澄清。如果它是
[X,Y]空间中的一个圆圈(自上而下的视图),那么它归结为勾股定理。如果它是[X,Y,Z]空间中的一个圆,则该圆不位于表面上。如果您的意思是一个球体,则从上到下抽取样本并过滤。 -
3D 中的圆不是由其中心和半径定义的。您还需要它的法线(或它的切平面)。圆平面是否与曲面相切?如果是这样,您还需要描述插值技术。
-
从图中看起来好像是自上而下的视图;那么它是微不足道的。
-
计算步行距离并非易事。找到一定距离的点仍然更难。
-
@AlexDarsonik 这并不总是产生最短路径。
标签: algorithm math 3d computational-geometry