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); |