# Angle between 2 vectors. accuracy

1. Mar 25, 2013

### sparkzbarca

EDIT UPDATE

so basically I figured this out. it was apparently what i was rotating around.
Now i can rotate much mroe finely I'm not sure how to close this though so i'm just adding this here

this has to with a programming problem where i am rotating an object so it snaps into alignment with the face of another object.

because i've been told arctangent2 is more accurate (for vectors near parallel)
and my issue is near parallel vectors i'm using that

basically i take the crossproduct of the normal and the inverse normal of 2 planes
to find the axis

(vectors 1 and 2 are normalized, atan apparently doesnt care but they are because
they come spat out that way)
vector1 = normal of plane were rotating
vector2 = normal of plane were rotating to

axis = vector1 * -vector2
that should give me the axis to from from 1 to 2

then the angle i have as

y = magnitude of axis
x = dot product of (vector1, -vector2)

angle = arctangent2(y,x)

is there any way to make this more accurate though maybe squaring or something

basically the issue is that if the dot product is like .99999999
and the magnitude of the axis is like .01
i end up through inprecision flipping back and forth I guess
(my axis goes from 0,0,.7 to 0,0,-.7) for example
which I think whats happening is i'm rotating just a bit too far, then needing to rotate the opposite way back but going a bit to far.

currently using that I can get to within about .1radians or 5 degrees of accuracy. (that is i basically tell it if the angle is less than .1 radians to call that parallel and not rotate, it's close enough, otherwise i have this vibrating effect as the object constantly rotates quickly back and forth a few degrees).
That actually seems quite large to me for a floating point number and im wondering if perhaps i'm doing this wrong.

Also I can use quanternions

i've been told that a quanternion can be made by going

quanternion x,y,z = cross product of vectors

w = 1 + dot product of vectors (basically nearly there it'd be 1.999999999)

But i dont get quanternions at all so i'm not sure if thats accurate
also not sure if thats like basically how much I would add
like current quanternion rotation + the calculate rotation
or
current quan rotation just equals calculated

lastly im not sure if what point i rotate around matters

thats is
right now if i have a box right I rotate around the magical point in the middle of the square by angle degrees around axis

should i in fact rotate teh object as it were around the point in the mdidle of whatever plane on the side of the box was hit?

basically i'm worried that rotating around the center of the cube is actually moving the plane itself and is part of the reason for my lack of accuracy.

I'm having trouble visualizing the differences in my head though so im not sure.

Last edited: Mar 25, 2013