Название: Определить проекции вектора гравитации на три оси зная углы поворота по осям Отправлено: kuzulis от Март 19, 2021, 10:46 Всем привет.
Чую, мне кирдык. Есть ли вариант пересчитать углы поворота вокруг осей X,Y,Z в проекции вектора гравитации на эти оси? Тут нашел пример http://bitaks.com/resources/inclinometer/content.html, но там приведены прямые формулы - т.е. они получают углы из проекций, а мне надо наоборот - проекции из углов: Название: Re: Определить проекции вектора гравитации на три оси зная углы поворота по осям Отправлено: Igors от Март 19, 2021, 11:15 Есть ли вариант пересчитать углы поворота вокруг осей X,Y,Z в проекции вектора гравитации на эти оси? Не понял. Может так:Тут нашел пример http://bitaks.com/resources/inclinometer/content.html, но там приведены прямые формулы - т.е. они получают углы из проекций, а мне надо наоборот - проекции из углов: - есть заданный начальный вектор (ненулевой). Он поворачивается на заданные углы, порядок поворота XYZ. Найти повернутый вектор Название: Re: Определить проекции вектора гравитации на три оси зная углы поворота по осям Отправлено: ssoft от Март 19, 2021, 11:20 Есть ли вариант пересчитать углы поворота вокруг осей X,Y,Z в проекции вектора гравитации на эти оси? Тут нашел пример http://bitaks.com/resources/inclinometer/content.html, но там приведены прямые формулы - т.е. они получают углы из проекций, а мне надо наоборот Нужно выразить Ax, Ay, Az из представленных формул? Да... :o Взять тангенс и возвести в квадрат каждое из уравнений и ... Получается сложнейшая система из 3-х линейных уравнений относительно A2x, A2y, A2z. Название: Re: Определить проекции вектора гравитации на три оси зная углы поворота по осям Отправлено: kuzulis от Март 19, 2021, 11:31 Цитата: Igors Не понял. Может так: Есть вектор гравитации G - он направлен всегда вниз по оси Z. Его длина всегда равна 1-це. Есть акселерометр, у него есть тоже три оси X,Y,Z (типа система координат, связанная с ним). Допустим, если он лежит горизонтально, то его ось Z совпадает с вектором гравитации Z, а оси X,Y - перпендикулярны.. В итоге имеем, что проекция гравитации на ось Z - равна 1-це, а на остальные оси - по нулям. Теперь, вращаем акселерометр вокруг оси Y, против часовой стрелки на 45 градусов. Тогда угол альфа станет 45 градусов - и следовательно, проекции вектора гравитации на оси акселерометра изменятся. Теперь добавится какая то составляющая по оси X, а по оси Z - уменьшится.. Так вот.. найти эти составляющие - проекции. Цитата: ssoft Получается сложнейшая система из 3-х линейных уравнений относительно A2x, A2y, A2z. Именно, и по ходу нерешаемая. Может есть другие варианты как это делается? Название: Re: Определить проекции вектора гравитации на три оси зная углы поворота по осям Отправлено: Igors от Март 19, 2021, 11:57 Есть вектор гравитации G - он направлен всегда вниз по оси Z. Его длина всегда равна 1-це. Ну стало быть найти вектор гравитации в СК прибора. Есть акселерометр, у него есть тоже три оси X,Y,Z (типа система координат, связанная с ним). Допустим, если он лежит горизонтально, то его ось Z совпадает с вектором гравитации Z, а оси X,Y - перпендикулярны.. В итоге имеем, что проекция гравитации на ось Z - равна 1-це, а на остальные оси - по нулям. Теперь, вращаем акселерометр вокруг оси Y, против часовой стрелки на 45 градусов. Тогда угол альфа станет 45 градусов - и следовательно, проекции вектора гравитации на оси акселерометра изменятся. Теперь добавится какая то составляющая по оси X, а по оси Z - уменьшится.. Так вот.. найти эти составляющие - проекции. Код
Название: Re: Определить проекции вектора гравитации на три оси зная углы поворота по осям Отправлено: kuzulis от Март 19, 2021, 12:16 Цитата: Igors Ну стало быть найти вектор гравитации в СК прибора. Агаа... Спасибо.. Вопросы: 1) Цитировать // матрица прибора, порядок вращений XYZ QMatrix4 m; m.rotate(angleZ, 0, 0, 1); m.rotate(angleY, 0, 1, 0); m.rotate(angleX, 1, 0, 0); А надо ли мне делать это, если, к примеру, мой 3-д объект имеет Transform (https://doc.qt.io/qt-5/qml-qt3d-core-transform.html#matrix-prop) айтем? Там уже есть как бы матрица 4x4.., то я могу взять ее? 2) Нужно ли нормализовать эту матрицу в диапазон 0-1 (типа чтобы потом делать m.mapVector()) ? Если да - то как? Название: Re: Определить проекции вектора гравитации на три оси зная углы поворота по осям Отправлено: Igors от Март 19, 2021, 13:32 А надо ли мне делать это, если, к примеру, мой 3-д объект имеет Transform (https://doc.qt.io/qt-5/qml-qt3d-core-transform.html#matrix-prop) айтем? Можете если "объект соответствует прибору", т.е. матрица для того же базиса, и углы Эйлера применяются в том же порядке. Во всяком случае стоит попробоватьТам уже есть как бы матрица 4x4.., то я могу взять ее? 2) Нужно ли нормализовать эту матрицу в диапазон 0-1 (типа чтобы потом делать m.mapVector()) ? Если да - то как? Если матрица имеет неодинаковые scale по осям - то нужно (иначе можно отделаться нормализацией выходного вектора). Не используйте метод с заманчивым названием normalMatrix, просто нормируйте первые 3 строки. Ну и неясно откуда эти масштабы берутся - у прибора ничего такого не видно. И стоит ли возиться если построить матрицу из углов = неск строкНазвание: Re: Определить проекции вектора гравитации на три оси зная углы поворота по осям Отправлено: kuzulis от Март 19, 2021, 13:48 Агаа, спасибо большое! Вроде это работает. Респект и уважуха! :)
Но теперь вытекает следующий (http://www.prog.org.ru/topic_32991_0.html)вопрос. |