Как вычислить аспектный угол - PullRequest
2 голосов
/ 05 февраля 2011

У меня много трехмерных самолетов. Вещи, которые мне нужно знать, это способ вычисления аспектного угла. Надеюсь, я смогу вычислить угол аспекта, используя проекционный вектор нормали каждой плоскости (мое уравнение плоскости равно ax + by-z + c = 0; поэтому вектор нормали этой плоскости a, b, -1) к XY самолет. Затем по оси Y я могу вычислить угол аспекта. Но я не знаю, как получить проецируемый вектор Normal после проецирования на плоскость XY. Затем я могу применить уравнение, которое дает угол между двумя векторами, чтобы вычислить угол моего желаемого вектора от оси y.

С другой стороны, я обнаружил, что аспектный угол определяется как угол между любой линией, проходящей вдоль самого крутого склона плоскости, и северным направлением (здесь, ось Y). Будет ли это определение следовать моему предложенному пути, который использует нормальные векторы? Я имею в виду, всегда ли проецируемый вектор нормали находится на самом крутом склоне плоскости? Кроме того, кто-то сказал мне, что эту проблему следует рассматривать как проблему 2D. Пожалуйста, прокомментируйте меня и пришлите мне соответствующие формулы, чтобы вычислить аспектный угол. Спасибо.

Ответы [ 2 ]

2 голосов
/ 06 февраля 2011

Некоторое быстрое поиск в 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))

Обратите внимание, что плоскости, параллельные плоскости земли, не имеют четко определенного аспектного угла, поскольку нет никакого наклона для измерения углового аспекта от.

0 голосов
/ 06 февраля 2011

С какими поверхностями вы работаете?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, в зависимости от расположения ячейки, которая имела наибольший наклон между центром и соседями.

...