Skip to main content
GameDev.net gamedev.net
🔒 Locked 🎮 Unity

get a vertex B from vertex A and Quaternion

Started by m3t4lukas Nov 18, 2013 at 12:24 PM 4 replies 2.2k views
Original Post
m3t4lukas
m3t4lukas

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

alvaro
alvaro

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.

m3t4lukas
m3t4lukas

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

alvaro
alvaro

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?

m3t4lukas
m3t4lukas

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

alvaro
alvaro

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).

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.