#ifndef VISIBILITY_H
#define VISIBILITY_H
#include <assert.h>
#include <math.h>
#include <stdlib.h>
#include <limits.h>
#include <vispath.h>
#include <pathutil.h>
typedef COORD** array2;
typedef unsigned char boolean;
#define OBSCURED 0.0
#define EQ(p,q) ((p.x == q.x) && (p.y == q.y))
#define NEQ(p,q) (!EQ(p,q))
#define NIL(p) ((p)0)
#define CW 0
#define CCW 1
struct vconfig_s {
int Npoly;
int N;
Ppoint_t *P;
int *start;
int *next;
int *prev;
array2 vis;
} ;
extern COORD* ptVis (vconfig_t *, int, Ppoint_t);
extern int directVis (Ppoint_t, int, Ppoint_t, int, vconfig_t *);
extern void visibility (vconfig_t *);
extern int* makePath (Ppoint_t p, int pp, COORD* pvis,
Ppoint_t q, int qp, COORD* qvis,
vconfig_t* conf);
#endif