Вычисление эйлеровых углов линии относительно трех осей - PullRequest
0 голосов
/ 19 февраля 2019

Я задавал вопрос, похожий на этот, ранее, но с тех пор получил дальнейшее развитие, а также неправильно обозначил вопрос и хотел получить некоторую помощь по математике вокруг вопроса, если это возможно.

IУ меня есть трехмерная сфера с точками, равномерно распределенными по ее поверхности, координаты которых я знаю.Из этих координат я пытаюсь определить ориентацию некоторых шипов, выходящих с поверхности моей сферы вдоль вектора между центром сферы и точкой, в которой лежат координаты.

Идея состоит в том,эти углы Эйлера будут очень полезны при последующем выравнивании шипов, поэтому они все примерно одинаковой ориентации, если я собираюсь вычеркнуть все шипы из изображения.

Поскольку координаты на сфере равномернына расстоянии я могу просто взять средние координаты x, y и z, чтобы дать мне центр, и затем я могу нарисовать вектор от центра к каждой координате по очереди.

В этом случае нужно вычислить углы Эйлерасначала вокруг оси z, затем вокруг новой оси y и, наконец, снова вокруг новой оси z.

Моя центральная точка в настоящее время определяется как средняя координата всех моих координат.Это работает, поскольку координаты равномерно распределены вокруг сферы.

Затем я использую уравнение, которое утверждает

cos(theta) = dot product of the two vectors / magnitude of each vector multiplied together

на осях x и y.Один из моих векторов - это x и y вектора, который меня интересует, а другой - ось y (0,1).Это говорит мне о вращении вокруг оси z с осью y, равной 0. Я также вычисляю градиент линии на этой 2D-плоскости, чтобы вычислить, работаю ли я между 0 и +180 или 0 и -180.

Затем я поворачиваю ось x на только что рассчитанный угол, чтобы получить x ', используя простую двумерную матрицу вращения.

Затем я вычисляю угол таким же образом, как и выше, но на этот раз вокруг оси y, используя x'и z 'как мой второй вектор (где z' = z).

Наконец, я повторяю то же самое, как указано выше, чтобы вычислить новые z '' и x '' и сделать мой окончательный расчет.

Это дает мне три угла, но когда я отображаю в matlab с помощью команды quiver3, я не получаю правильную ориентацию с помощью этого метода.Я полагаю, что просто не понимаю, как правильно рассчитать углы Эйлера, и что-то путаю в пути.

Я надеялся, что кто-то более знающий, чем я, сможет взглянуть на мой запланированный метод вычисления угла Эйлера и найтилюбые недостатки.

Спасибо.

...