Я пытаюсь повернуть линию вокруг точки, которая не является (0,0).Вращение линии вокруг точки в OpenGL
Для этой программы я стараюсь не использовать glRotatef()
и пытаюсь использовать тригонометрию. Однако длина линии всегда будет меняться.
Любые предложения?
Это мой код:
public class World implements GLEventListener, KeyListener
{
double xOne = 0.1;
double yOne = 0.1;
double xTwo = 0;
double yTwo = 0.01;
double i = 220.987;
public World()
{
}
public void init(GLAutoDrawable gld)
{
Animator theAnimator = new Animator(gld);
theAnimator.start();
}
public void display(GLAutoDrawable gld)
{
GL gl = gld.getGL();
gl.glEnable(gl.GL_BLEND);
gl.glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
gl.glBegin(gl.GL_LINES);
gl.glColor3d(1,0,0);
gl.glVertex2d(xOne ,yOne);
gl.glColor3d(0,0,1);
gl.glVertex2d(xTwo, yTwo);
gl.glEnd();
gl.glFlush();
//UPDATE
}
public void reshape(GLAutoDrawable gLAutoDrawable, int _int, int _int2, int _int3, int _int4)
{
}
public void displayChanged(GLAutoDrawable gLAutoDrawable, boolean _boolean, boolean _boolean2)
{
}
public void keyTyped(KeyEvent ke)
{
}
public void keyPressed(KeyEvent ke)
{
if(ke.getKeyCode() == KeyEvent.VK_SPACE)
{
xTwo = (Math.cos(Math.toRadians(i))+xOne);
yTwo = (Math.sin(Math.toRadians(i))+yOne);
i++;
}
}
public void keyReleased(KeyEvent ke)
{
}
}
Кстати, (xOne, yOne)
является стационарной точкой
Извините, я не понял, что – kimchiboy03
@ kimchiboy03 Это не очень информативно. Если вы хотите получить помощь, сообщите нам, что именно вы не понимаете. – HolyBlackCat
@ kimchiboy03 Я ответил на ваш вопрос, но, оглядываясь назад, похоже, что вы предпочли бы, чтобы я исправил ваш код. Я исправил свой ответ, чтобы дать вам предложение об этом. –