Examples Point Location and Drawing Operations for POINT_SET
The following program illustrates point location and the drawing functions
for POINT_SET. A window
and functions draw_node() and draw_edge() are
defined globally. Inside main() a rat_point_set T
is defined using a list S
of random rat_points. Then the point (2,3) is
located in T. The result is an edge of the face containing
(2,3). T, the point (2,3), and
the face containing (2,3) are then drawn in a window.
#include <LEDA/core/list.h>
#include <LEDA/geo/rat_point.h>
#include <LEDA/geo/rat_point_set.h>
#include <LEDA/graphics/window.h>
using namespace leda;
static window W;
void draw_node(const rat_point& p)
{ W.draw_filled_node(p.to_point(),black); }
void draw_edge(const rat_point& p, const rat_point& q)
{ W.draw_edge(p.to_point(),q.to_point(),black); }
int main()
{
list<rat_point> S;
random_points_in_square(10,10,S);
rat_point_set T(S); //define rat_point_set
rat_point p(2,3);
edge e=T.locate(p); //locate rat_point(2,3)
//open window
W.init(-11,11,-11);W.open();W.display();
//draw T using draw_node() and draw_edge()
T.draw_nodes(draw_node);
T.draw_edges(draw_edge,draw_edge,draw_edge);
W.read_mouse();
//draw p and face containing p
rat_point p1=T[T.source(e)],p2=T[T.target(e)];
W.draw_filled_node(p.to_point(),red);
W.draw_edge(p1.to_point(),p2.to_point(),red);
edge f=T.face_cycle_succ(e);
while (f!=e) {
p1=T[T.source(f)]; p2=T[T.target(f)];
W.draw_edge(p1.to_point(),p2.to_point(),red);
f=T.face_cycle_succ(f);
}
W.read_mouse();
return 0;
}
|
See also:
Point Sets
Data Types for 2D Geometry
Linear Lists
Generators for Geometric Objects
Dictionaries
Windows and Panels
Convex Hulls
Example POINT_SET
Functionality
Graphs and Related Data Types
Geometry
Geometry Algorithms
Manual Entries:
Manual
Page Point Sets
|