I'm trying to derive the matrix form of Rodrigues rotation formula but I do something really bad.

R{N}(V) = cos(a)*V+(1-cos(a))*(N*V)*N+sin(a)*(NxV)

Where,

- N: Unit vector of the rotation angle.
- V: The vector to be rotated around N
- a: The angle of rotation (deg).
- (N*V): The dot product of N and V vectors.
- (NxV): The cross product of N and V vectors.

R{1,*} = (cos(a)+(1-cos(a))*x2 , (1-cos(a))*x*y-sin(a)*z , (1-cos(a))*x*z-sin(a)*y)

Here's my best try so far:

Let:

n = i => n(1,0,0)

v(x,y,z)

N*V = 1*x+0*y+0*z = x

NxV = (0,-z,y)

|cos(a)*x+(1-cos(a))*x+0 | => cos(a)*x + (1-cos(a))*x ?= cos(a)+(1-cos(a))*x2

|cos(a)*y+(1-cos(a))*x-sin(a)*z | => how will cos(a) disappear?

| cos(a)*z+(1-cos(a))*x+sin(a)*y | => again no cos(a) in the final matrix :-/

I can't really understand the concept of the first element of this vector. How can I actually calculate cos(a)+(1-cos(a))*x2 from the actual cos(a)*x+(1-cos(a))*x? Everytime I stuck at:

cos(a)*x+(1-cos(a))*x+0 = cos(a)*x+(1-cos(a))*x = (cos(a) + (1 - cos(a)) * x

which does not look equals to me.