예제 #1
0
파일: topo.cs 프로젝트: robgrz/matmill
        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);
            }
        }
예제 #2
0
파일: topo.cs 프로젝트: robgrz/matmill
        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);
        }