public void lookAt(Vector3f eye, Vector3f target, Vector3f up){
		m_eye = eye;
		m_target = target;
		m_targetYAxis = up;
		
		Vector3f.sub(eye, target, m_zAxis);
		m_zAxis.normalise();
		
		Vector3f.cross(m_zAxis, DEFAULT_NEGATIVE_CONSTANT, m_viewDir);
		
		Vector3f.cross(up, m_zAxis, m_xAxis);
		m_xAxis.normalise();
		
		Vector3f.cross(m_zAxis, m_xAxis, m_yAxis);
		m_yAxis.normalise();
		m_xAxis.normalise();
		
		float ent1 = -(Vector3f.dot(m_xAxis, eye));
		float ent2 = -(Vector3f.dot(m_yAxis, eye));
		float ent3 = -(Vector3f.dot(m_zAxis, eye));
		
	    m_viewMatrix.m00= m_xAxis.x;
	    m_viewMatrix.m10 = m_xAxis.y;
	    m_viewMatrix.m20 = m_xAxis.z;
	    m_viewMatrix.m30 = ent1;

	    m_viewMatrix.m01 = m_yAxis.x;
	    m_viewMatrix.m11 = m_yAxis.y;
	    m_viewMatrix.m21 = m_yAxis.z;
	    m_viewMatrix.m31 = ent2;

	    m_viewMatrix.m02 = m_zAxis.x;
	    m_viewMatrix.m12 = m_zAxis.y;
	    m_viewMatrix.m22 = m_zAxis.z;    
	    m_viewMatrix.m32 = ent3;
	    
	    m_orientation.toRotationMatrix(m_viewMatrix);
	    
	    Vector3f offset = new Vector3f();
	    Vector3f.sub(m_target, m_eye, offset);
	    
	    							//Magnitude equation
	    m_offsetDistance = (float) Math.sqrt(offset.x * offset.x + offset.y * offset.y + offset.z * offset.z);

	}