Overview Schemas Index

GEOMETRY_SCHEMA (jsdai.SGeometry_schema)


FUNCTION constraints_param_b_spline
          (degree : INTEGER, up_knots : INTEGER, up_cp : INTEGER, knot_mult : LIST [0:?] OF INTEGER, knots : LIST [0:?] OF parameter_value) : BOOLEAN;

LOCAL
     result  : BOOLEAN := TRUE;
     k, sum  : INTEGER;
   END_LOCAL;
   
   (* Find sum OF knot multiplicities. *)
   sum := knot_mult[1];
   
   REPEAT  i := 2 TO  up_knots;
     sum := sum + knot_mult[i];
   END_REPEAT;
   
   (* Check limits holding FOR all B-spline parametrisations *)
   IF  (degree < 1) OR  (up_knots < 2) OR  (up_cp < degree) OR
         (sum <> (degree + up_cp + 2)) THEN
     result := FALSE;
     RETURN(result);
   END_IF;
   
   k := knot_mult[1];
   
   IF  (k < 1) OR  (k > degree + 1) THEN
     result := FALSE;
     RETURN(result);
   END_IF;
      
   REPEAT i := 2 TO up_knots;
     IF  (knot_mult[i] < 1) OR (knots[i] <= knots[i-1]) THEN
       result := FALSE;
       RETURN(result);
     END_IF;
        
     k := knot_mult[i];
     
     IF  (i < up_knots) AND  (k > degree) THEN
       result := FALSE;
       RETURN(result);
     END_IF;
        
     IF (i = up_knots) AND (k > degree + 1) THEN
       result := FALSE;
       RETURN(result);
     END_IF;
   END_REPEAT;
   RETURN(result);

END_FUNCTION; -- constraints_param_b_spline

public class FConstraints_param_b_spline
          public static Value run(SdaiContext _context, Value degree, Value up_knots, Value up_cp, Value knot_mult, Value knots)