| 210 |
|
{ |
| 211 |
|
static int ntri = 0; |
| 212 |
|
BARYCCM bvecs; |
| 213 |
+ |
FVECT bvm[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 FVECT com[]; |
| 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 |
|
|