为每个三角形计算矩阵与地形的角度
Calculate angle of matrix with topography for each triangle
我有一个包含地形数据的矩阵,比方说几座山。我想获得每个数据点与垂直线的角度信息。这里有两个例子:
- 如果我考虑山脚附近的一个完全平坦的地方,我的角度为 90°(与垂直线成 90°)。
- 如果我在山的最陡处,我的角度会更小,比如说 50°。
为了计算这个,我想我必须连接所有地形数据,以便(至少)三个附近的像素形成三角形。之后我必须计算这个三角形的角度。
我可以使用现有算法吗?
如果你的高度图是一个矩阵 A 那么你可以通过
来近似每个内部点(没有边缘)的梯度分量
Xgrad = (A(2:end-1,3:end)-A(2:end-1,1:end-2))/2;
Ygrad = (A(3:end,2:end-1)-A(1:end-2,2:end-1))/2;
角度将是
deg = (pi/2 - atan(sqrt(Xgrad.^2 + Ygrad.^2),1))/pi*180;
根据您的高度图,微分数值可以产生 "fuzzy" 结果。也许您必须进行一些模糊过滤才能产生更平滑的渐变。
我有一个包含地形数据的矩阵,比方说几座山。我想获得每个数据点与垂直线的角度信息。这里有两个例子:
- 如果我考虑山脚附近的一个完全平坦的地方,我的角度为 90°(与垂直线成 90°)。
- 如果我在山的最陡处,我的角度会更小,比如说 50°。
为了计算这个,我想我必须连接所有地形数据,以便(至少)三个附近的像素形成三角形。之后我必须计算这个三角形的角度。
我可以使用现有算法吗?
如果你的高度图是一个矩阵 A 那么你可以通过
来近似每个内部点(没有边缘)的梯度分量 Xgrad = (A(2:end-1,3:end)-A(2:end-1,1:end-2))/2;
Ygrad = (A(3:end,2:end-1)-A(1:end-2,2:end-1))/2;
角度将是
deg = (pi/2 - atan(sqrt(Xgrad.^2 + Ygrad.^2),1))/pi*180;
根据您的高度图,微分数值可以产生 "fuzzy" 结果。也许您必须进行一些模糊过滤才能产生更平滑的渐变。