Application module: B spline geometry ISO/TS 10303-1801:2011-02(E)
© ISO

Cover page
Table of contents
Copyright
Foreword
Introduction
1 Scope
2 Normative references
3 Terms, definitions and abbreviated terms
    3.1 Terms and definitions
    3.2 Abbreviated terms

4 Information requirements
   4.1 Required AM ARM
   4.2 ARM type definitions
   4.3 ARM entity definitions
   4.4 ARM function definitions
5 Module interpreted model
   5.1 Mapping specification
   5.2 MIM EXPRESS short listing

A MIM short names
B Information object registration
C ARM EXPRESS-G   EXPRESS-G
D MIM EXPRESS-G   EXPRESS-G
E Computer interpretable listings
Bibliography
Index

4 Information requirements

This clause specifies the information requirements for the B spline geometry application module. The information requirements are specified as the Application Reference Model (ARM) of this application module.

NOTE 1  A graphical representation of the information requirements is given in Annex C.

NOTE 2  The mapping specification is specified in 5.1. It shows how the information requirements are met by using common resources and constructs defined or imported in the MIM schema of this application module.

This clause defines the information requirements to which implementations shall conform using the EXPRESS language as defined in ISO 10303-11. The following begins the B_spline_geometry_arm schema and identifies the necessary external references.

EXPRESS specification:

*)
SCHEMA B_spline_geometry_arm;
(*

4.1 Required AM ARM

The following EXPRESS interface statement specifies the elements imported from the ARM of another application module.

EXPRESS specification:

*)
USE FROM Basic_geometry_arm;    --  ISO/TS 10303-1652
(*

NOTE 1   The schemas referenced above are specified in the following part of ISO 10303:

Basic_geometry_arm ISO/TS 10303-1652

NOTE 2   See Annex C, Figures C.1and C.2 for a graphical representation of this schema.

4.2 ARM type definitions

This subclause specifies the ARM types for this application module. The ARM types and definitions are specified below.

4.2.1 knot_specification   EXPRESS-G

A knot_specification is an enumeration of the different types of knot distribution that can be used to implicitly define the knots and multiplicities for a curve or surface.

EXPRESS specification:

*)
TYPE knot_specification = ENUMERATION OF
   (bezier,
    quasi_uniform,
    uniform);
END_TYPE;
(*

Enumerated item definitions:

bezier: the form of knots appropriate for a piecewise Bezier curve or surface. If the degree is d, the first knot is 0.0 with multiplicity (d + 1), the subsequent intermediate knots have values separated by 1.0 and are of multiplicity d, the final knot has multiplicity (d + 1);

quasi_uniform: the form of knots appropriate for a quasi-uniform B-spline curve; the knots are of multiplicity (degree +1) at the ends, of multiplicity 1 elsewhere, and they start with 0.0 and each differs by 1.0 from the preceding knot;

uniform: the form of knots appropriate for a uniform B-spline curve; all knots are of multiplicity 1, they start with the value -d, where d is the degree, and each differs by 1.0 from the preceding knot;

4.2.2 parameter_value   EXPRESS-G

A parameter_value is the numerical value of a parameter in a dimensionless parameter space.

EXPRESS specification:

*)
TYPE parameter_value = REAL;
END_TYPE;
(*

4.3 ARM entity definitions

This subclause specifies the ARM entities for this module. Each ARM application entity is an atomic element that embodies a unique application concept and contains attributes specifying the data elements of the entity. The ARM entities and definitions are specified below.

4.3.1 B_spline_curve   EXPRESS-GMapping table

A B_spline_curve is a type of Bounded_curve that is a piecewise parametric polynomial or rational curve described in terms of control points and basis functions. The basis functions are defined by their degree and knot values and multiplicities. Depending upon the type these knots may be explicitly, or implicitly defined.

NOTE    The full semantics of this entity are defined in the corresponding MIM object which has an additional derived attribute.

EXPRESS specification:

*)
ENTITY B_spline_curve
  ABSTRACT SUPERTYPE OF (ONEOF (Curve_with_explicit_knots,
                                Curve_with_implicit_knots)
                        ANDOR Rational_b_spline_curve)
  SUBTYPE OF (Bounded_curve);
  degree : INTEGER;
  control_points : LIST[2:?] OF Cartesian_point;
  closed : LOGICAL;
WHERE
  WR1: ('B_SPLINE_GEOMETRY_ARM.CURVE_WITH_EXPLICIT_KNOTS' IN TYPEOF(self)) OR ('B_SPLINE_GEOMETRY_ARM.CURVE_WITH_IMPLICIT_KNOTS' IN TYPEOF(self));
