- Home /

# physics & rotation question

how two perpendicular vectors can have a dot product not equal to 0 in Unity?

Thats my script for a simple Cube, that moves only in 2D:

`void OnCollisionEnter(Collision collision) { ContactPoint contact = collision.contacts[0];`

` `

```
//Calculate reflection Vector3 on collision normal
reflect_direction = Vector3.Reflect(rigidbody.velocity.normalized, contact.normal);
impact_direction = rigidbody.velocity.normalized;
angle = Vector3.Dot(reflect_direction, impact_direction);
```

`} `

Now for example In my on screen display I see values as:

angle == 0,9852035

impact_direction == 0.1, 1.0, 0.0

reflect_direction == -0.1, 1.0, 0.0

How on earth is the dot product close to 1 !?!?!?!

Also what worries me is the fact, that for this example, the ship was flaying with big velocity in the OX axis and the impact_direction shows, that the OY value is bigger ?!?

Any help?

**Answer** by VS48
·
Nov 11, 2010 at 05:13 PM

Well, those vectors are not perpendicular, they are reflected along the X axis.

And their dot product is:

(-0.1*0.1)+(1.0*1.0)+(0.0*0.0) = (-0.01)+(1.0) = 0.99

So to get the angle, you'd have to divide the dot product by the product of the magnitudes of the two vectors. Ex:

```
angle /= (Vector3.Magnitude(reflect_direction) * Vector3.Magnitude(impact_direction));
```

*Edit: Woops, don't forget to take arc-cosine of the above result to get the angle!*

Or, you can just use the Vector3::Angle function:

```
angle = Vector3.Angle(reflect_direction, impact_direction);
```

So stupid of me! Ofcourse they're not perpendicular. What was I thinking :/ Thanks a lot!

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