- Visual C++源码
- Visual Basic源码
- C++ Builder源码
- Java源码
- Delphi源码
- C/C++源码
- PHP源码
- Perl源码
- Python源码
- Asm源码
- Pascal源码
- Borland C++源码
- Others源码
- SQL源码
- VBScript源码
- JavaScript源码
- ASP/ASPX源码
- C#源码
- Flash/ActionScript源码
- matlab源码
- PowerBuilder源码
- LabView源码
- Flex源码
- MathCAD源码
- VBA源码
- IDL源码
- Lisp/Scheme源码
- VHDL源码
- Objective-C源码
- Fortran源码
- tcl/tk源码
- QT源码
_point_set.c
资源名称:leda.tar.gz [点击查看]
上传用户:gzelex
上传日期:2007-01-07
资源大小:707k
文件大小:2k
源码类别:
数值算法/人工智能
开发平台:
MultiPlatform
- /*******************************************************************************
- +
- + LEDA-R 3.2.3
- +
- + _point_set.c
- +
- + Copyright (c) 1995 by Max-Planck-Institut fuer Informatik
- + Im Stadtwald, 66123 Saarbruecken, Germany
- + All rights reserved.
- +
- *******************************************************************************/
- #include <LEDA/point_set.h>
- #include <LEDA/d2_dictionary.h>
- typedef d2_dictionary<double,double,DT_item>* d2_dic_ptr;
- #define TTT (*d2_dic_ptr(ptr))
- ps_item Point_Set::insert(point p, void* i)
- { ps_item it = delaunay_tree::insert(p,i);
- TTT.insert(p.xcoord(),p.ycoord(),it);
- return it;
- }
- list<point> Point_Set::all_points()
- { list<point> result;
- list<ps_item> L = all_items();
- ps_item it;
- forall(it,L) result.append(key(it));
- return result;
- }
- ps_item Point_Set::lookup(point p)
- { double x = p.xcoord();
- double y = p.ycoord();
- dic2_item it = TTT.lookup(x,y);
- return (it!=nil) ? TTT.inf(it) : nil;
- }
- list<ps_item> Point_Set::range_search(double x0, double x1, double y0, double y1)
- {
- list<dic2_item> Lr = TTT.range_search(x0,x1,y0,y1);
- list<ps_item> Lp;
- dic2_item it;
- forall(it,Lr) Lp.append(TTT.inf(it));
- return Lp;
- }
- list<ps_item> Point_Set::all_items()
- { list<DT_item> L;
- delaunay_tree::all_items(L);
- return *(list<ps_item>*)&L;
- }
- list<ps_item> Point_Set::convex_hull()
- { list<DT_item> L;
- delaunay_tree::convex_hull(L);
- return *(list<ps_item>*)&L;
- }
- void Point_Set::del(point p)
- { delaunay_tree::del(p);
- TTT.del(p.xcoord(),p.ycoord());
- }
- void Point_Set::clear() { TTT.clear(); delaunay_tree::clear(); }
- int Point_Set::size() { return TTT.size(); }
- Point_Set::Point_Set() { ptr = new d2_dictionary<double,double,DT_item>; }
- Point_Set::~Point_Set() { delete d2_dic_ptr(ptr); }