home *** CD-ROM | disk | FTP | other *** search
- /*******************************************************************************
- +
- + LEDA 2.1.1 11-15-1991
- +
- +
- + _seg_set.c
- +
- +
- + Copyright (c) 1991 by Max-Planck-Institut fuer Informatik
- + Im Stadtwald, 6600 Saarbruecken, FRG
- + All rights reserved.
- +
- *******************************************************************************/
-
-
- #include <LEDA/segment_set.h>
-
- segment SegmentSet::key(seg_item it)
- { segment s(x0(it),y(it),x1(it),y(it));
- return s.rotate(point(0,0),alpha);
- }
-
- seg_item SegmentSet::insert(segment s, ent p)
- { segment t = s.rotate(point(0,0),-alpha);
- double x0 = t.xcoord1();
- double x1 = t.xcoord2();
- double y = t.ycoord1();
- return segment_tree(real,real,ent)::insert(x0,x1,y,p); }
-
- seg_item SegmentSet::lookup(segment s)
- { segment t = s.rotate(point(0,0),-alpha);
- double x0 = t.xcoord1();
- double x1 = t.xcoord2();
- double y = t.ycoord1();
- return segment_tree(real,real,ent)::lookup(x0,x1,y); }
-
- void SegmentSet::del(segment s)
- { segment t = s.rotate(point(0,0),-alpha);
- double x0 = t.xcoord1();
- double x1 = t.xcoord2();
- double y = t.ycoord1();
- segment_tree(real,real,ent)::del(x0,x1,y);
- }
-
- list(seg_item) SegmentSet::intersection(segment q)
- { list(seg_tree_item) L;
- segment t = q.rotate(point(0,0),-alpha);
- double x = t.xcoord1();
- double y0 = t.ycoord1();
- double y1 = t.ycoord2();
- L = segment_tree(real,real,ent)::query(x,y0,y1);
- return *((list(seg_item)*)&L);
- }
-
- list(seg_item) SegmentSet::intersection(line q)
- { list(seg_tree_item) L;
- line t = q.rotate(-alpha);
- double x = t.x_proj(0);
- L = segment_tree(real,real,ent)::y_infinity_query(x);
- return *((list(seg_item)*)&L);
- }
-
-