| 17 |
|
|
| 18 |
|
#define putv(v) printf("%18.12g %18.12g %18.12g\n",(v)[0],(v)[1],(v)[2]) |
| 19 |
|
|
| 20 |
+ |
#define invert (xf_context != NULL && xf_context->rev) |
| 21 |
+ |
|
| 22 |
|
double glowdist = FHUGE; /* glow test distance */ |
| 23 |
|
|
| 24 |
< |
double emult = 1.; /* emmitter multiplier */ |
| 24 |
> |
double emult = 1.; /* emitter multiplier */ |
| 25 |
|
|
| 26 |
|
int r_comment(), r_cone(), r_cyl(), r_face(), r_ies(), r_ring(), r_sph(); |
| 27 |
|
char *material(), *object(), *addarg(); |
| 295 |
|
printf("\n%s polygon %sf%d\n", mat, object(), ++nfaces); |
| 296 |
|
printf("0\n0\n%d\n", 3*(ac-1)); |
| 297 |
|
for (i = 1; i < ac; i++) { |
| 298 |
< |
if ((cv = c_getvert(av[i])) == NULL) |
| 298 |
> |
if ((cv = c_getvert(av[invert ? ac-i : i])) == NULL) |
| 299 |
|
return(MG_EUNDEF); |
| 300 |
|
xf_xfmpoint(v, cv->p); |
| 301 |
|
putv(v); |
| 369 |
|
FVECT n1, n2, n3; |
| 370 |
|
register int i; |
| 371 |
|
/* the following is repeat code, so assume it's OK */ |
| 370 |
– |
cv1 = c_getvert(vn1); |
| 372 |
|
cv2 = c_getvert(vn2); |
| 373 |
< |
cv3 = c_getvert(vn3); |
| 373 |
> |
if (invert) { |
| 374 |
> |
cv3 = c_getvert(vn1); |
| 375 |
> |
cv1 = c_getvert(vn3); |
| 376 |
> |
} else { |
| 377 |
> |
cv1 = c_getvert(vn1); |
| 378 |
> |
cv3 = c_getvert(vn3); |
| 379 |
> |
} |
| 380 |
|
xf_xfmpoint(v1, cv1->p); |
| 381 |
|
xf_xfmpoint(v2, cv2->p); |
| 382 |
|
xf_xfmpoint(v3, cv3->p); |