Lines Matching refs:pspec
60 /* pspec[i].range is uninit here */
65 pspec[0].order = geo->qspec[0].order;
66 pspec[1].order = geo->qspec[1].order;
67 pspec[0].stride = pspec[1].order * MAXCOORDS;
68 pspec[1].stride = MAXCOORDS;
81 spts, pspec[0].stride, pspec[1].stride );
87 cpts, pspec[0].stride, pspec[1].stride );
93 bpts, pspec[0].stride, pspec[1].stride );
97 pspec[0].range[0] = geo->qspec[0].breakpoints[geo->qspec[0].index];
98 pspec[0].range[1] = geo->qspec[0].breakpoints[geo->qspec[0].index+1];
99 pspec[0].range[2] = pspec[0].range[1] - pspec[0].range[0];
101 pspec[1].range[0] = geo->qspec[1].breakpoints[geo->qspec[1].index];
102 pspec[1].range[1] = geo->qspec[1].breakpoints[geo->qspec[1].index+1];
103 pspec[1].range[2] = pspec[1].range[1] - pspec[1].range[0];
106 if( pspec[0].range[0] != pta[0] ) {
107 assert( pspec[0].range[0] < pta[0] );
112 if( pspec[0].range[1] != ptb[0] ) {
113 assert( pspec[0].range[1] > ptb[0] );
117 if( pspec[1].range[0] != pta[1] ) {
118 assert( pspec[1].range[0] < pta[1] );
123 if( pspec[1].range[1] != ptb[1] ) {
124 assert( pspec[1].range[1] > ptb[1] );
144 lower.pspec[0].order = upper.pspec[0].order;
145 lower.pspec[1].order = upper.pspec[1].order;
146 lower.pspec[0].stride = upper.pspec[0].stride;
147 lower.pspec[1].stride = upper.pspec[1].stride;
153 REAL d = (value-upper.pspec[0].range[0]) / upper.pspec[0].range[2];
155 mapdesc->subdivide( upper.spts, lower.spts, d, pspec[1].order,
156 pspec[1].stride, pspec[0].order, pspec[0].stride );
159 mapdesc->subdivide( upper.cpts, lower.cpts, d, pspec[1].order,
160 pspec[1].stride, pspec[0].order, pspec[0].stride );
163 mapdesc->subdivide( upper.bpts, lower.bpts, d, pspec[1].order,
164 pspec[1].stride, pspec[0].order, pspec[0].stride );
166 lower.pspec[0].range[0] = upper.pspec[0].range[0];
167 lower.pspec[0].range[1] = value;
168 lower.pspec[0].range[2] = value - upper.pspec[0].range[0];
169 upper.pspec[0].range[0] = value;
170 upper.pspec[0].range[2] = upper.pspec[0].range[1] - value;
172 lower.pspec[1].range[0] = upper.pspec[1].range[0];
173 lower.pspec[1].range[1] = upper.pspec[1].range[1];
174 lower.pspec[1].range[2] = upper.pspec[1].range[2];
178 REAL d = (value-upper.pspec[1].range[0]) / upper.pspec[1].range[2];
180 mapdesc->subdivide( upper.spts, lower.spts, d, pspec[0].order,
181 pspec[0].stride, pspec[1].order, pspec[1].stride );
183 mapdesc->subdivide( upper.cpts, lower.cpts, d, pspec[0].order,
184 pspec[0].stride, pspec[1].order, pspec[1].stride );
186 mapdesc->subdivide( upper.bpts, lower.bpts, d, pspec[0].order,
187 pspec[0].stride, pspec[1].order, pspec[1].stride );
188 lower.pspec[0].range[0] = upper.pspec[0].range[0];
189 lower.pspec[0].range[1] = upper.pspec[0].range[1];
190 lower.pspec[0].range[2] = upper.pspec[0].range[2];
192 lower.pspec[1].range[0] = upper.pspec[1].range[0];
193 lower.pspec[1].range[1] = value;
194 lower.pspec[1].range[2] = value - upper.pspec[1].range[0];
195 upper.pspec[1].range[0] = value;
196 upper.pspec[1].range[2] = upper.pspec[1].range[1] - value;
218 pspec[0].clamp( mapdesc->clampfactor );
219 pspec[1].clamp( mapdesc->clampfactor );
238 mapdesc->bboxTooBig( bpts, pspec[0].stride, pspec[1].stride,
239 pspec[0].order, pspec[1].order, bb ) != 1 ) {
260 pspec[0].minstepsize = pspec[1].minstepsize = 0;
261 pspec[0].needsSubdivision = pspec[1].needsSubdivision = 0;
267 pspec[0].getstepsize( mapdesc->maxsrate );
268 pspec[1].getstepsize( mapdesc->maxtrate );
273 pspec[0].getstepsize( mapdesc->maxsrate * pspec[0].range[2] );
274 pspec[1].getstepsize( mapdesc->maxtrate * pspec[1].range[2] );
277 pspec[0].singleStep();
278 pspec[1].singleStep();
285 assert( pspec[0].order <= MAXORDER );
289 int val = mapdesc->project( spts, pspec[0].stride, pspec[1].stride,
291 pspec[0].order, pspec[1].order );
294 pspec[0].getstepsize( mapdesc->maxsrate );
295 pspec[1].getstepsize( mapdesc->maxtrate );
299 pspec[0].minstepsize = ( mapdesc->maxsrate > 0.0 ) ?
300 (pspec[0].range[2] / mapdesc->maxsrate) : 0.0;
301 pspec[1].minstepsize = ( mapdesc->maxtrate > 0.0 ) ?
302 (pspec[1].range[2] / mapdesc->maxtrate) : 0.0;
311 REAL ss = mapdesc->calcPartialVelocity( ssv, &tmp[0][0][0], trstride, tcstride, pspec[0].order, pspec[1].order, 2, 0, pspec[0].range[2], pspec[1].range[2], 0 );
312 REAL st = mapdesc->calcPartialVelocity( 0, &tmp[0][0][0], trstride, tcstride, pspec[0].order, pspec[1].order, 1, 1, pspec[0].range[2], pspec[1].range[2], -1 );
313 REAL tt = mapdesc->calcPartialVelocity( ttv, &tmp[0][0][0], trstride, tcstride, pspec[0].order, pspec[1].order, 0, 2, pspec[0].range[2], pspec[1].range[2], 1 );
326 pspec[0].stepsize = ( ds < pspec[0].range[2] ) ? ds : pspec[0].range[2];
327 REAL scutoff = 2.0 * t2 / ( pspec[0].range[2] * pspec[0].range[2]);
328 pspec[0].sidestep[0] = (ssv[0] > scutoff) ? sqrtf( 2.0 * t2 / ssv[0] ) : pspec[0].range[2];
329 pspec[0].sidestep[1] = (ssv[1] > scutoff) ? sqrtf( 2.0 * t2 / ssv[1] ) : pspec[0].range[2];
331 pspec[1].stepsize = ( dt < pspec[1].range[2] ) ? dt : pspec[1].range[2];
332 REAL tcutoff = 2.0 * t2 / ( pspec[1].range[2] * pspec[1].range[2]);
333 pspec[1].sidestep[0] = (ttv[0] > tcutoff) ? sqrtf( 2.0 * t2 / ttv[0] ) : pspec[1].range[2];
334 pspec[1].sidestep[1] = (ttv[1] > tcutoff) ? sqrtf( 2.0 * t2 / ttv[1] ) : pspec[1].range[2];
336 REAL x = pspec[1].range[2] * st;
338 pspec[0].stepsize = ( ds < pspec[0].range[2] ) ? ds : pspec[0].range[2];
339 REAL scutoff = 2.0 * t2 / ( pspec[0].range[2] * pspec[0].range[2]);
340 pspec[0].sidestep[0] = (ssv[0] > scutoff) ? sqrtf( 2.0 * t2 / ssv[0] ) : pspec[0].range[2];
341 pspec[0].sidestep[1] = (ssv[1] > scutoff) ? sqrtf( 2.0 * t2 / ssv[1] ) : pspec[0].range[2];
342 pspec[1].singleStep();
344 REAL x = pspec[0].range[2] * st;
346 pspec[0].singleStep();
347 REAL tcutoff = 2.0 * t2 / ( pspec[1].range[2] * pspec[1].range[2]);
348 pspec[1].stepsize = ( dt < pspec[1].range[2] ) ? dt : pspec[1].range[2];
349 pspec[1].sidestep[0] = (ttv[0] > tcutoff) ? sqrtf( 2.0 * t2 / ttv[0] ) : pspec[1].range[2];
350 pspec[1].sidestep[1] = (ttv[1] > tcutoff) ? sqrtf( 2.0 * t2 / ttv[1] ) : pspec[1].range[2];
352 if( 4.0 * t2 > st * pspec[0].range[2] * pspec[1].range[2] ) {
353 pspec[0].singleStep();
354 pspec[1].singleStep();
357 REAL ds = sqrtf( area * pspec[0].range[2] / pspec[1].range[2] );
358 REAL dt = sqrtf( area * pspec[1].range[2] / pspec[0].range[2] );
359 pspec[0].stepsize = ( ds < pspec[0].range[2] ) ? ds : pspec[0].range[2];
360 pspec[0].sidestep[0] = pspec[0].range[2];
361 pspec[0].sidestep[1] = pspec[0].range[2];
363 pspec[1].stepsize = ( dt < pspec[1].range[2] ) ? dt : pspec[1].range[2];
364 pspec[1].sidestep[0] = pspec[1].range[2];
365 pspec[1].sidestep[1] = pspec[1].range[2];
372 REAL ms = mapdesc->calcPartialVelocity( msv, &tmp[0][0][0], trstride, tcstride, pspec[0].order, pspec[1].order, 1, 0, pspec[0].range[2], pspec[1].range[2], 0 );
373 REAL mt = mapdesc->calcPartialVelocity( mtv, &tmp[0][0][0], trstride, tcstride, pspec[0].order, pspec[1].order, 0, 1, pspec[0].range[2], pspec[1].range[2], 1 );
383 pspec[0].stepsize = ( ds < pspec[0].range[2] ) ? ds : pspec[0].range[2];
384 pspec[0].sidestep[0] = ( msv[0] * pspec[0].range[2] > t1 ) ? (side_scale* t1 / msv[0]) : pspec[0].range[2];
385 pspec[0].sidestep[1] = ( msv[1] * pspec[0].range[2] > t1 ) ? (side_scale* t1 / msv[1]) : pspec[0].range[2];
387 pspec[1].stepsize = ( dt < pspec[1].range[2] ) ? dt : pspec[1].range[2];
388 pspec[1].sidestep[0] = ( mtv[0] * pspec[1].range[2] > t1 ) ? (side_scale*t1 / mtv[0]) : pspec[1].range[2];
389 pspec[1].sidestep[1] = ( mtv[1] * pspec[1].range[2] > t1 ) ? (side_scale*t1 / mtv[1]) : pspec[1].range[2];
391 pspec[0].stepsize = ( t1 < ms * pspec[0].range[2] ) ? (t1 / ms) : pspec[0].range[2];
392 pspec[0].sidestep[0] = ( msv[0] * pspec[0].range[2] > t1 ) ? (t1 / msv[0]) : pspec[0].range[2];
393 pspec[0].sidestep[1] = ( msv[1] * pspec[0].range[2] > t1 ) ? (t1 / msv[1]) : pspec[0].range[2];
395 pspec[1].singleStep();
399 pspec[0].singleStep();
401 pspec[1].stepsize = ( t1 < mt * pspec[1].range[2] ) ? (t1 / mt) : pspec[1].range[2];
402 pspec[1].sidestep[0] = ( mtv[0] * pspec[1].range[2] > t1 ) ? (t1 / mtv[0]) : pspec[1].range[2];
403 pspec[1].sidestep[1] = ( mtv[1] * pspec[1].range[2] > t1 ) ? (t1 / mtv[1]) : pspec[1].range[2];
405 pspec[0].singleStep();
406 pspec[1].singleStep();
413 REAL ms = mapdesc->calcPartialVelocity( msv, &tmp[0][0][0], trstride, tcstride, pspec[0].order, pspec[1].order, 1, 0, pspec[0].range[2], pspec[1].range[2], 0 );
414 REAL mt = mapdesc->calcPartialVelocity( mtv, &tmp[0][0][0], trstride, tcstride, pspec[0].order, pspec[1].order, 0, 1, pspec[0].range[2], pspec[1].range[2], 1 );
418 REAL ds = t * sqrtf( d * pspec[0].range[2] / pspec[1].range[2] );
419 REAL dt = t * sqrtf( d * pspec[1].range[2] / pspec[0].range[2] );
420 pspec[0].stepsize = ( ds < pspec[0].range[2] ) ? ds : pspec[0].range[2];
421 pspec[0].sidestep[0] = ( msv[0] * pspec[0].range[2] > t ) ? (t / msv[0]) : pspec[0].range[2];
422 pspec[0].sidestep[1] = ( msv[1] * pspec[0].range[2] > t ) ? (t / msv[1]) : pspec[0].range[2];
424 pspec[1].stepsize = ( dt < pspec[1].range[2] ) ? dt : pspec[1].range[2];
425 pspec[1].sidestep[0] = ( mtv[0] * pspec[1].range[2] > t ) ? (t / mtv[0]) : pspec[1].range[2];
426 pspec[1].sidestep[1] = ( mtv[1] * pspec[1].range[2] > t ) ? (t / mtv[1]) : pspec[1].range[2];
428 pspec[0].singleStep();
429 pspec[1].singleStep();
433 pspec[0].singleStep();
434 pspec[1].singleStep();
441 pspec[0].sidestep[0], pspec[0].sidestep[1],
442 pspec[1].sidestep[0], pspec[1].sidestep[1],
443 pspec[0].stepsize, pspec[1].stepsize );
447 REAL savings = 1./(pspec[0].stepsize * pspec[1].stepsize) ;
448 savings-= (2./( pspec[0].sidestep[0] + pspec[0].sidestep[1] )) *
449 (2./( pspec[1].sidestep[0] + pspec[1].sidestep[1] ));
451 savings *= pspec[0].range[2] * pspec[1].range[2];
453 pspec[0].needsSubdivision = pspec[1].needsSubdivision = 1;
457 if( pspec[0].stepsize < pspec[0].minstepsize ) pspec[0].needsSubdivision = 1;
458 if( pspec[1].stepsize < pspec[1].minstepsize ) pspec[1].needsSubdivision = 1;
481 return (pspec[0].needsSubdivision || pspec[1].needsSubdivision) ? 1 : 0;
493 return pspec[param].needsSubdivision;
500 cullval = mapdesc->cullCheck( cpts, pspec[0].order, pspec[0].stride,
501 pspec[1].order, pspec[1].stride );