Followers 0

# get a vertex B from vertex A and Quaternion

## 5 posts in this topic

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
0

##### Share on other sites

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.

0

##### 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

0

##### 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
1

##### 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

0

##### 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
1

## Create an account

Register a new account