END_ENTITY;
(*

Attribute definitions:

degree: the algebraic degree of the B-spline basis functions for the curve.

control_points: the list of control points for the curve.

closed: indication of whether, or not, the curve is closed; it is for information only.

Formal propositions:

WR1: Any instantiation of this entity shall include one of the subtypes Curve_with_explicit_knots or Curve_with_implicit_knots.

4.3.2 B_spline_surface   EXPRESS-GMapping table

A B_spline_surface is a type of Bounded_surface that is a piecewise parametric polynomial or rational surface described in terms of a two dimensional array of control points and basis functions. The basis functions are defined by their degree and knot values and nultiplicities. Depending upon the type these knots may be explicitly, or implicitly defined.

NOTE    The full semantics of this entity are defined in the corresponding MIM object which has an additional derived attributes.

EXPRESS specification:

*)
ENTITY B_spline_surface
  ABSTRACT SUPERTYPE OF (ONEOF (Surface_with_explicit_knots,
                                Surface_with_implicit_knots)
                        ANDOR Rational_b_spline_surface)
  SUBTYPE OF (Bounded_surface);
  u_degree : INTEGER;
  v_degree : INTEGER;
  control_points : LIST[2:?] OF LIST[2:?] OF Cartesian_point;
  u_closed : LOGICAL;
  v_closed : LOGICAL;
WHERE
  WR1: ('B_SPLINE_GEOMETRY_ARM.SURFACE_WITH_EXPLICIT_KNOTS' IN TYPEOF(self)) OR ('B_SPLINE_GEOMETRY_ARM.SURFACE_WITH_IMPLICIT_KNOTS' IN TYPEOF(self));
END_ENTITY;
(*

Attribute definitions:

u_degree: the algebraic degree of the B-spline basis functions for the surface in the first parameter direction.

v_degree: the algebraic degree of the B-spline basis functions for the surface in the second parameter direction.

control_points: the list of list of control points for the surface.

u_closed: indication of whether, or not, the surface is closed in the first parametric direction; it is for information only.

v_closed: indication of whether, or not, the surface is closed in the second parametric direction; it is for information only.

Formal propositions:

WR1: Any instantiation of this entity shall include one of the subtypes Surface_with_explicit_knots or Surface_with_implicit_knots.

4.3.3 Curve_with_explicit_knots   EXPRESS-GMapping table

A Curve_with_explicit_knots is a type of B_spline_curve for which the knot values are explicitly given. This subtype shall be used to represent non-uniform B-spline curves and may be used for other knot types.

NOTE    The full semantics of this entity are defined in the corresponding MIM object which has an additional derived attribute and a constraint to ensure that the specified knot values are compatible with the degree and control points for the curve.

EXPRESS specification:

*)
ENTITY Curve_with_explicit_knots
  SUBTYPE OF (B_spline_curve);
  knot_multiplicities : LIST[2:?] OF INTEGER;
  knot_values : LIST[2:?] OF parameter_value;
WHERE
  WR1: SIZEOF(knot_multiplicities) = SIZEOF(knot_values);
END_ENTITY;
(*

Attribute definitions:

knot_multiplicities: the list of multiplicities for the knot_values.

knot_values: the list of knot values used to define the B-spline basis functions.

Formal propositions:

WR1: The two lists of knot values and knot multiplicities shall have the same length.

4.3.4 Curve_with_implicit_knots   EXPRESS-GMapping table

A Curve_with_implicit_knots is a type of B_spline_curve for which the knot values are implicitly given. The precise specification of the knots depends upon the value of knot_type

NOTE    This entity is mapped to one of 3 distinct MIM entities depending upon the value of knot_type.

EXPRESS specification:

*)
ENTITY Curve_with_implicit_knots
  SUBTYPE OF (B_spline_curve);
  knot_type : knot_specification;
END_ENTITY;
(*

Attribute definitions:

knot_type: the type of configuration for the implicit set of knots and multiplicities. These are described in knot_specification.

4.3.5 Rational_b_spline_curve   EXPRESS-GMapping table

A Rational_b_spline_curve is a type of B_spline_curve and is a piecewise parametric rational curve described in terms of control points, weights and basis functions. This subtype is instantiated with one of the other subtypes of B_spline_curve which explicitly or implicitly provide the knot values used to define the basis functions. All weights shall be positive.

NOTE    The full semantics and parameterization of this entity are defined in the corresponding MIM object.

EXPRESS specification:

*)
ENTITY Rational_b_spline_curve
  SUBTYPE OF (B_spline_curve);
  weight_values : LIST[2:?] OF REAL;
WHERE
  WR1: SIZEOF(weight_values) = SIZEOF(SELF\B_spline_curve.control_points);
  WR2: positive_curve_weights(SELF);
END_ENTITY;
(*

Attribute definitions:

weight_values: the list of positive weights to be associated with the control points of the curve.

NOTE    If all the weights have value 1.0 the curve is identical to a simple non-rational B-spline curve.

Formal propositions:

WR1: The two lists of weight values and control points shall have the same length.

WR2: The weight values shall all be positive.

4.3.6 Rational_b_spline_surface   EXPRESS-GMapping table

A Rational_b_spline_surface is a type of B_spline_surface and is a piecewise parametric rational curve described in terms of control points, weights and basis functions. This subtype is instantiated with one of the other subtypes of B_spline_surface which explicitly or implicitly provide the knot values used to define the basis functions. All weights shall be positive.

NOTE    The full semantics and parameterization of this entity are defined in the corresponding MIM object.

EXPRESS specification:

*)
ENTITY Rational_b_spline_surface
  SUBTYPE OF (B_spline_surface);
  weight_values : LIST[2:?] OF LIST[2:?] OF REAL;
