--- ray/src/cv/bsdfmesh.c 2013/10/27 20:16:06 2.12 +++ ray/src/cv/bsdfmesh.c 2013/11/01 18:23:50 2.13 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: bsdfmesh.c,v 2.12 2013/10/27 20:16:06 greg Exp $"; +static const char RCSid[] = "$Id: bsdfmesh.c,v 2.13 2013/11/01 18:23:50 greg Exp $"; #endif /* * Create BSDF advection mesh from radial basis functions. @@ -176,9 +176,12 @@ price_routes(PRICEMAT *pm, const RBFNODE *from_rbf, co pm->prow = pricerow(pm,i); srow = psortrow(pm,i); for (j = to_rbf->nrbf; j--; ) { - double dprod = DOT(vfrom, vto[j]); - pm->prow[j] = ((dprod >= 1.) ? .0 : acos(dprod)) + - fabs(R2ANG(to_rbf->rbfa[j].crad) - from_ang); + double d; /* quadratic cost function */ + d = DOT(vfrom, vto[j]); + d = (d >= 1.) ? .0 : acos(d); + pm->prow[j] = d*d; + d = R2ANG(to_rbf->rbfa[j].crad) - from_ang; + pm->prow[j] += d*d; srow[j] = j; } qsort_r(srow, pm->ncols, sizeof(short), pm, &msrt_cmp);