designcoding
About Table of Contents Keywords Monthly Archive
Support designcoding!

B-Spline Construction

January 25, 2024 | Algorithms
#b-spline #bezier-curve #grasshopper #parametric-curve #rhino-python #tutorial

I have been studying the Bezier-De Casteljau algorithm for several years. Last week, I finally managed to understand and implement B-Spline Construction in Rhino and Grasshopper Python code, using the Cox-De Boor algorithm. This algorithm calculates the effect of control points on a B-Spline with many control points. After this, I am not limited to the degree+1 control points. This animation shows both algorithms working together.

B-Spline Construction animation

This Rhino Python code in a Grasshopper definition can handle three tasks. The first code draws a B-Spline with given control points and knot vector and degree. The knot vector is a list of numbers that controls many aspects of the process. The second code imitates the parametric evaluation so that a single point can be located on the curve. Finally, the third code handles and Bezier-de Casteljau algorithm and locates points on the Bezier curves with cp-1 degree.

B-Spline Construction Grasshopper definition
B-Spline Construction b-spline, bezier-curve
Grasshopper definition (GH)Download
Grasshopper definition (GH)Download

Cite this post

Yazar, T. (2024, January 25). B-Spline Construction. designcoding. Retrieved August 24, 2026, from https://www.designcoding.net/b-spline-reconstruction/

Related Posts

B-Spline Decomposition

February 6, 2024

This is a short video tutorial on the B-Spline decomposition I studied earlier here. This tutorial demonstrates how to decompose a B-Spline curve into Bezier curves using Rhino. Despite the original Bezier-de Casteljau algorithm requiring degree+1 control points, Rhino allows drawing a degree-3 curve with any number of control points. By examining knot points and dividing segments appropriately, the B-Spline curve can be manually subdivided into Bezier curves. This involves placing control points, dividing segments, and connecting points in a…

Drawing a Basis Spline with Cubic Bézier Spans

May 1, 2018

I realized this method of constructing basis splines from given control points while searching for a way to teach students about basis splines. I couldn’t find an easy and visual method to create clamped basis splines by connecting simple cubic Bézier spans. It is a tough job and requires lots of complex equations. However, I suddenly realized that there is a special way of doing that. So I decided to share this with the people searching for an easy way…

Bezier Function Extractor

December 26, 2023

Today’s curve is the beautiful Bezier curve. A series of linear interpolations between the coordinates of control points describe a Bezier curve. So, I created a simple tool in Grasshopper called Bezier Function Extractor to experiment with this elegant construction. In the linear form (degree 1) the linear interpolation between 2 points (P1 and P2). The point at parameter t (0<= t <= 1); Q = tP1 + (1-t)P2. In the second degree, we need three points (P1, P2, and…

Quick Parametric Curves

July 28, 2024

Here is the shortest possible way of generating quick parametric curves in Rhino Python. So, you may change the f, g, and h functions to test any function curve. In this Python code, the list comprehension [(f(t), g(t), h(t)) for t in [t0 + i*dt for i in range(int((t1-t0)/dt)+1)]] works by first generating a list of t values from t0 to t1 with an increment of dt using the inner comprehension. The outer comprehension then iterates over these t values,…

Parametric point on a Bezier curve

February 1, 2024

In this short tutorial, I am going to show you how to locate a parametric point on a Bezier curve. This will be a third-degree cubic Bezier curve. So, I start by placing four control points. I name these points from P0 to P3. Then, I connect them by a polyline in order. I explode the polyline into the segments. The parameter of my point must be a number between 0 and 1. I will divide the segments, so I…

  • Chapters

    • Algorithms
    • Discourses
    • Fabrications
    • Studios
  • Explore

    • All Keywords
    • Table of Contents
    • Monthly Archive
    • #polyhedra
    • #rhinoceros
    • #parametric-surface
    • #folding
    • #archimedean-solid
    • #kuka-prc
    • #robot
    • #tessellation
    • #relief
    • #3d-printing
    • #linear-algebra
    • #terrain
    • #sandblasting
    • #stone
    • #animation
    • #dodecahedron
    • #icosidodecahedron
    • #truncated
    • #stellated-solid
    • #boolean
  • Search

  • Support designcoding!

  • Enjoying designcoding? Support me on Patreon to keep it growing. Thank you!

  • copyright 2026 designcoding.net | about | privacy policy | end user license agreement