How Do Knots Influence a B-Spline Curve?

  • Context: Graduate 
  • Thread starter Thread starter Danh860
  • Start date Start date
Click For Summary

Discussion Overview

The discussion revolves around the influence of knots on B-spline curves, particularly in the context of ensuring specific continuity conditions at control points. Participants explore the implications of knot sequences and polynomial degrees on the shape and properties of the resulting curves.

Discussion Character

  • Technical explanation
  • Conceptual clarification
  • Debate/contested

Main Points Raised

  • One participant, Dan, seeks advice on how knots influence B-spline curves and requests suggestions for knot sequences and curve degrees to achieve specific continuity at a control point.
  • Another participant suggests that cubic polynomials are commonly used in applications involving B-splines.
  • A different participant recommends using a sequence of spline segments instead of a single high-order spline, emphasizing the importance of control points for defining tangents and continuity.
  • Another response reiterates the preference for cubic polynomials and discusses maintaining continuity between spline segments, specifically ensuring that tangents at certain points are equal.
  • One participant expresses uncertainty regarding NURBS, indicating a lack of recent experience with the topic.

Areas of Agreement / Disagreement

There is a general agreement on the use of cubic polynomials, but participants present differing views on the approach to continuity and the use of spline segments versus high-order splines. The discussion remains unresolved regarding the best knot sequence and degree of curve for Dan's specific requirements.

Contextual Notes

Participants mention the need for C[1] continuity and the influence of control points on tangents and curvature, but do not provide a definitive method or formula for achieving these conditions. There are also references to varying levels of confidence in the suggestions made, particularly concerning NURBS.

Danh860
Messages
1
Reaction score
0
Hi,

I am working on a a project that involves the use of B-splines. Using the information from this informative http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/B-spline/bspline-curve-prop.html" I have managed to write up a simple script in VBA that allows me to construct the basis functions for a given sequence of knots and then apply this to a set of control points.

Whilst the code works and I can generate splines, I still don't have a full understanding as to how the knots influence the curve - Ultimately, I need the curve to pass through a specific control point (e.g P[k]) and be influenced by a couple of control points before and after P[k]. Additionally, the curve needs to be at least C[1] continuous at this particular control point.

Can anyone suggest the knot sequence and degree of curve that I should be using?

Many thanks,
Dan
 
Last edited by a moderator:
Mathematics news on Phys.org
In most applications cubic polynomials are used.
 
You would be better using a sequence of spline segments, not one high-order spline.

The end points of each segment lie on the curve. The second and second-to-last control points of each segment define the tangent direction at the end of the curve, so you can get continuity slope by constraining those control points to lie on a straight line (i.e. the tangent line to the curve), and you can control the continuity of curvature by constraining the distance of those control points from the end points.

For many applications cubic spline segments (constraining the slopes but not worrying about the curvature) is a practical method, but you can use higher order segments, and/or different orders in different segments, if you want to.
 
Like mathman said, you're better of using cubic polynomials.

What you can do is use cubic polynomials and maintain the correct continuity for joining splines. From memory you automatically have C0 continuity, but you want to maintain higher continuity between splines: to do this you want the tangent between points 2 and 3 (point 0 being the first point) and 3 and 4 have the same value. That is tangent(2,3) = tangent(3,4).

Its been a while since I've looked at NURBS though, so I'm not confident I can help you there.
 

Similar threads

  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 1 ·
Replies
1
Views
12K
  • · Replies 3 ·
Replies
3
Views
6K
  • · Replies 10 ·
Replies
10
Views
18K
  • · Replies 11 ·
Replies
11
Views
6K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 39 ·
2
Replies
39
Views
5K
  • · Replies 8 ·
Replies
8
Views
4K
Replies
12
Views
2K