Take the 2-minute tour ×
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 want to rotate a point on a sphere surface . I was instructed as I can use Rodrigues rotation formula , (I thank ja72 very much). I tried to use the formula but it did not work . I can not find where I was wrong . I wrote a short Scilab program for explanation of my current understanding on the formula. Please someone point out where I am wrong.

Thank you very much .

Formula: rotation_matrix = I + sin(θ) * [k]x + (1 - cosθ) * [k]x ^2

[ http://en.wikipedia.org/wiki/Rodrigues%27_rotation_formula ]

In details , the center is at [ 0,0,0 ] and the radius = 1 . I named the point to rotate as point_before . The axis is decided by point_axis and the center point . The angle of rotation = 120 degree.

Scilab code .

//center = [ 0 , 0 , 0 ]

//radius ; point to rotate ; point to decide axis ; and its unit vector matrix; angle

radius = 1.0

point_before = [ radius ; 0 ;0 ]

point_axis = [ 1 , 2 , 3 ]

vector_axis33 = [ 0 , -3 , 2 ; 3 ,0 ,-1 ; -2 , 1 , 0 ] / sqrt( 1 + 2*2 + 3*3 )

angle120 = 3.141592 * 2 / 3

//Identity matrix ; the number in the formula ;the number in the formula

Identity=[ 0,1,0 ; 0,1,0 ; 0,0,1 ]

sin_120 = sin( angle120 )

cos_120 = cos( 1 - angle120 )

//rename variables as short names

I = Identity

uv = vector_axis33

uv2 = uv * uv

//use the formula

rotation_matrix = I + sin_120 * uv + cos_120 * uv2

//the point after the rotation

point_after = rotation_matrix * point_before

//the output ; it is not on the original sphere

- 0.4258284  
      0.7598773  
- 0.3646421 
share|improve this question

1 Answer 1

up vote 2 down vote accepted

There's an error in your identity matrix; the 0 and 1 at the beginning are swapped. Further, it should be 1 - cos( angle120 ), not cos( 1 - angle120 ).

share|improve this answer
    
Thank you very much. I corrected my code following your answer then got the correct output . –  seven_swodniw Jun 16 '11 at 7:44

Your Answer

 
discard

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.