Я знаю, что есть много вопросов о трехмерном вращении, на которые здесь даны ответы, но все они, похоже, имеют дело с вращательными матрицами и кватернионами в OpenGL (и мне все равно, получу ли я блокировку подвеса). Мне нужно получить трехмерные координаты EX: (x, y, z) точки, которая всегда должна быть на одном и том же расстоянии, сейчас я назову ее «d» от начала координат. Единственная информация, которую я имею в качестве ввода - это дельтакс и дельта мыши по экрану. Итак, вот что я попробовал:
Во-первых:
thetaxz+=(omousex-mouseX)/( width );
thetaxy+=(omousey-mouseY)/( height);
(thetaxy - это угол в радианах по оси x, y и thetaxz по оси x, z)
(Я ограничиваю оба угла так, чтобы, если они меньше или равны 0, они равны 2 * PI)
Второе:
pointX=cos(thetaxz)*d;
pointY=sin(thetaxy)*d;
(pointX - это координата x точки, а pointY - это y)
Третье:
if(thetaxz)<PI){
pointZ=sqrt(sq(d)-sq(eyeX/d)-sq(eyeY/d));
}else{
pointZ=-sqrt(abs(sq(d)-sq(eyeX/d)-sq(eyeY/d)));
}
(sq () - это функция, которая возводит в квадрат, а abs () - это функция абсолютного значения)
(точка Z должна быть координатой точки z, за исключением пересечения между положительным полушарием z и отрицательным полушарием z. По мере приближения к краю точка растягивается дальше, чем расстояние, на которое она всегда должна быть в x и y и, казалось бы, случайным образом около 0,1-0,2 радиана от thetazz, координата z становится NAN или не определена)
Я думал об этом некоторое время, и, честно говоря, мне трудно исказить понятие кватернионов и вращательных матриц, однако, если вы покажете мне, как их использовать для генерации фактических координат, я был бы рад узнать. Я все еще предпочел бы, чтобы я мог просто использовать некоторую тригонометрию по нескольким осям. Заранее благодарю за любую помощь, и если вам нужна дополнительная информация, просто спросите.
Подсказка / идея в последнюю минуту: я думаю, что это может иметь какое-то отношение к позиции z, влияющей на позиции x и y назад, но я не уверен.
РЕДАКТИРОВАТЬ: Я нарисовал диаграмму:
![enter image description here](https://i.stack.imgur.com/9y2zM.png)