Здравствуйте! Рисую 3D-объект с помощью OpenGl на java. Возникла необходимость перемещать и вращать этот объект вокруг своих осей. Пользовался стандартным вариантом для вращения:
gl.glRotatef(angleRotateX, 1f, 0f, 0f);
gl.glRotatef(angleRotateY, 0f, 1f, 0f);
gl.glRotatef(angleRotateZ, 0f, 0f, 1f);
Но, на большое удивление, ожидаемо работает только вращение вокруг Z. Вращение вокруг остальных осей происходит вокруг глобальной системы координат.
Попытался использовать кватернионы:
Quaternion xQ = new Quaternion((float) Math.sin(Math.toRadians(angleRotateX) / 2f), 0f, 0f, (float) Math.cos(Math.toRadians(angleRotateX) / 2f));
Quaternion yQ = new Quaternion(0f, (float) Math.sin(Math.toRadians(angleRotateY) / 2f), 0f, (float) Math.cos(Math.toRadians(angleRotateY) / 2f));
Quaternion zQ = new Quaternion(0f, 0f, (float) Math.sin(Math.toRadians(angleRotateZ) / 2f), (float) Math.cos(Math.toRadians(angleRotateZ) / 2f));
xQ.normalize();
yQ.normalize();
zQ.normalize();
float[] xM = new float[3];
float[] yM = new float[3];
float[] zM = new float[3];
Quaternion rQ = xQ.mult(yQ).mult(zQ);
rQ.toAxes(xM, yM, zM, new float[16]);
gl.glRotatef(angleRotateX, xM[0], xM[1], xM[2]);
gl.glRotatef(angleRotateY, yM[0], yM[1], yM[2]);
gl.glRotatef(angleRotateZ, zM[0], zM[1], zM[2]);
Результат, к сожалению, остался точно таким же. Подскажите, пожалуйста, что я делаю не так?
Виртуальный выделенный сервер (VDS) становится отличным выбором
Здравствуйте, подскажите, пожалуйста, как получить все элементы gridviewУ меня в gridview находится матрица editText, записывалось через собственный...
Начинаю знакомиться с вебРассматриваю примеры HelloWorld'ов, где в некоторых приводится реализация с использованием сервлетов, и при открытии...
Я только начал использовать RealmСначала понятно, если хранить один класс, то есть один объект