Example #1
0
        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)));
        }