Kazarp - 1 year ago 181

C# Question

I'm trying to compute the angle between two vectors.

I tried this, but it always returns zero:

`public double GetAngle(Vector2 a, Vector2 b)`

{

double angle = Math.Atan2(b.Y, b.X) - Math.Atan2(a.Y, a.X);

return angle;

}

GetAngle(new Vector2(1,1), new Vector2(50,50));

Recommended for you: Get network issues from **WhatsUp Gold**. **Not end users.**

Answer Source

You should take a look at the documentation of `atan2`

(here).

What you're looking of is finding the difference between B (your upper left vector) and A (your bottom right vector), then pass this as a parameter to `atan2`

```
return Math.Atan2(b.Y - a.Y,b.X - a.X);
```

What your code currently does is find the angle of the vector `b`

in reference to `0,0`

and subtract the angle of the vector `a`

in reference to `0,0`

.

The reason you always get 0 is because `1,1`

and `50,50`

are on the same line that crosses `0,0`

(both calls return something approx. `0.785398`

), so subtracting them will result in `0`

Recommended from our users: **Dynamic Network Monitoring from WhatsUp Gold from IPSwitch**. ** Free Download**