# vector to xyz rotation? Aligning an object up to a vector?

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

## Recommended Posts

Hello, I'm a little rusty on my math and am looking for some help. I have a vector with xyz components, and I want to align an object to the direction of a vector. How do I get component (x y z) rotation value to orient my object to my vector? I tried doing the acos() of the dot product of each of the component vectors, but that was all wonky.

##### Share on other sites
You can take the cross product of the current orientation vector with the desired orientation vector to get an axis of rotation, and the magnitude of the cross product would give the angle of rotation.

##### Share on other sites
As SiCrane pointed out you need a current orientation vector plus the desired orientation. You can get axis of rotation by the cross product. For the angle you need the acos of the dot product between the normalized current and normalized desired orientation (cause the dot product of two normalized vectors gives the cosine of the angle between them).

##### Share on other sites
Thanks guys I got them pointing in the right direction.

Now is there anyway to keep to apply an upvector of some kind to avoid the unwanted rotation along its orientation axis?

##### Share on other sites
Quote:
 Original post by mooreaaNow is there anyway to keep to apply an upvector of some kind to avoid the unwanted rotation along its orientation axis?
Can you clarify that a bit? In particular, what exactly do you mean by 'orientation axis'?

##### Share on other sites
SiCrane mention the orientation vector. This vector points in the direction of my original mesh.

The problem is that mesh will spin along this axis as i move my target vector around.

My object is a flat plate arrow. Indicating the direction.

The arrow is supposed to indicate the flow in a given direction.

I want to use this from a top down perspective... so that if i look from the top down, i can see which way the arrow is oriented.

With the method here, at some angles, i only see the edge of my flat plate since the arrow is rotated 90deg along its orientation vector.

##### Share on other sites
Quote:
 Original post by mooreaaSiCrane mention the orientation vector. This vector points in the direction of my original mesh.The problem is that mesh will spin along this axis as i move my target vector around.My object is a flat plate arrow. Indicating the direction.The arrow is supposed to indicate the flow in a given direction.I want to use this from a top down perspective... so that if i look from the top down, i can see which way the arrow is oriented.With the method here, at some angles, i only see the edge of my flat plate since the arrow is rotated 90deg along its orientation vector.
The 'orientation vector' SiCrane was referring to is the vector associated with the object (usually one of the basis vectors, i.e. a local axis) that you want to align with the target vector. For example, with a guided missile the orientation vector would be the forward vector, while with a vehicle following a terrain the orientation vector would be the up vector.

From what you've said, it sounds like it's the forward vector you want to align (that is, the direction in which the arrow is pointing). You also mentioned a 'top-down' view though, which suggests that maybe this is a 2-d problem. Is that the case? If so, the solution is quite a bit simpler than what's been proposed here.

That said, the axis-angle method shouldn't be causing the arrow to roll, so I'm guessing there's something else going wrong somewhere.