- Home /

# Vector3.Angle returning wrong values for vectors with small components

I tried to get the angle between two Vector3's using Vector3.Angle and got a return value I didn't expect.

The two vectors where `(1, 0, 0)`

and `(0.00001, 0, 0)`

and the angle between the two should obviously be `0`

. However, `Vector3.Angle`

returns `90`

.

This isn't related to the length difference of the vectors, `Vector3.Angle`

also reports the angle between `(0.00001, 0, 0)`

and itself as 90. On the other hand, the difference between `(1000000, 0, 0)`

and itself or `(1, 0, 0)`

is reported correctly as `0`

.

Is this related to the algorithm used by `Vector3.Angle`

or a bug? The documentation doesn't say anything about it expecting only vectors in a specific range or only normalized ones.

**Answer** by Adrian
·
Aug 26, 2011 at 11:24 AM

Normalizing probably is the issue here. The documentation on Vector3.Normalize states:

If the vector is too small to be normalized a zero vector will be returned.

`Vector3.Angle`

probably normalizes the input vectors, calculating the angle between `(1, 0, 0)`

and `(0, 0, 0)`

. `Vector3.Angle`

also seems to return `90`

when either of its input vectors has zero length.

**Answer** by elliselkins
·
Apr 21, 2016 at 08:23 PM

I ran into this problem as well, so I wrote my own angle functions.

```
//This returns the angle in radians
public static float AngleInRad(Vector3 vec1, Vector3 vec2)
{
return Mathf.Atan2(vec2.y - vec1.y, vec2.x - vec1.x);
}
//This returns the angle in degress
public static float AngleInDeg(Vector3 vec1, Vector3 vec2)
{
return AngleInRad(vec1, vec2) * 180 / Mathf.PI;
}
```

See Atan2 for more details.

### Your answer

### Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.