Fix parameter_range() for non-clamped B-splines
#105
+12
−6
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The valid parameter domain for a B-spline is [knot[degree], knot[n_cv]], not [knot[0], knot[n-1]].
For example, a uniform cubic B-spline with 4 control points has knot vector [0,1,2,3,4,5,6,7]. The existing code returned [0,7] but the correct valid domain is [3,4] - only the center 1/9th of the parameter space.
Discovered because: this caused tessellation to generate geometry in the "phantom" outer regions, leading to overlapping patches when rendering STEP files with uniform B-spline surfaces.
See two images below, this is a STEP viewer I'm working on that uses
truckfor reading/tessellation.