WHERE
  WR1: (SIZEOF(weight_values) = SIZEOF(SELF\B_spline_surface.control_points)) AND (SIZEOF(weight_values[1]) = SIZEOF(SELF\B_spline_surface.control_points[1]));
  WR2: positive_surface_weights(SELF);
END_ENTITY;
(*

Attribute definitions:

weight_values: the list of positive weights to be associated with the control points of the curve.

NOTE    If all the weights have value 1.0 the curve is identical to a simple non-rational B-spline surface.

Formal propositions:

WR1: The two lists of lists weight values and control points shall have the same lengths.

WR2: The weight values shall all be positive.

4.3.7 Surface_with_explicit_knots   EXPRESS-GMapping table

A Surface_with_explicit_knots is a type of B_spline_surface for which the knot values are explicitly given. This subtype shall be used to represent non-uniform B-spline surfaces and may be used for other knot types.

NOTE    The full semantics of this entity are defined in the corresponding MIM object which has an additional derived attribute and a constraint to ensure that the specified knot values are compatible with the degree and control points for the surface.

EXPRESS specification:

*)
ENTITY Surface_with_explicit_knots
  SUBTYPE OF (B_spline_surface);
  u_knot_multiplicities : LIST[2:?] OF INTEGER;
  u_knot_values : LIST[2:?] OF parameter_value;
  v_knot_multiplicities : LIST[2:?] OF INTEGER;
  v_knot_values : LIST[2:?] OF parameter_value;
WHERE
  WR1: SIZEOF(u_knot_multiplicities) = SIZEOF(u_knot_values);
  WR2: SIZEOF(v_knot_multiplicities) = SIZEOF(v_knot_values);
END_ENTITY;
(*

Attribute definitions:

u_knot_multiplicities: the list of multiplicities for the u_knot_values, these are in the first parametric direction for the surface.

u_knot_values: the list of knot values used to define the B-spline basis functions in the first parametric direction of the surface.

v_knot_multiplicities: the list of multiplicities for the v_knot_values, these are in the second parametric direction for the surface.

v_knot_values: the list of knot values used to define the B-spline basis functions in the second parametric direction of the surface.

Formal propositions:

WR1: The two lists of knot values and knot multiplicities in the u parameter direction shall have the same length.

WR2: The two lists of knot values and knot multiplicities in the v parameter direction shall have the same length.

4.3.8 Surface_with_implicit_knots   EXPRESS-GMapping table

A Surface_with_implicit_knots is a type of B_spline_surface for which the knot values are implicitly given. The precise specification of the knots depends upon the value of knot_type. There are two knot sets for a surface and the precise values depend also on the degree of the surface in each parametric direction.

NOTE    This entity is mapped to one of 3 distinct MIM entities depending upon the value of knot_type.

EXPRESS specification:

*)
ENTITY Surface_with_implicit_knots
  SUBTYPE OF (B_spline_surface);
  knot_type : knot_specification;
END_ENTITY;
(*

Attribute definitions:

knot_type: the type of configuration for the implicit sets of knots and multiplicities. These are described in knot_specification.

4.4 ARM function definitions

This subclause specifies the ARM functions for this module. The ARM functions and definitions are specified below.

4.4.1 positive_curve_weights

The function positive_curve_weights checks all the weight vaues assigned to a Rational_b_spline_curve and returns false if any value is negative.

EXPRESS specification:

*)
FUNCTION positive_curve_weights (bsc : Rational_b_spline_curve) :BOOLEAN;
LOCAL
     result : BOOLEAN := TRUE;
   END_LOCAL;

   REPEAT i := 1 TO SIZEOF(bsc.weight_values);
     IF bsc.weight_values[i] <= 0.0  THEN
       result := FALSE;
       RETURN(result);
     END_IF;
   END_REPEAT;
   RETURN(result);
END_FUNCTION;
(*

Argument definitions:

bsc: (Input) The Rational_b_spline_curve for which the weights are to be validated.

4.4.2 positive_surface_weights

The function positive_surface_weights checks all the weight vaues assigned to a Rational_b_spline_surface and returns false if any value is negative.

EXPRESS specification:

*)
FUNCTION positive_surface_weights (bss : Rational_b_spline_surface) :BOOLEAN;
LOCAL
     result        : BOOLEAN := TRUE;
   END_LOCAL;
   
   REPEAT i := 1 TO SIZEOF(bss.weight_values);
     REPEAT j := 0 TO SIZEOF(bss.weight_values[1]);
       IF (bss.weight_values[i][j] <= 0.0)  THEN
         result := FALSE;
         RETURN(result);
       END_IF;
     END_REPEAT;
   END_REPEAT;
   RETURN(result);
END_FUNCTION;
(*

Argument definitions:

bss: (Input) The Rational_b_spline_surface for which the weights are to be validated.



*)
END_SCHEMA;  -- B_spline_geometry_arm
(*


© ISO 2011 — All rights reserved