void rotate_degrees(QuaternionTransform &qt, float amt)
{
	XMVECTOR quat = XMLoadFloat4(&qt.quat);

	XMVECTOR axis;
	float angle;
	XMQuaternionToAxisAngle(&axis, &angle, quat);

	angle = XMConvertToDegrees(angle);
	angle += amt;
	angle = XMConvertToRadians(angle);

	quat = XMQuaternionRotationAxis(axis, angle);

	XMStoreFloat4(&qt.quat, quat);
}
示例#2
0
XMVECTOR HydraManager::getRotation(int controllerIndex) const
{
	if (sixenseIsControllerEnabled(controllerIndex))
	{
		XMVECTOR axis;
		float angle;

		XMQuaternionToAxisAngle(&axis, &angle, XMLoadFloat4(&XMFLOAT4(&mAcd.controllers[controllerIndex].rot_quat[0])));

		axis = XMVectorSet(-XMVectorGetX(axis), XMVectorGetY(axis), -XMVectorGetZ(axis), 0.0f);

		XMVECTOR rotationQuat = XMQuaternionRotationAxis(axis, angle);

		return rotationQuat;
	}
	
	return XMQuaternionIdentity();
}
		void to_axis_angle(Vector3& axis, float& angle) const
		{
			XMVECTOR a;
			XMQuaternionToAxisAngle(&a, &angle, *this);
			axis = a;
		}