is there a mathematical way to get entity up normal from rotation instead of using LocalToWorld.Value.c1 ?

Answered here extracting direction vectors from quaternion - Math and Physics - GameDev.net

TLDR version from above link:

```
up vector
x = 2 * (x*y - w*z)
y = 1 - 2 * (x*x + z*z)
z = 2 * (y*z + w*x)
```

Hope it helps.

Note their may be mathematics functions or utilities that do this within the code base, may be worth checking.

```
var up = math.mul(rotation, new float3(0f, 1f, 0f));
```

Thank you very much guys !

One more question please, Is there an alternative to Quaternion.Lerp in unity mathematics ?

You might also consider LocalToWorld.Up, you don’t mention why you need it the other way, but thought I’d mention.

There is math.nlerp which takes quaternions and returns a normalized lerp.

math.nlerp

```
/// <summary>Returns the result of a normalized linear interpolation between two quaternions q1 and a2 using an interpolation parameter t.</summary>
public static quaternion nlerp(quaternion q1, quaternion q2, float t)
```

If you look at Quaternion.Lerp

“Interpolates between a and b by t and normalizes the result afterwards.”

So they’ve just named it better this time.

aw that’s perfect many thanks !

Because for some reason the value of LocalToWorld.Value.c1 change when changing NonUniformScale , It becomes smaller or larger depending on the scale.