24static void printVis(
char *lbl,
COORD * vis,
int n);
25static void printDad(
int *vis,
int n);
41 for (poly_i = 0; poly_i < n_obs; poly_i++) {
50 rv->
start = calloc((
size_t)n_obs + 1,
sizeof(
int));
51 rv->
next = calloc(n,
sizeof(
int));
52 rv->
prev = calloc(n,
sizeof(
int));
70 for (poly_i = 0; poly_i < n_obs; poly_i++) {
72 rv->
start[poly_i] = start;
73 assert(obs[poly_i]->pn <= INT_MAX);
74 end = start + (int)obs[poly_i]->pn - 1;
75 for (pt_i = 0; pt_i < (int)obs[poly_i]->pn; pt_i++) {
76 rv->
P[i] = obs[poly_i]->
ps[pt_i];
81 rv->
next[end] = start;
82 rv->
prev[start] = end;
84 rv->
start[poly_i] = i;
107 COORD *ptvis0, *ptvis1;
109 ptvis0 =
ptVis(config, poly0, p0);
110 ptvis1 =
ptVis(config, poly1, p1);
112 dad =
makePath(p0, poly0, ptvis0, p1, poly1, ptvis1, config);
115 for (i = dad[config->
N]; i != config->
N + 1; i = dad[i])
122 for (i = dad[config->
N]; i != config->
N + 1; i = dad[i])
123 ops[j--] = config->
P[i];
128 printVconfig(config);
129 printVis(
"p", ptvis0, config->
N + 1);
130 printVis(
"q", ptvis1, config->
N + 1);
131 printDad(dad, config->
N + 1);
137 output_route->
pn =
opn;
138 output_route->
ps =
ops;
155 printf(
"this next prev point\n");
156 for (i = 0; i < cp->
N; i++)
157 printf(
"%3d %3d %3d (%3g,%3g)\n", i, next[i],
prev[i],
162 for (i = 0; i < cp->
N; i++) {
163 for (j = 0; j < cp->
N; j++)
164 printf(
"%4.1f ", arr[i][j]);
169static void printVis(
char *lbl,
COORD * vis,
int n)
174 for (i = 0; i < n; i++)
175 printf(
"%4.1f ", vis[i]);
179static void printDad(
int *vis,
int n)
184 for (i = 0; i < n; i++) {
189 for (i = 0; i < n; i++) {
190 printf(
"%3d ", vis[i]);
Memory allocation wrappers that exit on failure.
static void * gv_calloc(size_t nmemb, size_t size)
vconfig_t * Pobsopen(Ppoly_t **obs, int n_obs)
void Pobsclose(vconfig_t *config)
void Pobspath(vconfig_t *config, Ppoint_t p0, int poly0, Ppoint_t p1, int poly1, Ppolyline_t *output_route)
void makePath(unsigned n, edgefn ef)
VIS_API void visibility(vconfig_t *)
VIS_API COORD * ptVis(vconfig_t *, int, Ppoint_t)