ftp.nice.ch/pub/next/science/mathematics/2DLab.3.1.s.tar.gz#/2DLab/voronoi.h

This is voronoi.h in view mode; [Download] [Up]

#ifndef NULL
#define NULL 0
#endif

#define DELETED -2

#define MAXSITES 4096

#define le 0
#define re 1

extern struct Site *(*next)();
extern int triangulate, sorted, plot, debug, outputmode;
extern float xmin, xmax, ymin, ymax, deltax, deltay;
extern float pxmin, pxmax, pymin, pymax;

extern char execdir[];		/* from voronoi.c */

extern int numvedges, numdedges;

extern int total_alloc;	    /* memory.c */
extern int menu;	    /* menus.c */

/* GL DRAWING STUFF */

/* vertex: x, y */
struct vertstruct {
    float x, y;
    int pid;
    };

/* vertex: x, y, theta */
struct vertthetastruct {
    float x, y, theta;
    int e1, e2;
    };

/* edge: CLIPPED to reasonable bounds */
struct edgestruct {
    float x1, y1, x2, y2;
    int nbr1, nbr2;
    float xm, ym;	    /* halfway between inducing voronoi sites */
    };

typedef struct vertstruct VERT;
typedef struct vertthetastruct VERTTHETA;
typedef struct edgestruct EDGE;

/* triangle: holds POINTERS to three verts */
struct tristruct {
    VERT *v1, *v2, *v3;
    };

struct circstruct {
    float cx, cy, r;
    int nbr1, nbr2, nbr3;
    };

typedef struct tristruct TRI;
typedef struct circstruct CIRC;

#define MAXVERTS (3 * MAXSITES)
#define MAXEDGES (2 * MAXSITES)
#define MAXTRIS  (MAXEDGES)

extern VERT GLsites[MAXVERTS];
extern VERT verts[MAXVERTS];
extern EDGE vedges[MAXEDGES];
extern EDGE dedges[MAXEDGES];
extern TRI  tris[MAXTRIS];
extern CIRC circles[MAXTRIS];

/* END GL DRAWING STUFF */

struct	Freenode	{
    struct Freenode *nextfree;
};

struct	Freelist	{
    struct Freenode *head;
    int	nodesize;
};

char *getfree();
char *myalloc();

struct Point {
    float x,y;
};

/* structure used both for sites and for vertices */
struct Site {
    struct Point coord;
    int sitenbr;
    int refcnt;
};

typedef struct Site SITE;

struct Edge {
    float a,b,c;
    struct Site *ep[2];
    struct Site	*reg[2];
    int	edgenbr;
};

extern struct Site *sites;
extern int nsites;
extern int siteidx;
extern int sqrt_nsites;
extern int nvertices;
extern struct Freelist sfl;
extern struct Site *bottomsite;

extern struct Site *nextone();	    /* from voronoi.c */

extern int nedges;
extern struct	Freelist efl;

void v_endpoint();
int has_endpoint(),right_of();
struct Site *intersect();
float dist();
struct Point PQ_min();
struct Halfedge *PQextractmin();
struct Edge *bisect();

struct Halfedge {
    struct Halfedge *ELleft, *ELright;
    struct Edge	*ELedge;
    int	ELrefcnt;
    char ELpm;
    struct Site	*vertex;
    float ystar;
    struct Halfedge *PQnext;
};

extern struct Freelist	hfl;
extern struct Halfedge *ELleftend, *ELrightend;
extern int ELhashsize;
extern struct Halfedge **ELhash;

struct Halfedge *HEcreate(), *ELleft(), *ELright(), *ELleftbnd();
struct Site *leftreg(), *rightreg();

extern int PQhashsize;
extern struct Halfedge *PQhash;
extern int PQcount;
extern int PQmin;

int PQempty();
struct Halfedge *PQfind();

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.