public BlueBall(Vector2D position, double radius, PlayerPaddle paddle)
        {
            lock (lockCounter)
            {
                ballID = IDCounter++;
            }

            this.playerPaddle = paddle;
            this.Velocity = new Vector2D(0, 0);
            ObjectTextures = new List<GameBitmap>();
            this.Position = position;
            this.Radius = radius;
            ObjectTextures.Add(new GameBitmap("\\Resources\\Images\\ballBlue.png", this.Position - new Vector2D(0, Radius)
                - new Vector2D(Radius, 0),
                this.Position - new Vector2D(0, Radius) + new Vector2D(Radius, 0), this.Position + new Vector2D(0, Radius)
                + new Vector2D(-Radius, 0)));
            ObjectTextures[0].IsBall = true;
            ObjectWidth = ObjectHeight = 2 * radius;
            ObjectTextures[0].IsSquare = true;
            ObjectTextures[0].ColorLowSpec = Color.Aqua;

            //квадратот ќе ги има истите темиња како и сликата
            textureRotator = new GameRectangle(ObjectTextures[0].PositionUL,
                ObjectTextures[0].PositionUR, ObjectTextures[0].PositionDL);

            Health = 1000;
        }
        /// <summary>
        /// Провери дали се сече или допира со правоаголник
        /// </summary>
        /// <param name="rect"></param>
        /// <param name="points"></param>
        /// <returns></returns>
        private bool Intersects(GameRectangle rect, List<Vector2D> points)
        {
            /* Ќе сметаме дека правоаголникот секогаш е претставен како
             *
             * UL                         UR
             *  ---------------------------
             *  |                         |
             *  |                         |
             *  |                         |
             *  ---------------------------
             * DL                         DR
             *
             */

            //темиња на првиот правоаголник
            Vector2D pointUL = PositionUL;
            Vector2D pointUR = PositionUR;
            Vector2D pointDL = PositionDL;
            Vector2D pointDR = GetPositionVectorDR();

            //темиња на вториот правоаголник
            Vector2D pointUL2 = rect.PositionUL;
            Vector2D pointUR2 = rect.PositionUR;
            Vector2D pointDL2 = rect.PositionDL;
            Vector2D pointDR2 = rect.GetPositionVectorDR();

            //Провери вториот дали се содржи целосно во првиот. Врати ги темињата на внатрешниот во тој случај
            if (pointUL2.X > pointUL.X && pointUR2.X < pointUR.X && pointDL2.Y < pointDL.Y)
            {
                points.Add(pointUL2);
                points.Add(pointUR2);
                points.Add(pointDL2);
                points.Add(pointDR2);
                return true;
            }
            else if (pointUL.X > pointUL2.X && pointUR.X < pointUR2.X && pointDL.Y < pointDL2.Y)
            {
                //обратната ситуација
                points.Add(pointUL);
                points.Add(pointUR);
                points.Add(pointDL);
                points.Add(pointDR);
                return true;
            }

            //провери дали двете вертикални од вториот ја сечат горната хоризонтална страна од првиот
            points.AddRange((GeometricAlgorithms.IntersectLineSegments(
                pointUL2, pointDL2, pointUL, pointUR)));
            points.AddRange((GeometricAlgorithms.IntersectLineSegments(pointUR2, pointDR2, pointUL, pointUR)));

            //провери дали двете вертикали од вториот ја сечат долната хоризонтала од првиот
            points.AddRange((GeometricAlgorithms.IntersectLineSegments(
                pointUL2, pointDL2, pointDL, pointDR)));
            points.AddRange((GeometricAlgorithms.IntersectLineSegments(
                pointUR2, pointDR2, pointDL, pointDR)));

            //провери дали двете хоризонтали од вториот ја сечат левата вертикала од првиот
            points.AddRange((GeometricAlgorithms.IntersectLineSegments(
                pointUL2, pointUR2,
                pointUL, pointDL)));
            points.AddRange((GeometricAlgorithms.IntersectLineSegments(
                pointDL2, pointDR2,
                pointUL, pointDL)));

            //провери дали двете хоризонтали од вториот ја сечат десната вертикала од првиот
            points.AddRange((GeometricAlgorithms.IntersectLineSegments(
                pointUL2, pointUR2,
                pointUR, pointDR)));
            points.AddRange((GeometricAlgorithms.IntersectLineSegments(
                pointDL2, pointDR2,
                pointUR, pointDR)));

            //ако е најдена барем една заедничка точка, врати true
            return points.Count > 0;
        }
 private static void RotateSingleBrick(Vector2D center, IGameObject obj)
 {
     GameRectangle rotator = new GameRectangle(obj.PositionUL, obj.PositionUR, obj.PositionDL);
     rotator.RotateAroundPointDeg(center, 1);
     obj.PositionUL.X = rotator.PositionUL.X;
     obj.PositionUL.Y = rotator.PositionUL.Y;
     obj.PositionUR.X = rotator.PositionUR.X;
     obj.PositionUR.Y = rotator.PositionUR.Y;
     obj.PositionDL.X = rotator.PositionDL.X;
     obj.PositionDL.Y = rotator.PositionDL.Y;
 }