Некоторое быстрое поиск в Google показывает определение аспектного угла.
http://www.answers.com/topic/aspect-angle
Это угол между географическим севером в северном полушарии и географическим югом в южном полушарии.Так что в основном это мера того, насколько склон обращен к ближайшему полюсу.
Если ваш мир плоский, а не сферический, он упростит вещи, так что да - проблема 2D.Я сделаю это предположение, имеющее следующие последствия:
- В сферическом мире северный полюс является точкой на сфере.В плоском мире «полюс» - это плоскость на бесконечности.Подумайте о самолете где-то далеко в вашем мире, обозначающем «север».Только нормаль этой плоскости важна в этой задаче.Нормальная единица этой плоскости равна N (nz, ny, nz).
- Up - вектор, направленный вверх U (ux, uy, yz).Это единичный вектор нормали плоскости земли.
Единичный вектор нормали плоскости V (a, b, c) теперь можно проецировать на вектор * 1022.* 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))
Обратите внимание, что плоскости, параллельные плоскости земли, не имеют четко определенного аспектного угла, поскольку нет никакого наклона для измерения углового аспекта от.