MCPcopy
hub / github.com/CadQuery/cadquery / nbCurveDer

Function nbCurveDer

cadquery/occ_impl/nurbs.py:667–729  ·  view source on GitHub ↗

NURBS book A3.2 with modifications to handle periodicity. Parameters ---------- u : Array Parameter values. order : int B-spline order. dorder : int Derivative order. knots : Array Knot vector. pts : Array Control points.

(
    u: Array, order: int, dorder: int, knots: Array, pts: Array, periodic: bool = False
)

Source from the content-addressed store, hash-verified

665
666@njit
667def nbCurveDer(
668 u: Array, order: int, dorder: int, knots: Array, pts: Array, periodic: bool = False
669) -> Array:
670 """
671 NURBS book A3.2 with modifications to handle periodicity.
672
673 Parameters
674 ----------
675 u : Array
676 Parameter values.
677 order : int
678 B-spline order.
679 dorder : int
680 Derivative order.
681 knots : Array
682 Knot vector.
683 pts : Array
684 Control points.
685 periodic : bool, optional
686 Periodicity flag. The default is False.
687
688
689 Returns
690 -------
691 Array
692 Curve values and derivatives.
693
694 """
695 # number of control points
696 nb = pts.shape[0]
697
698 # handle periodicity
699 u_, knots_ext, minspan, maxspan, deltaspan = _preprocess(u, order, knots, periodic)
700
701 # number of param values
702 nu = np.size(u)
703
704 # chunk size
705 n = order + 1
706
707 # temp chunk storage
708 temp = np.zeros((dorder + 1, n))
709
710 # initialize
711 out = np.zeros((nu, dorder + 1, 3))
712
713 for i in range(nu):
714 ui = u_[i]
715
716 # find span
717 span = nbFindSpan(ui, order, knots, minspan, maxspan) + deltaspan
718
719 # evaluate chunk
720 nbBasisDer(span, ui, order, dorder, knots_ext, temp)
721
722 # multiply by ctrl points
723 for j in range(order + 1):
724 for k in range(dorder + 1):

Callers 1

derMethod · 0.85

Calls 4

_preprocessFunction · 0.85
nbFindSpanFunction · 0.85
nbBasisDerFunction · 0.85
sizeMethod · 0.45

Tested by

no test coverage detected