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

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.