示例#1
0
        public static Vector2 Distance(BoundingCapsule2 value1, BoundingCapsule2 value2)
        {
            Vector2 d1 = -PointToLine(value2.Min, value2.Max, value1.Min);
            Vector2 d2 = -PointToLine(value2.Min, value2.Max, value1.Max);
            Vector2 d3 = PointToLine(value1.Min, value1.Max, value2.Min);
            Vector2 d4 = PointToLine(value1.Min, value1.Max, value2.Max);

            return(MinLength(MinLength(d1, d2), MinLength(d3, d4)));
        }
示例#2
0
        public static Vector2 Distance(BoundingCapsule2 value1, BoundingCapsule2 value2)
        {
            Vector2 d1 = -PointToLine(value2.Min, value2.Max, value1.Min);
            Vector2 d2 = -PointToLine(value2.Min, value2.Max, value1.Max);
            Vector2 d3 = PointToLine(value1.Min, value1.Max, value2.Min);
            Vector2 d4 = PointToLine(value1.Min, value1.Max, value2.Max);

            return MinLength(MinLength(d1, d2), MinLength(d3, d4));
        }
示例#3
0
        public static DistanceInfo DistanceInfo(BoundingCapsule2 value1, BoundingCapsule2 value2)
        {
            float l1, l2, l3, l4;

            Vector2 d1 = -PointToLine(value2.Min, value2.Max, value1.Min, out l1);
            Vector2 d2 = -PointToLine(value2.Min, value2.Max, value1.Max, out l2);
            Vector2 d3 = PointToLine(value1.Min, value1.Max, value2.Min, out l3);
            Vector2 d4 = PointToLine(value1.Min, value1.Max, value2.Max, out l4);

            DistanceInfo di1 = new DistanceInfo(d1, 0, l1);
            DistanceInfo di2 = new DistanceInfo(d2, 1, l2);
            DistanceInfo di3 = new DistanceInfo(d3, l3, 0);
            DistanceInfo di4 = new DistanceInfo(d4, l4, 1);

            return(MinLength(MinLength(di1, di2), MinLength(di3, di4)));
        }
示例#4
0
        public static DistanceInfo DistanceInfo(BoundingCapsule2 value1, BoundingCapsule2 value2)
        {
            float l1, l2, l3, l4;

            Vector2 d1 = -PointToLine(value2.Min, value2.Max, value1.Min, out l1);
            Vector2 d2 = -PointToLine(value2.Min, value2.Max, value1.Max, out l2);
            Vector2 d3 = PointToLine(value1.Min, value1.Max, value2.Min, out l3);
            Vector2 d4 = PointToLine(value1.Min, value1.Max, value2.Max, out l4);

            DistanceInfo di1 = new DistanceInfo(d1, 0, l1);
            DistanceInfo di2 = new DistanceInfo(d2, 1, l2);
            DistanceInfo di3 = new DistanceInfo(d3, l3, 0);
            DistanceInfo di4 = new DistanceInfo(d4, l4, 1);

            return MinLength(MinLength(di1, di2), MinLength(di3, di4));
        }
示例#5
0
 public Vector2 Distance(BoundingCapsule2 capsule)
 {
     return(Distance(this, capsule));
 }
示例#6
0
        public static bool Intersects(BoundingCapsule2 value1, BoundingCapsule2 value2)
        {
            float totalRadius = value1.Radius + value2.Radius;

            return(Distance(value1, value2).LengthSquared() < totalRadius * totalRadius);
        }
示例#7
0
 public bool Intersects(BoundingCapsule2 capsule)
 {
     return(Intersects(this, capsule));
 }
示例#8
0
 public Vector2 Distance(BoundingCapsule2 capsule)
 {
     return Distance(this, capsule);
 }
示例#9
0
 public static bool Intersects(BoundingCapsule2 value1, BoundingCapsule2 value2)
 {
     float totalRadius = value1.Radius + value2.Radius;
     return Distance(value1, value2).LengthSquared() < totalRadius * totalRadius;
 }
示例#10
0
 public bool Intersects(BoundingCapsule2 capsule)
 {
     return Intersects(this, capsule);
 }