210 |
|
{ |
211 |
|
static int ntri = 0; |
212 |
|
BARYCCM bvecs; |
213 |
+ |
FLOAT bvm[3][3]; |
214 |
+ |
register int i; |
215 |
|
/* compute barycentric coordinates */ |
216 |
|
if (v1->flags & v2->flags & v3->flags & (V_HASINDX|V_HASNORM)) |
217 |
|
if (comp_baryc(&bvecs, v1->pos, v2->pos, v3->pos) < 0) |
221 |
|
printf("\n%s texfunc %s\n", mod, TEXNAME); |
222 |
|
mod = TEXNAME; |
223 |
|
printf("4 dx dy dz %s\n", CALNAME); |
224 |
< |
printf("0\n16 "); |
225 |
< |
put_baryc(&bvecs); |
226 |
< |
printf("\t%14.12g %14.12g %14.12g\n", |
227 |
< |
v1->nor[0], v2->nor[0], v3->nor[0]); |
228 |
< |
printf("\t%14.12g %14.12g %14.12g\n", |
229 |
< |
v1->nor[1], v2->nor[1], v3->nor[1]); |
230 |
< |
printf("\t%14.12g %14.12g %14.12g\n", |
229 |
< |
v1->nor[2], v2->nor[2], v3->nor[2]); |
224 |
> |
printf("0\n"); |
225 |
> |
for (i = 0; i < 3; i++) { |
226 |
> |
bvm[i][0] = v1->nor[i]; |
227 |
> |
bvm[i][1] = v2->nor[i]; |
228 |
> |
bvm[i][2] = v3->nor[i]; |
229 |
> |
} |
230 |
> |
put_baryc(&bvecs, bvm, 3); |
231 |
|
} |
232 |
|
/* put out pattern (if any) */ |
233 |
|
if (*pn && (v1->flags & v2->flags & v3->flags & V_HASINDX)) { |
234 |
|
printf("\n%s colorpict %s\n", mod, PATNAME); |
235 |
|
mod = PATNAME; |
236 |
|
printf("7 noneg noneg noneg %s %s u v\n", pn, CALNAME); |
237 |
< |
printf("0\n13 "); |
238 |
< |
put_baryc(&bvecs); |
239 |
< |
printf("\t%f %f %f\n", v1->ndx[0], v2->ndx[0], v3->ndx[0]); |
240 |
< |
printf("\t%f %f %f\n", v1->ndx[1], v2->ndx[1], v3->ndx[1]); |
237 |
> |
printf("0\n"); |
238 |
> |
for (i = 0; i < 2; i++) { |
239 |
> |
bvm[i][0] = v1->ndx[i]; |
240 |
> |
bvm[i][1] = v2->ndx[i]; |
241 |
> |
bvm[i][2] = v3->ndx[i]; |
242 |
> |
} |
243 |
> |
put_baryc(&bvecs, bvm, 2); |
244 |
|
} |
245 |
|
/* put out triangle */ |
246 |
|
printf("\n%s polygon %s.%d\n", mod, obj, ++ntri); |
298 |
|
} |
299 |
|
|
300 |
|
|
301 |
< |
put_baryc(bcm) /* put barycentric coord. vectors */ |
301 |
> |
put_baryc(bcm, com, n) /* put barycentric coord. vectors */ |
302 |
|
register BARYCCM *bcm; |
303 |
+ |
register FLOAT com[][3]; |
304 |
+ |
int n; |
305 |
|
{ |
306 |
< |
printf("\t%d\n", bcm->ax); |
307 |
< |
printf("%14.8f %14.8f %14.8f\n", |
308 |
< |
bcm->tm[0][0], bcm->tm[0][1], bcm->tm[0][2]); |
309 |
< |
printf("%14.8f %14.8f %14.8f\n", |
310 |
< |
bcm->tm[1][0], bcm->tm[1][1], bcm->tm[1][2]); |
306 |
> |
double a, b; |
307 |
> |
register int i, j; |
308 |
> |
|
309 |
> |
printf("%d\t%d\n", 1+3*n, bcm->ax); |
310 |
> |
for (i = 0; i < n; i++) { |
311 |
> |
a = com[i][0] - com[i][2]; |
312 |
> |
b = com[i][1] - com[i][2]; |
313 |
> |
printf("%14.8f %14.8f %14.8f\n", |
314 |
> |
bcm->tm[0][0]*a + bcm->tm[1][0]*b, |
315 |
> |
bcm->tm[0][1]*a + bcm->tm[1][1]*b, |
316 |
> |
bcm->tm[0][2]*a + bcm->tm[1][2]*b + com[i][2]); |
317 |
> |
} |
318 |
|
} |
319 |
|
|
320 |
|
|