#ifndef _ROADMAP_H_ #define _ROADMAP_H_ #include "global.h" /* * Roadmap Class * * This class keeps track of a roadmap which navigates among various * polygons. It is used to determine where I can go, once I'm in a * particular polygonal cell. * */ class Polygon; typedef struct { Polygon *my_polygon; Polygon **next; fixedpt *distance; int num_next; } roadmap_elem; class Roadmap { public: Roadmap(); ~Roadmap(); void do_copy(Roadmap *r); void copy_polygons(Roadmap *r); void Insert(Polygon *p); void Link(Polygon *p1, Polygon *p2); void Unlink(Polygon *p1, Polygon *p2); int NumNext(Polygon *p); int NumNext(int elem) {return roadmap[elem]->num_next;} Polygon *Next(Polygon *p, int num); Polygon **AllNext(Polygon *p, int *num); fixedpt *AllDistances(Polygon *p); Polygon **AllNext(int num) {return roadmap[num]->next;} fixedpt *AllDistances(int num) {return roadmap[num]->distance;} Polygon *PolygonNum(int num) {return roadmap[num]->my_polygon;} int Size(){return roadmap_size;} void print(); private: roadmap_elem **roadmap; int roadmap_size; }; #endif /* _ROADMAP_H_ */