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; }
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); }
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; }
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); } }
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; }
public override bool Crossing(Figure f) { if (f is Point) return Equal(f); else return f.Crossing(this); }
public abstract bool Equal(Figure f);
public abstract bool Crossing(Figure f);