示例#1
0
    void Camera::rotate(Radians angle)
    {
        Quat rot = glm::angleAxis(angle.value(), mUpReal);

        mFront = Vec3(rot * mFront).normalized();
        mRight = Vec3(rot * mRight).normalized();

        mMatrixUpdateFlags |= MatrixRotationUpdated;
        updateAngles();
    }
示例#2
0
    void Camera::mouseLook(Radians dtX, Radians dtY)
    {
        float angleXZ = getHorizontalAngle().value();
        float angleY = getVerticalAngle().value();

        angleXZ -= dtX.value(); // -? lol
        angleY -= dtY.value();  // same
        angleY = glm::clamp(angleY, -PI_2, PI_2);

        float len = Vec3(mAt - mEye).length();
        Vec3 at = mEye + Vec3(len * sinf(angleXZ) * cosf(angleY),
                              len * sinf(angleY),
                              len * cosf(angleXZ) * cosf(angleY));

        //gLog.trace("%f, %f, len %f\n", angleXZ, angleY, len);
        //gLog.trace("eye: %s\n", utils::toString(mEye).c_str());
        //gLog.trace("at: %s\n", utils::toString(mAt).c_str());
        //gLog.trace("at - eye: %s\n", utils::toString(Vec3(mAt - mEye)).c_str());
        //gLog.trace("new at = %s\n", utils::toString(Vec3(len * sinf(angleXZ) * cosf(angleY),
                                                     //len * sinf(angleY),
                                                     //len * cosf(angleXZ) * cosf(angleY))).c_str());

        lookAt(mEye, at, mUp);
    }
示例#3
0
文件: Math3d.cpp 项目: AaronMK/Meega
	float sin(const Radians &rad)
	{
		return sinf(rad.value());
	}
示例#4
0
文件: Math3d.cpp 项目: AaronMK/Meega
	float atan(const Radians &rad)
	{
		return atanf(rad.value());
	}
示例#5
0
文件: Math3d.cpp 项目: AaronMK/Meega
	float acos(const Radians &rad)
	{
		return acosf(rad.value());
	}
示例#6
0
 void Camera::rotateAround(Radians angle)
 {
     Quat rot = glm::angleAxis(angle.value(), mUpReal);
     lookAt(mAt + (rot * (mEye - mAt)), mAt, mUp);
 }
示例#7
0
 void Camera::rotate(const Vec3& axis, Radians angle)
 {
     Quat rot = glm::angleAxis(angle.value(), axis.normalized());
     lookAt(mEye, mEye + (rot * (mAt - mEye)), mUp);
 }