Tell me more ×
Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required.

I am currently trying to simulate rotations of a 3d model in a C++ problem, but am a bit perplexed by the behaviour of my program. I had considered posting this in stackoverflow.com, but the problem seems to be more down to my lack of understanding of the maths. The following code statement takes a 3d point v1 (where v1[0] is x, v1[1] is y and v1[2] is z), and rotates the points around the xAxis using a theta value of "rotationX" given in radians:

    newY = cos(rotationX)*v1[1] - sin(rotationX)*v1[2];
    newZ = sin(rotationX)*v1[1] + cos(rotationX)*v1[2];
    v1[1] = newY;
    v1[2] = newZ;

The issue I am having is that when sweeping through values of rotationX, when the value of rotationX switches from negative to positive (or vice versa), the rotation seems to change direction. For example, if I am decrementing rotationX from 0.4, 0.3, 0.2, 0.1, 0.0 and it is rotating "clockwise", when I hit -0.1, the rotation "reverses" and starts to go back the way rotating "counter-clockwise". What I want is a formula for which I can continually increment or decrement rotationX and it will continue on rotating forever in the same direction.

I have tried running a few toy values through this formula to see if I can convince myself of what is going wrong, but I am a bit lost. Where am I going wrong?

share|improve this question
Your code looks correct; the effect you describe shouldn't be occurring. Can you post an example of inputs and outputs? – joriki Oct 22 '12 at 19:47

Know someone who can answer? Share a link to this question via email, Google+, Twitter, or Facebook.

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.