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.; /* emitter multiplier */ |
63 |
|
printf(" %s", argv[i]); |
64 |
|
switch (argv[i][1]) { |
65 |
|
case 'g': /* glow distance (meters) */ |
66 |
< |
if (argv[i][2] || badarg(argc-i, argv+i, "f")) |
66 |
> |
if (argv[i][2] || badarg(argc-i-1, argv+i+1, "f")) |
67 |
|
goto userr; |
68 |
|
glowdist = atof(argv[++i]); |
69 |
|
printf(" %s", argv[i]); |
70 |
|
break; |
71 |
|
case 'e': /* emitter multiplier */ |
72 |
< |
if (argv[i][2] || badarg(argc-i, argv+i, "f")) |
72 |
> |
if (argv[i][2] || badarg(argc-i-1, argv+i+1, "f")) |
73 |
|
goto userr; |
74 |
|
emult = atof(argv[++i]); |
75 |
|
printf(" %s", argv[i]); |
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); |