Hi, I'm really confused about the returned values, for example:

Ray ray = new Ray(new Vector3(0, 12, 0), -Vector3.UnitY); Plane planeLow = new Plane(Vector3.UnitY, 1); Plane planeHigh = new Plane(Vector3.UnitY, 2); float distanceLow; float distanceHigh; Ray.Intersects(ray, planeLow, out distanceLow); Ray.Intersects(ray, planeHigh, out distanceHigh);

this returns 13 for distanceLow and 14 for distanceHigh, while I am expecting values of 11 and 10 respectively. The ray is at Y = 12 facing downwards, the planeLow is facing upwards with a distance of 1 to the origin, which is to me a distance of 11 along the ray where the ray and the plane intersects. When I lower the plane to -1 (so farther away from the ray origin), the value actually decreases to 11 (which I initially expected) instead of increasing to 13.

What am I missing? Thanks!

Edit: The solution appears to be that I simply just need to flip the D (distance) value of the plane temporarily while doing Intersection calculations, I just don't get why this is how it works, there must be a situation where it makes more sense this way?

**Edited by AODBAMF, 06 June 2014 - 06:38 PM.**