MaikelO1 Ответов: 1

Вычисление углов между координатами / линиями


У меня есть вопрос о том, как вычислить углы между координатами / линиями.
У меня есть четыре метки, заполненные координатами XY, разделенными запятыми.
Что C# код, который я должен использовать, чтобы получить требуемое значение в Label_Angle_Result

Предпочтительный маршрут
Неподвижная Точка А . Label_FP_A . X, Y
Фиксированная Точка B . Label_FK_B . X, Y

Измеренная точка GPS
Точка GPS есть . Label_GPS_A . X, Y
GPS-точка B . Label_GPS_B . X, Y

Результат
Угол Label_Angle_Result . номер

Что я уже пробовал:

Я смотрю в САПР-решения, но не нашел здесь ничего хорошего в связи с этим..

BillWoodruff

вы работаете с "плоским пространством" или какой-то формой проекции (Меркатор, сферическая и т. д.) ? Значение угла имеет "смысл" только тогда, когда вы знаете структуру системы координат, которая является контекстом, в котором существует угол.

RedDk

Смотри формула гаверсинуса ...

1 Ответов

Рейтинг:
10

Kornfeld Eliyahu Peter

Поскольку у вас есть 3 компонента, мы говорим о векторах в 3D-пространстве (почему?)...
Чтобы вычислить угол вы должны знать две вещи:

1. Скалярное произведение двух векторов...

$\векторы{а} \cDOT на \ВМК{б}$

Который
$(ох{х} + ох{г} + ох{З}) \раза (что{Х} +, что{г} +, что{з})$


2. Величина векторов...
$\параллель \векторы{а} \параллельного$

Который
$такой: \sqrt{ох{х}^{2} + Ох{г}^{2} + Ох{З}^{2}}$


Затем вы можете вычислить косинус угла, который является обратимым...
$\потому что(\тета) = \фрац{\векторы{а} \cDOT на \ВМК{б}} { ||\векторы{а}|| \раз ||\ВМК{б}||}$


---

В 2D пространстве все гораздо проще:
$\потому что(\тета) = \векторы{а} \cDOT на \ВМК{б}$


MaikelO1

Стом! ik werk в WGS84 dat-это 2D..

Kornfeld Eliyahu Peter

Я наверняка тупо не замечая, что...настолько очевидны, форма образец...
Я настолько глуп, что даже знаю, что косинус угла между двумя двумерными векторами - это точечное произведение векторов...(смотреть выше)

MaikelO1

забыл перевести, извините .. "глупо с моей стороны, я работаю в WGS84, так что у меня тогда нет значения z" tnxs для вашей помощи

CPallini

5.

Kornfeld Eliyahu Peter

Спасибо...
(Он должен пойти к Крису, который исправил математику менее чем за 24 часа...)

0x01AA

Теперь я вижу, что вы искали, выглядит отлично :) A 5. Bruno

Kornfeld Eliyahu Peter

Спасибо...