2

我有很多 3D 平面。我需要知道的是计算纵横角的方式。我希望,我可以通过使用每个平面的投影法向量(我的平面方程是 ax+by-z+c=0;所以这个平面的法向量是 a,b,-1)到 XY 来计算纵横角飞机。然后,我可以从 Y 轴计算纵横角。但是,在投影到 XY 平面后,我不知道如何获得投影的法线向量。然后,我可以应用给出两个向量之间角度的方程来计算我想要的向量与 y 轴的角度。

另一方面,我发现,纵横角定义为沿平面最陡坡度的任何线与北方向(此处为 Y 轴)之间的角度。这个定义是否会遵循我提出的采用法线向量的方法?我的意思是,投影法线向量是否总是沿着平面的最陡坡给出?另外,有人告诉我,这个问题应该被视为二维问题。请评论我并将相关公式发送给我以计算纵横角。谢谢你。

4

2 回答 2

2

一些快速的谷歌搜索揭示了纵横角的定义。

http://www.answers.com/topic/aspect-angle

它是北半球地理北方与南半球地理南方之间的角度。所以基本上它是一个斜坡面对最近极点的量度。

如果你的世界是平面的而不是球形的,它会简化事情,所以是的 - 一个 2D 问题。我将使这个假设具有以下含义:

  • 在球形世界中,北极是球面上的一个点。在平面世界中,“极点”是无限远的平面。想想在你的世界某处遥远的地方有一架飞机,表示“北方”。只有这架飞机的法线在这项任务中很重要。该平面的单位法线为 N (nz,ny,nz)。
  • Up 是指向U (ux,uy,yz) 的向量。这是地平面的单位法线向量。

现在可以像往常一样 将平面V (a,b,c)的单位法线向量投影到地平面上的向量P上: P = V - ( V dot U ) U

现在很容易测量平面的纵横角 - 它是“极”平面N与由acosP dot N)给出的投影平面法线P之间的角度。

由于北对您来说是正 Y 轴,因此我们有N = (0, 1, 0)。然后我猜你有U = (0, 0, 1), 正 Z。这将更加简化事情 - 要在地平面上投影,我们只需剥离 Z 部分。纵横角是 (a,b) 和 (0,1) 之间的角度。

aspectAngle = acos(b / sqrt(a*a + b*b))

请注意,与地平面平行的平面没有明确定义的纵横角,因为没有坡度可以测量纵横角。

于 2011-02-06T00:45:47.057 回答
0

您正在使用什么样的表面?TINS(三角形不规则网络)或 DEM(数字高程模型)?

如果您使用光栅图像创建表面,则计算纵横比的算法基本上是一个移动窗口,它检查中心像素加上 8 个相邻像素。

将中心与每个邻居进行比较,并检查距离上的海拔差异(上升超过运行)。您可以参数化距离检查(北、南、东和西邻居的距离 = 1,西北、西南、东南和东北的距离 = sqrt(2))以使其更快。

你也可以在 gis.stackexchange 上问这个问题。那里有很多人可以帮助你。

编辑:http: //blog.geoprocessamento.net/2010/03/modelos-digitais-de-elevacao-e-hidrologia/

这个网站,altought 葡萄牙语,将帮助您可视化算法。在计算出中心像元与其八个相邻像元之间的最高斜率后,根据中心像元与相邻像元之间的最高斜率像元的位置,分配 0、2、4、8、16、32、64 或 128。

于 2011-02-06T11:52:13.423 回答