- Home /

# How I can Converting a Direction Vector to Quaternion rotation?

I have the Cylinder orientation given by the object surface normal vector in terms of 3D vector `Vx;Vy;Vz`

. and I want to convert it to Quaternion rotation. So I can represent the orientation of the Cylinder in unity 3d.

Suppose we have the angles of rotation with respect to the camera (given by direction cosine):

` Vx;Vy;Vz= <60;54;49> `

degrees.

How it possible to convert this angles from direction cosine to Quaternion rotation?

Thanks for help.

MilitaryG

### People who like this

**Answer** by robertbu
·
Feb 04, 2014 at 03:05 PM

I'm fuzzy about what you are looking for here. Say you have a cylinder that is on a surface and parallel to a normal and you move that cylinder to a now position on the surface so you want align with the new normal, you can do:

```
transform.rotation = Quaternion.FromToRotation(transform.up, hit.normal) * transform.rotation;
```

Backing off to what you ask for specifically, you need a reference vector. You need to define what represents zero rotation for that vector. So if you are talking about a terrain in which flat is Vector3.up, you can get the rotation:

var q = Quaternion.FromToRotation(Vector3.up, hit.normal);

'hit.normal' is the normal of the surface. Typically it is acquired from casting a ray.

This was very helpful! I used it so that a player can walk around a sphere and stay normal to the sphere. Thank you!

### Unity Answers is in Read-Only mode

Unity Answers content will be migrated to a new Community platform and we are aiming to launch a public beta by June 9. **Please note, Unity Answers is now in read-only so we can prepare for the final data migration.**

For more information and updates, please read our full announcement thread in the Unity Forum.