Ejemplo n.º 1
0
 public override bool Equal(Figure f)
 {
     Circle temp = f as Circle;
     if (temp != null)
     {
         if (X == temp.X && Y == temp.Y && R == temp.R)
             return true;
         else return false;
     }
     else return false;
 }
Ejemplo n.º 2
0
 public override bool Crossing(Figure f)
 {
     if (f is Point)
         if (f.X <= X + R && f.X >= X - R && f.Y <= Y + R && f.Y >= X - Y)
             return true;
         else return false;
     else
         if (f is Circle)
         {
             if (Math.Sqrt(Math.Pow(X - f.X, 2) + Math.Pow(Y - f.Y, 2)) < R + (f as Circle).R)
                 return true;
             else return false;
         }
         else
             return f.Crossing(this);
 }
Ejemplo n.º 3
0
 public override bool Equal(Figure f)
 {
     Square temp = f as Square;
     if (temp != null)
     {
         if (X == temp.X && Y == temp.Y && A == temp.A)
             return true;
         else return false;
     }
     else return false;
 }
Ejemplo n.º 4
0
        public override bool Crossing(Figure f)
        {
            if (f is Point)
                if (f.X <= X + A && f.X >= X - A && f.Y <= Y + A && f.Y >= X - A)
                    return true;
                else return false;
            else
                if (f is Circle)
                {
                    Point p = null;
                    double B1 = (f.Y - Y) / (f.X - X), C1 = (-X * (f.Y - Y) + Y * (f.X - X)) / (f.X - X); //прямая от центра круга до центра квадрата Ay = Bx + C
                    switch (getZone(f.X, f.Y, X, Y, A))
                    {
                        case 1:
                             p = pointCrossing(1, B1, C1, 0, 1, X + A);
                             if (p.X < X + A || p.Y < Y + A)
                                p = pointCrossing(1, B1, C1, 1, 0, Y + A);
                             break;
                        case 2:
                             p = pointCrossing(1, B1, C1, 0, 1, X + A);
                             break;
                        case 3:
                             p = pointCrossing(1, B1, C1, 0, 1, X + A);
                             if (p.X < X + A || p.Y > Y - A)
                                 p = pointCrossing(1, B1, C1, 1, 0, Y - A);
                             break;
                        case 4:
                             p = pointCrossing(1, B1, C1, 1, 0, Y - A);
                             break;
                        case 5:
                             p = pointCrossing(1, B1, C1, 0, 1, X - A);
                             if (p.X > X - A || p.Y > Y - A)
                                 p = pointCrossing(1, B1, C1, 1, 0, Y - A);
                             break;
                        case 6:
                             p = pointCrossing(1, B1, C1, 0, 1, X - A);
                             break;
                        case 7:
                             p = pointCrossing(1, B1, C1, 0, 1, X - A);
                             if (p.X > X - A || p.Y < Y + A)
                                p = pointCrossing(1, B1, C1, 1, 0, Y + A);
                             break;
                        case 8:
                             p = pointCrossing(1, B1, C1, 1, 0, Y + A);
                             break;
                    }
                    if (p.X * p.X + p.Y * p.Y <= Math.Pow((f as Circle).R, 2))
                        return true;
                    else return false;

                }
                else
                {
                    var temp = f as Square;
                    if (temp != null)
                    {
                        if (temp.X - A <= X + A && temp.X + A >= X - A && temp.Y - A <= Y + A && temp.Y + A >= Y - A)
                            return true;
                        else return false;
                    }
                    else
                        return f.Crossing(this);
                }
        }
Ejemplo n.º 5
0
 public override bool Equal(Figure f)
 {
     if (f is Point)
     {
         if (X == f.X && Y == f.Y) return true;
         else return false;
     }
     else return false;
 }
Ejemplo n.º 6
0
 public override bool Crossing(Figure f)
 {
     if (f is Point)
         return Equal(f);
     else return f.Crossing(this);
 }
Ejemplo n.º 7
0
 public abstract bool Equal(Figure f);
Ejemplo n.º 8
0
 public abstract bool Crossing(Figure f);