Rotation of a point about vectors

Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
3 replies · 3K views
Bucky
Messages
79
Reaction score
0
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?
 
Last edited by a moderator:
Mathematics news on Phys.org
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):
[tex]x \cdot y = |x| |y| cos \theta[/tex] where theta is the angle between x and y so
[tex]cos^{-1} (\frac{x \cdot y}{|x| |y|}) = \theta[/tex]
So you can rotate the normal by the angle [tex]cos^{-1} (\frac{(c - b) \cdot n}{|c - b| |n|})[/tex]
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.
 
ok i had written out a long step by step of what I am doing but I've realized my problem is much simpler than what i thought it was.

i think my problem is I am 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?
 
You have not made clear just what it is that your program needs to do.