Есть задача рисовать объекты на земной поверности с помощью Qt5 и OpenGL. При этом систему координат, в которой находятся эти объекты можно описать так:
Направление линии визирования объекта задаётся углом азимута θ∈(0,360°) и углом места ψ∈(0,90°). Угол азимута отсчитывается от оси OY против часовой стрелки, если смотреть вдоль положительного направления оси OZ. Угол места отсчитывается от плоскости OXY. Логика самой программы работает в углах Эйлера и кватернионах, однако пользователю надо всё показывать в углах как описано выше. Таким образом, углы Эйлера перевожу в полярные координаты:
QVector2D CoordinateSystemGround::toPolar(const QVector3D& euler) const {
float z = euler.z();
if(z < 0.0f)
z += 360.0f;
return QVector2D(z, 90.0f - euler.x());
}
С этим кодом вроде проблем нет. А вот с переводом из полярных координат в углы Эйлера ничего не получается:
QVector3D CoordinateSystemGround::fromPolar(const QVector2D& polar) const {
float x = qDegreesToRadians(90.0f - polar.y());
float z = qDegreesToRadians(polar.x());
float y = qAtan(qTan(x) * qSin(z));
y = qRadiansToDegrees(y);
return QVector3D(90.0f - polar.y(), y, polar.x());
}
Вроде вращение начинается вокруг оси Z, но потом куда-то уходит в бок. Подскажите, куда копать?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
send, sendto, и sendmsg используются для пересылки сообщений в другой сокетsend можно использовать, только если сокет находится в состоянии соединения,...
Есть выпадающий список, в некоторых данных списка есть на конце слова (не действует в 2019)
В моем проекте мне нужно использовать Postgres базу, до этого момента небыло опыта работы с такой базой, настроил субд на компе все работаетПробую...
Всем приветУ меня есть, допустим, 5 скриптов (все кроме одного отключены) и мне нужно, чтобы на колесико мыши отключался рабочий скрипт и включался...