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)); }
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))); }
private static DistanceInfo MinLength(DistanceInfo value1, DistanceInfo value2) { return(value2.Distance.LengthSquared() < value1.Distance.LengthSquared() ? value2 : value1); }
private static DistanceInfo MinLength(DistanceInfo value1, DistanceInfo value2) { return value2.Distance.LengthSquared() < value1.Distance.LengthSquared() ? value2 : value1; }