Matlab:为高程图上的点计算 horizon 的表观角度
Matlab: Calculate apparent angle of horizon for points on elevation map
我有一张山区的高程图(带有 z 值的大型二维数组)
我想知道我的高度图上某些点的所有罗盘方位的表观 horizon 角的高度。
为了说明,这个 website 有一些我想要的例子。
编辑:
我已经停止尝试寻找执行此操作的函数,现在正在编写自己的函数。
我的方法是从我的点径向绘制线,沿这些线插值高度,然后沿每条线取 max(z/r)
。
如果您知道某个函数已经执行此操作,请告诉我,如果不知道,希望我能尽快上传一个。
假设您有 3 个矩阵,X
Y
和 Z
以及您的位置 (x,y,z)
,您可以计算
R = sqrt((X-x)**2 + (Y-y)**2)
(发送丹尼尔...)
R = sqrt((X-x).^2 + (Y-y).^2)
Z = (Z-z)
即位置的距离和相对高度,所以
T = Z/R
是一个切线矩阵,它是从该位置到周围地形的视角的单调函数。
对于给定的方向,您可以找到网格上最近的点列表,其中有 Bresenham algorithm 的变化,最后在您的点列表中找到最高的 T
值。
最终,从不同方向的最大 T
(切线)值列表中,您可以计算出您所在位置的视角。
我有一张山区的高程图(带有 z 值的大型二维数组)
我想知道我的高度图上某些点的所有罗盘方位的表观 horizon 角的高度。
为了说明,这个 website 有一些我想要的例子。
编辑: 我已经停止尝试寻找执行此操作的函数,现在正在编写自己的函数。
我的方法是从我的点径向绘制线,沿这些线插值高度,然后沿每条线取 max(z/r)
。
如果您知道某个函数已经执行此操作,请告诉我,如果不知道,希望我能尽快上传一个。
假设您有 3 个矩阵,X
Y
和 Z
以及您的位置 (x,y,z)
,您可以计算
(发送丹尼尔...)R = sqrt((X-x)**2 + (Y-y)**2)
R = sqrt((X-x).^2 + (Y-y).^2)
Z = (Z-z)
即位置的距离和相对高度,所以
T = Z/R
是一个切线矩阵,它是从该位置到周围地形的视角的单调函数。
对于给定的方向,您可以找到网格上最近的点列表,其中有 Bresenham algorithm 的变化,最后在您的点列表中找到最高的 T
值。
最终,从不同方向的最大 T
(切线)值列表中,您可以计算出您所在位置的视角。