private void insert_in_t4(Polyline p) { for (int i = 0; i < p.NumSegments; i++) { object seg = p.GetSegment(i); T4_rect rect; if (seg is Line2F) { Line2F line = ((Line2F)seg); rect = new T4_rect(Math.Min(line.p1.X, line.p2.X), Math.Min(line.p1.Y, line.p2.Y), Math.Max(line.p1.X, line.p2.X), Math.Max(line.p1.Y, line.p2.Y)); } else if (seg is Arc2F) { Point2F min = Point2F.Undefined; Point2F max = Point2F.Undefined; ((Arc2F)seg).GetExtrema(ref min, ref max); rect = new T4_rect(min.X, min.Y, max.X, max.Y); } else { throw new Exception("unknown segment type"); } _t4.Add(rect, seg); } }
public void Add(Point2F center, double radius, object obj) { T4_rect rect = new T4_rect(center.X - radius, center.Y - radius, center.X + radius, center.Y + radius); _t4.Add(rect, obj); }