如何计算Aspect角度

时间:2011-02-05 09:09:53

标签: c++ geometry computational-geometry graphics projective-geometry

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

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

2 个答案:

答案 0 :(得分:2)

一些快速的Google搜索显示了方位角的定义。

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

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

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

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

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

现在很容易测量平面的纵横角 - 它是“极”平面 N P 之间的角度> acos ( P N )。

由于北方是正Y轴,我们有 N =(0,1,0)。然后我猜你已经 U =(0,0,1),正Z.这将简化事情 - 在地平面上投影我们只是剥离Z部分。然后,纵横角是(a,b)和(0,1)之间的角度。

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

请注意,与地平面平行的平面没有明确定义的纵横角,因为没有斜率来测量纵横角。

答案 1 :(得分:0)

您使用的是哪种表面? TINS(三角形不规则网络)或DEM(数字高程模型)?

如果您使用光栅图像来创建曲面,则计算宽高比的算法基本上是一个移动窗口,它会检查中心像素加上8个邻居。

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

您也可以在gis.stackexchange上提出这个问题。很多人都能在那里帮助你。

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

这个网站,葡萄牙语,将帮助您可视化算法。计算中心单元与其八个邻居之间的最高斜率后,分配0,2,4,8,16,32,64或128,具体取决于在中心和邻居之间呈现最高斜率的单元的位置。