📄 _seg_set.c
字号:
/*******************************************************************************
+
+ LEDA 3.0
+
+
+ _seg_set.c
+
+
+ Copyright (c) 1992 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, GenPtr p)
{ segment t = s.rotate(point(0,0),-alpha);
double x0 = t.xcoord1();
double x1 = t.xcoord2();
double y = t.ycoord1();
return segment_tree<double,double,GenPtr>::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<double,double,GenPtr>::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<double,double,GenPtr>::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<double,double,GenPtr>::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<double,double,GenPtr>::y_infinity_query(x);
return *((list<seg_item>*)&L);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -