Rotation of a point about vectors

1. Oct 30, 2006

Bucky

I have two points in 3d space, cameraPosition and billboardPosition. In addition to this i have their normals.

I want billboardPosition to be rotated so that its normal points at cameraPosition.

basically...I'm stuck.

I've found the equation of the vector that passes through both points using equation (18) on http://mathworld.wolfram.com/Line.html (its the correct one to use yeah?).

So how do i go about finding the angle between billboardNormal and the line i found? also is this the easiest way to go about matters or is there a faster/easier method?

2. Oct 30, 2006

0rthodontist

For conciseness you have c and b (cameraPosition and billboardPosition). You also have n, the normal to the billboard. The vector from b to c is c - b. You can find the angle between c - b and n by using the dot product (this is how an angle can be defined in 3 dimensions):
$$x \cdot y = |x| |y| cos \theta$$ where theta is the angle between x and y so
$$cos^{-1} (\frac{x \cdot y}{|x| |y|}) = \theta$$
So you can rotate the normal by the angle $$cos^{-1} (\frac{(c - b) \cdot n}{|c - b| |n|})$$
The dot there is the dot product, and the || signs mean the length of the vectors, calculated by (x^2 + y^2 + z^2)^(0.5) if the vector is (x, y, z).

I don't know that rotation is exactly what you want though. Do you want other stuff to move with this vector when you rotate it? In that case you should express the rotation as a linear transformation with b at the origin.

3. Nov 1, 2006

Bucky

ok i had written out a long step by step of what im doing but i've realised my problem is much simpler than what i thought it was.

i think my problem is im only rotateing it about the y axis (its "fixed" to only change in the x-z plane) but its calculations take into account the y-position of the camera...not good.

is there another method i can use to only use the x and z coordinates for the camera and billboard?

4. Nov 1, 2006

0rthodontist

You have not made clear just what it is that your program needs to do.