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

**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!

### Your answer

### Welcome to Unity Answers

The best place to ask and answer questions about development with Unity.

To help users navigate the site we have posted a site navigation guide.

If you are a new user to Unity Answers, check out our FAQ for more information.

Make sure to check out our Knowledge Base for commonly asked Unity questions.

If you are a moderator, see our Moderator Guidelines page.

We are making improvements to UA, see the list of changes.