Я рекомендую искусственно установить prevPoint и currentPoint в (0,0) (0,1), а затем пошагово пройти по коду (с помощью отладчика или глазами), чтобы увидеть, имеет ли каждая часть смысл для вас, и угол вращение и ось в конце блока - это то, что вы ожидаете.
Если они соответствуют вашим ожиданиям, то я предполагаю, что ошибка в логике, которая возникает после этого. то есть вы затем берете угол и ось и конвертируете их в матрицу, которая умножается для перемещения модели. В этом конвейере происходит ряд условных решений, которые в случае замены могут привести к типу ошибки:
- Предполагает ли формула, что угол наматывается влево или вправо вокруг оси.
- Предполагается ли преобразование вращать объект в мире или вращать камеру.
- Предполагается, что матрица должна работать умножением слева или справа.
- Являются ли строки или столбцы матриц смежными в памяти.