Esempio n. 1
0
void kore::Camera::rotateViewQuat(const float angle, const glm::vec3 v3Axis) {
    glm::vec3 v3View = getForward();
    glm::vec3 v3Up(0.0f, 1.0f, 0.0f);
    glm::quat quatView(0, v3View);
    glm::quat quatViewResult = glm::rotate(quatView, angle, v3Axis);
    v3View.x = quatViewResult.x;
    v3View.y = quatViewResult.y;
    v3View.z = quatViewResult.z;
    v3View    = glm::normalize(v3View);
    glm::vec3 v3Side = glm::cross(v3Up, v3View);
    v3Side = glm::normalize(v3Side);
    v3Up = glm::cross(v3View, v3Side);
    v3Up = glm::normalize(v3Up);
    setOrientation(v3Side, v3Up, v3View);
}
Esempio n. 2
0
	/*!
	 *
	 * @param angle
	 * @param axis
	 */
	void Camera::RotateByQuat(const float angle, const glm::vec3 axis)
	{
		glm::vec3 view = GetLookAt();
		glm::vec3 up(0.0f, 1.0f, 0.0f);
		glm::quat quatView(0, view);
		glm::quat quatViewResult = glm::rotate(quatView, angle, axis);
		view.x = quatViewResult.x;
		view.y = quatViewResult.y;
		view.z = quatViewResult.z;
		view    = glm::normalize(view);
		glm::vec3 side = glm::cross(up, view);
		side = glm::normalize(side);
		up = glm::cross(view, side);
		up = glm::normalize(up);
		SetOrientation(side, up, view);
	}