Pathfinding.RecastBBTree.XIntersectsCircle C# (CSharp) Method

XIntersectsCircle() static private method

static private XIntersectsCircle ( float x1, float x2, float zpos, Vector3 circle, float radius ) : bool
x1 float
x2 float
zpos float
circle Vector3
radius float
return bool
		static bool XIntersectsCircle (float x1, float x2, float zpos, Vector3 circle, float radius) {
			double f = Math.Abs(zpos-circle.z)/radius;

			if (f > 1.0 || f < -1.0) {
				return false;
			}

			float s1 = (float)Math.Sqrt(1.0 - f*f)*radius;

			float s2 = circle.x - s1;
			s1 += circle.x;

			float min = Math.Min(s1, s2);
			float max = Math.Max(s1, s2);

			min = Mathf.Max(x1, min);
			max = Mathf.Min(x2, max);

			return max > min;
		}

Usage Example

Ejemplo n.º 1
0
 private static bool RectIntersectsCircle(Rect r, Vector3 p, float radius)
 {
     return(float.IsPositiveInfinity(radius) || RecastBBTree.RectContains(r, p) || RecastBBTree.XIntersectsCircle(r.xMin, r.xMax, r.yMin, p, radius) || RecastBBTree.XIntersectsCircle(r.xMin, r.xMax, r.yMax, p, radius) || RecastBBTree.ZIntersectsCircle(r.yMin, r.yMax, r.xMin, p, radius) || RecastBBTree.ZIntersectsCircle(r.yMin, r.yMax, r.xMax, p, radius));
 }