00001
00002
00003
00004
00005 package org.hfbk.vis;
00006
00007 import java.nio.FloatBuffer;
00008
00009 import org.dronus.gl.Buffers;
00010 import org.hfbk.nubsi.Spacemouse;
00011 import org.lwjgl.opengl.GL11;
00012 import org.lwjgl.util.vector.Matrix4f;
00013 import org.lwjgl.util.vector.Vector3f;
00014
00027 public class SpacemouseFreedomViewpoint extends MouseViewpoint {
00028 Spacemouse sm;
00029
00030 Matrix4f transf=new Matrix4f();
00031
00032 float speed=15;
00033
00034 public SpacemouseFreedomViewpoint() {
00035 sm=Spacemouse.instance;
00036 }
00037
00038
00039 public void render(float dt) {
00040
00041 Vector3f trans=new Vector3f(sm.trans), rot=new Vector3f(sm.rot);
00042
00043 Matrix4f temp=new Matrix4f();
00044 trans.scale(-speed*dt);
00045 temp.translate(trans);
00046
00047 rot.scale(dt);
00048 temp.rotate(rot.x, new Vector3f(-1,0,0));
00049 temp.rotate(rot.y, new Vector3f(0,-1,0));
00050 temp.rotate(rot.z, new Vector3f(0,0,-1));
00051
00052 Matrix4f.mul(temp,transf, transf);
00053
00054 FloatBuffer transfFb=Buffers.matrixBuffer();
00055 transf.store(transfFb);
00056 transfFb.rewind();
00057 GL11.glLoadMatrix(transfFb);
00058 }
00059 }