Я пытался сделать один объект на орбите другой:вращающихся вокруг объектов
//childX,childY,childZ are my starting coordinates
//here I count distance to the middle of my coordinate plane
float r = (float) Math.sqrt(Math.pow(childX, 2)+Math.pow(childY, 2)+Math.pow(childZ,2));
//here i convert my angles to radians
float alphaToRad = (float) Math.toRadians(findParent(figure.parentId).rotate[1]);//up_down
float betaToRad = (float) Math.toRadians(findParent(figure.parentId).rotate[0]);//left_right
float newX = (float) (r*Math.cos(betaToRad)*Math.cos(alphaToRad));
float newY = (float) (r*Math.cos(betaToRad)*Math.sin(alphaToRad));
float newZ = (float) (r*Math.sin(betaToRad));'
У меня есть координаты моей начальной точки (5,5,0) и углами 0 ° и 0 °, так что это означает , что координаты не должны меняться после вычисления новых. Но результат:
newX: 7.071068 newY: 0.0 newZ: 0.0
Каждый метод, который я пытаюсь рассчитать новые координаты, всегда имеет этот странный результат. Что это такое 7.07 и как я могу получить правильный результат?
@edit
Чтобы сделать мою новую точку относительно старой я просто добавил углы старой точки к новому:
float alphaToRad = (float) Math.toRadians(findParent(figure.parentId).rotate[1]) + Math.atan(childY/childX);
float betaToRad = (float) Math.toRadians(findParent(figure.parentId).rotate[0]) + Math.asin(childZ/r);
Теперь все работает, как это должно быть. Решено
Спасибо за помощь. Мне не нужно было создавать матрицу вращения, я просто добавил старые углы к новым, и это отлично работает. – Humberd