public Vector2D[] GetNormals(IPolygon other) { var pts = GetPoints(); var axes = new Vector2D[2]; axes[0] = Vector2D.Axis(pts[0], pts[1]); axes[1] = Vector2D.AxisNormalLeft(pts[0], pts[1]); return(axes); }
public Vector2D[] GetNormals(IPolygon other) { var points = other.GetPoints(); var axes = new Vector2D[points.Length]; for (Int32 a = 0; a < axes.Length; a++) { axes[a] = Vector2D.Axis(GetPosition(), points[a]); } return(axes); }
private static Vector2D CheckCircleCollisionAndRespond(Circle a, Circle b) { Vector2D axis = Vector2D.Axis(a.GetPosition(), b.GetPosition()); Interval aProjection = a.GetProjection(axis); Interval bProjection = b.GetProjection(axis); if (!aProjection.Overlaps(bProjection)) { return(Vector2D.Zero); } return(aProjection.GetMinimumTranslation(bProjection) * axis); }
private static Boolean CheckCircleCollision(Circle a, Circle b) { Vector2D axis = Vector2D.Axis(a.GetPosition(), b.GetPosition()); return(a.GetProjection(axis).Overlaps(b.GetProjection(axis))); }