Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
Просто какие-то координаты в трехмерном пространстве. Было три числа, запихнули их в объект класса Vertex3f. В твоем случае - позиция частицы.svk написал(а):Что такое Vertex3f, и что мы поворачиваем?(
Код:Vertex3f localVertex = new Vertex3f(1, 0, 0);
Это что?
В смысле, мы сначала повернули всю системуGloomyFolken написал(а):Просто какие-то координаты в трехмерном пространстве. Было три числа, запихнули их в объект класса Vertex3f. В твоем случае - позиция частицы.svk написал(а):Что такое Vertex3f, и что мы поворачиваем?(
Код:Vertex3f localVertex = new Vertex3f(1, 0, 0);
Это что?
Matrix3f rotMatrix = rotationMatrix(90, 0, 1, 0);
Vertex3f localVertex = new Vertex3f(1, 0, 0);
Vertex3f rotatedVertex = Matrix3f.transform(rotMatrix, localVertex, null)
Matrix3f rotMatrix = rotationMatrix(90, 0, 1, 0); //поворот на 90 градусов вокруг вертикальной оси
Vector3f vertex = new Vector3f(1, 0, 0);
Matrix3f.transform(rotMatrix, vertex, vertex);
Vector3f vertex2 = new Vector3f(1, 0, 1);
Matrix3f.transform(rotMatrix, vertex2, vertex2);
Vector3f vertex3 = new Vector3f(1, 1, 0);
Matrix3f.transform(rotMatrix, vertex3, vertex3);
например точка А имеет координаты 1 1 1
Vector3f vecA = new Vector3f(1, 1, 1);
Как мне их повернуть, и на выходе получить координаты "повёрнутыми", например, мы повернули на 90° по оси Y
Matrix3f.transform(rotMatrix, vecA, vecA); //матрицу создаем чуть раньше при помощи метода, который я уже дал
//Получится ни разу не (1 -1 1). (1 -1 1) было бы, если бы мы отразили по оси Y. Мы же поворачиваем вокруг оси. Представь себе палку, которая смотрит вверх из нашей локальной системы координат. Вот наша вершина сначала "прикрепляется" к этой палке, а потом палка крутится против часовой стрелки, и вершина крутится вместе с ней. В итоге получится (1 1 -1), если я ничего не напутал с направлением вращения.
И всё это поставить с центром в мир
worldX = vecA.x + translationPointX; //translationPointX - x координата центра нашей локальной системы координат в глобальной системе координат.
worldY = vecA.y + translationPointY;
worldZ = vecA.z + translationPointZ;
//ну или как однострочный вариант:
vecA = Vector3f.add(vecA, translationPoint, vecA); //теперь в vecA глобальной системе координат.