• Advertisement
Sign in to follow this  

get a vertex B from vertex A and Quaternion

This topic is 1524 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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

Edited by m3t4lukas

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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?

Edited by Álvaro

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Edited by Álvaro

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement