get a vertex B from vertex A and Quaternion

Started by
4 comments, last by alvaro 10 years, 5 months ago

Hello guys,

I have a problem with my third person camera. I want to find out the position of the camera and the position of the look at spot. I know how to calculate this with ?, ? and ? angles but I really don't have a clue how to calculate verticex B based on a vertex A, a quaternion and a distance between vertices A and B.

It would be great if anyone could provide formulars or point the direction to go.

Greetings

Lukas

Advertisement

If you post the formulas that work for you based on three angles, perhaps I can help you convert them to something that works with a quaternion. As it stands, I have no idea what the connection between A, B and the rotation is.

Hi,

thanks for the quick reply. Here are the formular I know which I would use (assuming y-up):


vertexB.x = vertexA.x + (cos(yaw * PI / 180) * radius)
vertexB.y = vertexA.y + (sin(pitch * PI / 180) * sin(yaw * PI / 180) * radius)
vertexB.z = vertexA.z + (cos(pitch * PI / 180) * sin(yaw * PI / 180) * radius)

so how do I calculate such a thing (which is a spherical movement) with a quaternion?

Greetings

Lukas

Apply the rotation described by the quaternion to the vector (radius,0,0), then add the result to vertex A.

B = A + interpret_imaginary_part_as_3D_vector(q * i * conj(q)); // Here "i" means the quaternion (0 + 1*i + 0*j + 0*k)

Does that do what you want?

Thanks again Álvaro,

I do have one querstion regarding your formula.


B = A + interpret_imaginary_part_as_3D_vector(q * i * conj(q));

What does the interpret_imaginary_part_as_3D_vector function do?

Thanks a lot so far :)

Lukas


What does the interpret_imaginary_part_as_3D_vector function do?

It takes a quaternion (a + b*i + c*j + d*k) and returns the 3D vector (b, c, d).

This topic is closed to new replies.

Advertisement