Algorithm 查找覆盖在三维高度贴图上的圆的一组点

Algorithm 查找覆盖在三维高度贴图上的圆的一组点,algorithm,math,3d,computational-geometry,Algorithm,Math,3d,Computational Geometry,我有一个NxN值的高度图 我想找到,给定一个点a(红点),它的x和y坐标是给定的(z是从数据中知道的,所以a是曲面的顶点),一组点位于圆的圆周上,中心在a,半径为R,这是圆“布”(灰色)的一个很好的近似值覆盖在由数据点描述的虚拟曲面上 采样,即我试图找到的一组点之间的倒数距离,不需要是均匀的,但我仍然希望找到至少所有的点,这些点是网格边缘与距离A为R的圆的交点 如何找到这组点 这是一个已知的问题吗 (来源:) --编辑 Jan使用的假设是正确的:样本形成与[0,0]对齐的规则矩形或方形网格(在

我有一个NxN值的高度图

我想找到,给定一个点a(红点),它的x和y坐标是给定的(z是从数据中知道的,所以a是曲面的顶点),一组点位于圆的圆周上,中心在a,半径为R,这是圆“布”(灰色)的一个很好的近似值覆盖在由数据点描述的虚拟曲面上

采样,即我试图找到的一组点之间的倒数距离,不需要是均匀的,但我仍然希望找到至少所有的点,这些点是网格边缘与距离A为R的圆的交点

如何找到这组点

这是一个已知的问题吗


(来源:)

--编辑

Jan使用的假设是正确的:样本形成与[0,0]对齐的规则矩形或方形网格(在X-Y平面中)。但是我想考虑Z方向的位移来计算距离。你可以把高度图看作是一个地形,我正在寻找的算法是给一个探险者的指示,它只在给定纬度或经度的路径上移动,标记距离a.Walking距离R处的点,这是考虑到目前为止所有Z位移的。探险家也在山谷里爬上爬下

这方面的简单算法是这样的。我们知道,给定R,x轴和y轴上的最大位移对应于一个完全平坦的表面。如果没有坡度,x、y点将全部位于边界正方形Ax-R在这一点上,它将开始移动到闭合单元,因为如果周长进入网格的一个单元的边缘,它也必须退出该单元。

只是澄清一下-您有一个三维的三角化曲面,对于网格中给定的起始顶点
Vi
,您希望找到一组顶点
U
,这些顶点可通过沿曲面(即测地线)的路径(长度
Li)到达,我认为这将很难精确解算,因此,我建议尝试直接的方法,模拟探险者在地表上的路径

给定起点
A
和行驶距离
d
,计算XY平面上
d
A
的点的圆
p

对于
p
中的每个点
p
,将线段
A-p
与您的网格相交,这样您就得到了一系列点,探测器从一个网格正方形穿过到下一个网格正方形,顺序与探测器从
A
移动时发生的顺序相同。然后,这些点应通过从栅格数据插值得到z坐标。 因此,您可以通过该点序列前进,并跟踪到目前为止行驶的距离。最终将达到目标距离-将
p
调整到该点


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

“圆心为A,半径为R的圆”-请澄清。如果它是
[X,Y]
空间(自顶向下视图)中的一个圆,那么它可以归结为毕达哥拉斯定理。如果它是
[X,Y,Z]
空间中的一个圆,则该圆不位于曲面上。如果你指的是一个球体,那么从上到下采样并过滤。3D中的圆不是由其中心和半径定义的。您还需要它的法线(或切线平面)。圆平面是否与曲面相切?如果是这样的话,你还需要描述插值技术;计算步行距离并不简单。在一定距离上寻找点更难。@Alexardarsonik,这并不总是产生最短路径。谢谢,请原谅我的图表,但我实际上要寻找的是位于三角形网格边上的点集(即使它们不是顶点)它与Vi的测地距离正好是R。我不认为网格上直线在xy平面上的投影(以测地方式)本身就是一条直线。。。不?还是是?我真的很困惑。如果你说的是对的,我一定会去做的。事实上你是对的!xy平面上的方向实际上永远不会改变,只是向量的垂直分量会改变。哇,我在这上面花了这么多时间。。。。白白