Advanced Rotation
This section explains how to rotate an object based on where the user is performing the rotation manipulation.
The following image illustrates two different ways that an object can be rotated.
In example A, the object is manipulated around the center point of the object. In example B, the object is rotated around the center point of the manipulation. To support manipulation around a point other than the center point of the object, you must perform a compound manipulation that performs both rotation and translation. The following code shows how this manipulation is performed and calculated.
RotateVector(FLOAT *vector, FLOAT *tVector, FLOAT fAngle) {
FLOAT fAngleRads = fAngle / 180.0f * 3.14159f;
FLOAT fSin = sin(fAngleRads);
FLOAT fCos = cos(fAngleRads);
FLOAT fNewX = (vector[0]*fCos) - (vector[1]*fSin);
FLOAT fNewY = (vector[0]*fSin) + (vector[1]*fCos);
tVector[0] = fNewX;
tVector[1] = fNewY;
}
Related topics
Feedback
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Submit and view feedback for