Lines Matching refs:order

39 double ON_KnotTolerance( int order, int cv_count, const double* knot,   in ON_KnotTolerance()  argument
42 const int knot_count = ON_KnotCount( order, cv_count ); in ON_KnotTolerance()
45 i0 = knot_index-order+1; in ON_KnotTolerance()
48 i1 = knot_index+order-1; in ON_KnotTolerance()
70 double ON_SpanTolerance( int order, int, const double* knot, int span_index ) in ON_SpanTolerance() argument
72 const int i0 = span_index+order-2; in ON_SpanTolerance()
81 int ON_KnotCount( int order, int cv_count ) in ON_KnotCount() argument
83 return (order+cv_count-2); in ON_KnotCount()
92 int order, // order (>=2) in ON_KnotMultiplicity() argument
98 int knot_count = order+cv_count-2; in ON_KnotMultiplicity()
118 int order, // order (>=2) in ON_KnotVectorSpanCount() argument
125 if ( 0 != order || 0 != cv_count ) in ON_KnotVectorSpanCount()
132 for ( i = order-1; i < cv_count; i++ ) { in ON_KnotVectorSpanCount()
145 int order, // order (>=2) in ON_GetKnotVectorSpanVector() argument
153 if ( 0 != order || 0 != cv_count ) in ON_GetKnotVectorSpanVector()
162 s[span_count++] = knot[order-2]; in ON_GetKnotVectorSpanVector()
163 for ( i = order-1; i < cv_count; i++ ) { in ON_GetKnotVectorSpanVector()
177 int order, // (>=2) in ON_NurbsSpanIndex() argument
188 knot += (order-2); in ON_NurbsSpanIndex()
189 len = cv_count-order+2; in ON_NurbsSpanIndex()
226 int ON_NextNurbsSpanIndex( int order, int cv_count, const double* knot, int span_index ) in ON_NextNurbsSpanIndex() argument
276 if (span_index < 0 || span_index > cv_count-order || !knot) in ON_NextNurbsSpanIndex()
279 if ( span_index < cv_count-order ) { in ON_NextNurbsSpanIndex()
283 while ( span_index < cv_count-order && in ON_NextNurbsSpanIndex()
284 knot[span_index+order-2] == knot[span_index+order-1] ); in ON_NextNurbsSpanIndex()
290 int ON_GetSpanIndices(int order, in ON_GetSpanIndices() argument
312 span_indices[j] = span_index + order - 2; in ON_GetSpanIndices()
313 next_span_index = ON_NextNurbsSpanIndex(order, cv_count, knot, span_index); in ON_GetSpanIndices()
319 span_indices[j] = span_index + order - 1; in ON_GetSpanIndices()
331 int order, int cv_count, const double* knot, in ON_SuperfluousKnot() argument
335 const int knot_count = order+cv_count-2; in ON_SuperfluousKnot()
338 if (order > 2 && cv_count >= 2*order - 2 && cv_count >= 6 ) { in ON_SuperfluousKnot()
342 k += (knot[order+1] - knot[order]); in ON_SuperfluousKnot()
345 if ( knot[0] < knot[order-2] ) in ON_SuperfluousKnot()
346 k -= (knot[cv_count-order+1] - knot[cv_count-order]); in ON_SuperfluousKnot()
358 int order, in ON_IsKnotVectorPeriodic() argument
368 if ( order < 2 || cv_count < order || !knot ) { in ON_IsKnotVectorPeriodic()
373 if ( order == 2 ) in ON_IsKnotVectorPeriodic()
376 if (order <= 4) { in ON_IsKnotVectorPeriodic()
377 if (cv_count < order+2) in ON_IsKnotVectorPeriodic()
380 else if ( cv_count < 2*order-2 ) { in ON_IsKnotVectorPeriodic()
384 tol = fabs(knot[order-1] - knot[order-3])* ON_SQRT_EPSILON; in ON_IsKnotVectorPeriodic()
385 if (tol < fabs(knot[cv_count-1] - knot[order-2])* ON_SQRT_EPSILON) in ON_IsKnotVectorPeriodic()
386 tol = fabs(knot[cv_count-1] - knot[order-2])* ON_SQRT_EPSILON; in ON_IsKnotVectorPeriodic()
387 k1 = knot+cv_count-order+1; in ON_IsKnotVectorPeriodic()
388 i = 2*(order-2); in ON_IsKnotVectorPeriodic()
403 int order, in ON_IsKnotVectorClamped() argument
410 if ( order <= 1 || cv_count < order || !knot || end < 0 || end > 2 ) in ON_IsKnotVectorClamped()
413 if ( (end == 0 || end == 2) && knot[0] != knot[order-2] ) in ON_IsKnotVectorClamped()
415 if ( (end == 1 || end == 2) && knot[cv_count-1] != knot[order+cv_count-3] ) in ON_IsKnotVectorClamped()
421 int order, in ON_IsKnotVectorUniform() argument
426 bool rc = (order >= 2 && cv_count >= order && 0 != knot); in ON_IsKnotVectorUniform()
429 const double delta = knot[order-1] - knot[order-2]; in ON_IsKnotVectorUniform()
433 if ( ON_IsKnotVectorClamped(order,cv_count,knot) ) in ON_IsKnotVectorUniform()
435 i0 = order; in ON_IsKnotVectorUniform()
441 i1 = ON_KnotCount(order,cv_count); in ON_IsKnotVectorUniform()
459 int order, // order (>=2) in ON_KnotVectorHasBezierSpans() argument
464 int knot_count = ON_KnotCount( order, cv_count ); in ON_KnotVectorHasBezierSpans()
467 int span_count = ON_KnotVectorSpanCount( order, cv_count, knot ); in ON_KnotVectorHasBezierSpans()
470 if ( order >= 2 && in ON_KnotVectorHasBezierSpans()
471 cv_count >= order && in ON_KnotVectorHasBezierSpans()
472 knot_count == (span_count+1)*(order-1) && in ON_KnotVectorHasBezierSpans()
473 knot[0] == knot[order-2] && knot[cv_count-1] == knot[knot_count-1]) in ON_KnotVectorHasBezierSpans()
484 int order, in ON_KnotVectorStyle() argument
490 if ( order >= 2 && cv_count >= order && knot && knot[order-2] < knot[cv_count-1] ) { in ON_KnotVectorStyle()
491 const int knot_count = order+cv_count-2; in ON_KnotVectorStyle()
492 …const double delta = 0.5*((knot[order-1] - knot[order-2]) + (knot[cv_count-1] - knot[cv_count-2])); in ON_KnotVectorStyle()
495 if ( ON_IsKnotVectorClamped( order, cv_count, knot ) ) { in ON_KnotVectorStyle()
496 if ( order == cv_count ) { in ON_KnotVectorStyle()
501 for ( i = order-1; i <= cv_count-1; i++ ) { in ON_KnotVectorStyle()
510 const int degree = order-1; in ON_KnotVectorStyle()
511 for ( i = order-1; i < cv_count-1; i += degree ) { in ON_KnotVectorStyle()
541 bool ON_SetKnotVectorDomain( int order, int cv_count, double* knot, double t0, double t1 ) in ON_SetKnotVectorDomain() argument
544 …if ( order < 2 || cv_count < order || 0 == knot || t0 >= t1 || !ON_IsValid(t0) || !ON_IsValid(t1) ) in ON_SetKnotVectorDomain()
548 else if ( knot[order-2] >= knot[cv_count-1] in ON_SetKnotVectorDomain()
549 || !ON_IsValid(knot[order-2]) in ON_SetKnotVectorDomain()
556 const ON_Interval oldd(knot[order-2],knot[cv_count-1]); in ON_SetKnotVectorDomain()
560 int i, knot_count = ON_KnotCount(order,cv_count); in ON_SetKnotVectorDomain()
578 int order, in ON_GetKnotVectorDomain() argument
584 if ( order < 2 || cv_count < order || knot == NULL ) in ON_GetKnotVectorDomain()
587 *k0 = knot[order-2]; in ON_GetKnotVectorDomain()
599 int order, in ON_ReverseKnotVector() argument
604 if ( order < 2 || cv_count < order || knot == NULL ) in ON_ReverseKnotVector()
606 const int knot_count = (order+cv_count-2); in ON_ReverseKnotVector()
684 bool ON_IsValidKnotVector( int order, int cv_count, const double* knot, ON_TextLog* text_logx ) in ON_IsValidKnotVector() argument
695 if ( order < 2 ) in ON_IsValidKnotVector()
699 text_log->Print("Knot vector order = %d (should be >= 2 )\n",order); in ON_IsValidKnotVector()
703 if ( cv_count < order ) in ON_IsValidKnotVector()
707 text_log->Print("Knot vector cv_count = %d (should be >= order=%d )\n",cv_count,order); in ON_IsValidKnotVector()
720 for ( i = 0; i < cv_count+order-2; i++ ) in ON_IsValidKnotVector()
732 if ( !(knot[order-2] < knot[order-1]) ) in ON_IsValidKnotVector()
737 order,order-2,knot[order-2],order-1,knot[order-1]); in ON_IsValidKnotVector()
754 i = order + cv_count - 3; in ON_IsValidKnotVector()
761 order+cv_count-4-i, *k0, order+cv_count-3-i, *k1 ); in ON_IsValidKnotVector()
771 k1 = knot + order - 1; in ON_IsValidKnotVector()
779 order, cv_count-2-i, *k0, cv_count-1-i, *k1 ); in ON_IsValidKnotVector()
792 int order, // order (>=2) in ON_ClampKnotVector() argument
801 if ( knot && order >= 2 && cv_count >= order ) { in ON_ClampKnotVector()
803 i0 = order-2; in ON_ClampKnotVector()
810 const int knot_count = ON_KnotCount(order,cv_count); in ON_ClampKnotVector()
823 int order, // order (>=2) in ON_MakeKnotVectorPeriodic() argument
831 if ( order < 2 || cv_count < order || !knot ) { in ON_MakeKnotVectorPeriodic()
836 switch(order) { in ON_MakeKnotVectorPeriodic()
853 if ( cv_count < 2*order-2 ) { in ON_MakeKnotVectorPeriodic()
860 k0 = knot + order-2; in ON_MakeKnotVectorPeriodic()
862 i = order-2; in ON_MakeKnotVectorPeriodic()
867 k0 = knot + order-2; in ON_MakeKnotVectorPeriodic()
869 i = order-2; in ON_MakeKnotVectorPeriodic()
880 int order, in ON_MakeClampedUniformKnotVector() argument
887 if ( order >= 2 && cv_count >= order && knot != NULL && delta > 0.0 ) in ON_MakeClampedUniformKnotVector()
891 for ( i = order-2, k = 0.0; i < cv_count; i++, k += delta ) in ON_MakeClampedUniformKnotVector()
893 ON_ClampKnotVector(order,cv_count,knot,2); in ON_MakeClampedUniformKnotVector()
915 int order, in ON_MakePeriodicUniformKnotVector() argument
922 if ( order >= 2 && cv_count >= order && knot != NULL && delta > 0.0 ) in ON_MakePeriodicUniformKnotVector()
925 int i, knot_count = ON_KnotCount(order,cv_count); in ON_MakePeriodicUniformKnotVector()
926 for ( i = order-2, k = 0.0; i < knot_count; i++, k += delta ) in ON_MakePeriodicUniformKnotVector()
928 for ( i = order-3, k = -delta; i >= 0; i--, k -= delta ) in ON_MakePeriodicUniformKnotVector()
938 int order, // order (>=2) in ON_GrevilleAbcissa() argument
943 if ( order <= 2 || knot[0] == knot[order-2]) { in ON_GrevilleAbcissa()
948 order--; in ON_GrevilleAbcissa()
949 const double k = knot[order/2]; in ON_GrevilleAbcissa()
950 const double tol = (knot[order-1]-knot[0]); in ON_GrevilleAbcissa()
951 const double d = 1.0/((double)order); in ON_GrevilleAbcissa()
952 while ( order--) { in ON_GrevilleAbcissa()
964 int order, // order (>=2) in ON_GetGrevilleAbcissae() argument
976 if ( order < 2 || cv_count < order || !knot || !g ) in ON_GetGrevilleAbcissae()
979 const int g_count = (bPeriodic) ? cv_count-order+1 : cv_count; in ON_GetGrevilleAbcissae()
981 if (order == 2) { in ON_GetGrevilleAbcissae()
987 t0 = knot[order-2]; in ON_GetGrevilleAbcissae()
989 periodic_check = (bPeriodic) ? order-2 : 0; in ON_GetGrevilleAbcissae()
991 x = ON_GrevilleAbcissa( order, knot++ ); in ON_GetGrevilleAbcissae()
1011 int order, in ON_GetGrevilleKnotVector() argument
1021 if ( g_stride < 1 || !g || !knot || order < 2 || cv_count < order ) in ON_GetGrevilleKnotVector()
1023 if ( bPeriodic && order == 2 ) in ON_GetGrevilleKnotVector()
1025 if ( bPeriodic && cv_count - order + 2 < 3 ) in ON_GetGrevilleKnotVector()
1028 degree = order-1; in ON_GetGrevilleKnotVector()
1036 knot_count = ON_KnotCount( order, cv_count ); in ON_GetGrevilleKnotVector()
1037 g_count = (bPeriodic) ? cv_count-order+2 : cv_count; in ON_GetGrevilleKnotVector()
1043 for ( j = 0, gi = g_count-order; j < degree; j++, gi++ ) { in ON_GetGrevilleKnotVector()
1054 for ( j = 0; j < g_count+order; j++ ) { in ON_GetGrevilleKnotVector()
1069 double* B = (double*)alloca(order*order*sizeof(B[0])); in ON_GetGrevilleKnotVector()
1077 ON_EvaluateNurbsBasis( order, p+j, g[0], B ); in ON_GetGrevilleKnotVector()
1086 rc = ON_MakeKnotVectorPeriodic( order, cv_count, knot ); in ON_GetGrevilleKnotVector()
1124 int order, in ON_ClampKnotVector() argument
1136 if ( knot && order >= 2 && cv_count >= order ) { in ON_ClampKnotVector()
1139 ON_EvaluateNurbsDeBoor(cv_dim,order,cv_stride,cv,knot,1,0.0,knot[order-2]); in ON_ClampKnotVector()
1141 i0 = order-2; in ON_ClampKnotVector()
1147 i0 = cv_count-order; in ON_ClampKnotVector()
1151 ON_EvaluateNurbsDeBoor(cv_dim,order,cv_stride,cv,knot,-1,0.0,knot[order-1]); in ON_ClampKnotVector()
1153 i0 = order-1; in ON_ClampKnotVector()
1154 for (i = 2*order-3; i > i0; i--) in ON_ClampKnotVector()
1163 static bool ON_InsertSingleKnot( int cv_dim, int order, in ON_InsertSingleKnot() argument
1176 if ( order < 2 || !knot || knot_value < knot[order-2] || knot[order-1] <= knot_value ) { in ON_InsertSingleKnot()
1188 degree = order-1; in ON_InsertSingleKnot()
1202 memcpy( cv+cv_dim*order, cv+cv_dim*degree, cv_dim*sizeof(*cv) ); in ON_InsertSingleKnot()
1206 k1 = k0 + order; in ON_InsertSingleKnot()
1207 cv += order*cv_stride; in ON_InsertSingleKnot()
1250 int order, in ON_InsertKnot() argument
1261 if ( order < 2 || cv_count < order || !knot ) in ON_InsertKnot()
1276 if ( knot_multiplicity >= order ) in ON_InsertKnot()
1283 int span_index = ON_NurbsSpanIndex( order, cv_count, knot, knot_value, 1, hint?*hint:0 ); in ON_InsertKnot()
1289 const double knot_tolerance = ON_SpanTolerance( order, cv_count, knot, 0 ); in ON_InsertKnot()
1294 if ( knot_value < knot[order-1] ) in ON_InsertKnot()
1296 if ( knot_value <= knot[order-2] + knot_tolerance ) in ON_InsertKnot()
1303 if ( span_index == cv_count-order ) in ON_InsertKnot()
1305 if ( knot_value > knot[order-2] && knot_value >= knot[order-1] - knot_tolerance ) in ON_InsertKnot()
1313 …if ( knot_value <= 0.5*(knot[order-2]+knot[order-1]) && fabs( knot_value - knot[order-2] ) <= knot… in ON_InsertKnot()
1314 knot_value = knot[order-2]; in ON_InsertKnot()
1316 else if ( fabs( knot_value - knot[order-1] ) <= knot_tolerance ) { in ON_InsertKnot()
1317 knot_value = knot[order-1]; in ON_InsertKnot()
1320 const int degree = order-1; in ON_InsertKnot()
1325 if ( knot_value == knot[order-2] ) { in ON_InsertKnot()
1326 for ( j = order-2; m < knot_multiplicity && knot[j-m] == knot_value; m++ ) in ON_InsertKnot()
1329 else if ( knot_value == knot[order-1] ) { in ON_InsertKnot()
1330 for ( j = order-1; m < knot_multiplicity && knot[j+m] == knot_value; m++ ) in ON_InsertKnot()
1340 double* new_knot = (double*)onmalloc( ((2*degree+m) + (order+m)*cv_dim)*sizeof(*new_knot) ); in ON_InsertKnot()
1349 for ( j = 0; j < order; j++ ) { in ON_InsertKnot()
1357 if ( !ON_InsertSingleKnot(cv_dim,order,cv_dim,new_cv,new_knot,knot_value) ) in ON_InsertKnot()
1370 int i0 = ON_KnotCount( order, cv_count ) - 1; // knot[i0] = last input knot in ON_InsertKnot()
1372 int j = (cv_count-order); in ON_InsertKnot()
1383 j = cv_count-order; in ON_InsertKnot()
1391 for ( j = 0; j < order+rc; j++ ) { in ON_InsertKnot()