【问题标题】:Find a set of points of a circle draped on a 3D height map查找覆盖在 3D 高度图上的圆的一组点
【发布时间】: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


【解决方案1】:

我认为这将很难以精确的方式解决,因此我建议尝试直接的方法来模拟探索者在地表上的路径。

给定您的起点A 和行进距离d,计算XY 平面上从Ad 的点P 的圆。

对于P 中的每个点p,将线段A-p 与您的网格相交,这样您就可以得到一系列点,在这些点上,探索者从一个网格正方形穿过另一个网格正方形,在如果探险者从A 出发,就会发生这种情况。然后应该通过从您的网格数据中插值来为这些点提供 z 坐标。 因此,您可以通过此点序列前进并跟踪到目前为止的行进距离。最终将达到目标距离 - 将 p 调整到该点。

P 现在包含您要查找的周长。根据需要调整样本保真度(P 的大小)。

【讨论】:

  • 我不认为网格上直线的 xy 平面上的投影(以测地线方式)本身不是直线......不是吗?
  • 或者是?我真的很困惑。如果你说的对,我一定会去的
  • 你说得对! xy 平面上的方向实际上永远不会改变,它只是向量的垂直分量。哇,我花了这么多时间在这上面......没有任何意义
【解决方案2】:

澄清一下 - 您在 3d 中有一个三角曲面,对于网格中给定的起始顶点 Vi,您希望找到一组顶点 U,这些顶点可通过沿曲面的路径(即测地线)到达) 长度为Li <= R

一种方法是将其转换为基于图形的问题:

  1. 形成加权无向图G(V,E),其中V 是三角曲面网格中的顶点集,E 是该网格中的边集。边权重应该是每条边的欧几里得(3d)长度。此图是离散距离图 - 网格中每个相邻顶点之间“沿表面”的距离。
  2. 从起始顶点Vi 运行Dijkstra's 算法的变体,仅扩展满足约束Li <= R 的长度为Li 的路径。访问U 的顶点集将是可以通过Li <= R 的最短(测地线)路径到达的顶点。

这种方法的精度应该与表面网格的分辨率有关——只要每个单元内的表面曲率不太高,欧几里得边长应该是实际测地距离的良好近似值,如果不是,表面网格应在该区域进行细化。

希望这会有所帮助。

【讨论】:

  • 谢谢,请原谅我的图表,但我真正要寻找的是位于三角形网格边缘的一组点(即使它们不是顶点),其测地线距离从 Vi 正好是 R。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-22
  • 1970-01-01
相关资源
最近更新 更多