Site Tools

Knot Multiplicity

Developer: RhinoScript
Summary: Determining curve and surface knot multiplicity.


Is there a way to mark or locate fully-multiple knots?


The number of times a knot value is duplicated is called the knot’s multiplicity. A knot value is said to be a full-multiplicity knot if it is duplicated degree many times.


The following example function demonstrates one way of determining a knot's multiplicity.

' Description:
'   Calculates the multiplicity of a knot.
' Parameters:
'   knots - an array of knot values
'   knot_index - the index of the knot to determine multiplicity
' Returns:
'   The multiplicity if successful
Function KnotMultiplicity(knots, knot_index)
  Dim knot_count, mult, index, t
  index = knot_index
  knot_count = UBound(knots)
  If (index < 0 Or index > knot_count) Then
    KnotMultiplicity = Null
    Exit Function
  End If
  t = knots(index)
  mult = 1
  Do While (index < knot_count)
    If (knots(index + 1) - t) > 1.0e-12 Then Exit Do
    index = index + 1
    mult = mult + 1
  KnotMultiplicity = mult
End Function

To see an example of this function in use, download the following script file:

developer/scriptsamples/knotmultiplicity.txt · Last modified: 2020/08/14 (external edit)