/// <summary> /// Kiểm tra ô có bị đánh dấu hay không. /// Điều kiện: điểm tâm center phải rơi vào trong ô đó /// Phương pháp: Quét ô hiện tại với góc phần tư /// /// Develop: tương lai có lẽ nên dùng phương pháp loang vì điểm tâm không đạt độ /// chính xác cao lắm. /// </summary> /// <param name="center"></param> /// <returns></returns> public bool IsTicked(Spot center) { // Kiểm tra góc tư dưới phải for (int part = 0; part < 4; part++) { fill = 0; for (int y = 0; y <= R; y++) { for (int x = 0; x <= Math.Sqrt(RR - y * y); x++) { fill += IsPencil(center.X + x * TickPart[part, 0], center.Y + y * TickPart[part, 1]); } } if (fill >= RequireFill) { return(true); } } return(false); }
public bool IsSmallTicked(Spot center) { // Kiểm tra góc tư dưới phải fill = 0; for (int part = 0; part < 4; part++) { for (int y = 0; y <= XR; y++) { for (int x = 0; x <= Math.Sqrt(XRR - y * y); x++) { fill += IsBlack(center.X + x * TickPart[part, 0], center.Y + y * TickPart[part, 1]); } } } if (fill >= XRequireFill) { return(true); } else { return(false); } }
public int IsPencil(Spot point) { return(IsPencil(point.X, point.Y)); }
public int IsBlack(Spot spot) { return(IsBlack(spot.X, spot.Y)); }
public static double Distance(Spot lhs, Spot rhs) { return(Math.Sqrt((lhs.X - rhs.X) * (lhs.X - rhs.X) + (lhs.Y - rhs.Y) * (lhs.Y - rhs.Y))); }
/// <summary> /// Copy constructor /// </summary> /// <param name="rhs"></param> public Spot(Spot rhs) { X = rhs.X; Y = rhs.Y; }