I’m preparing a lesson for industrial design students to better understand NURBS geometry and topology.
I’m using the contour of an iPad Pro as an example of higher continuity curvatures for a rounded rectangle, and I’d like to better understand the difference between closed periodic curves and open NURBS curves. An example below:
I created a 16 point control curve that is closed and periodic. The curve property details show the following:
Periodic NURBS curve (SubD friendly)
Start = (1419.4,140.3,0)
End = (1419.4,140.3,0)
Degree = 3
Control points: non-rational, count = 19 (3 duplicates)
Knots: uniform (delta=77.8875), domain 0 to 1246.2
First question – Duplicate control points for periodic curves
I understand from Rajaa Issa’s Essential Mathematics for Computational Design that periodic closed curves only use single knots, not double or full multiplicity knots as is the case for open NURBS curves that are clamped at the start and end with full multiplicity knots. Additionally, I understand the rule for closed periodic curves is : number of input control points + curve degree = the total number of control points required. In my example above, this creates 3 duplicate control points (16 input + 3 = 19).
I can only observe that there is a total of 19 control points by viewing the properties detail of the curve copied above. However, I cannot access or control these three duplicates in the Rhino environment. When I select the curve and then execute SelPts, it only captures 16 points.
I venture a guess that the duplicate control points are topologically required to represent a continuous and smooth closed periodic curve because the start and end points coincide. Therefore, the coincident start and end control points need additional control points to maintain the degree 3 curvature? And these duplicate points operate in NURBS evaluation rule, but cannot be manipulated?
Second question – “Parameter is outside the curve domain, results may be unpredictable”.
I’ve used Grasshopper to list and visualize the knots using the Control Points and Evaluate Curve components. When I plug the knots output into the parameter input on the Evaluate Curve component, it reports the error “Parameter is outside the curve domain, results may be unpredictable”. Is this because the duplicated control points extend the knot vector beyond the curve domain? I noticed that the knot values begin with negative numbers.
I was able to understand the knot locations by baking the points output of the Eval Curve. 2 knots appear coincident where I had started and ended the closed periodic curve.
Last question – Is it possible to create this curve example with fewer than 16 input control points?
I spent time exploring the simplest curve topology required to trace the contour of an iPad Pro. I got acceptably close using 16 input control points and adjusting the control point weights. I could not get close enough using only 12 input control points. For clarity, I recognize that I’m working from imprecise material to trace the contour by using a scanned image of the iPad Pro. I adjusted the distorted scan image imported into Rhino so edges are relatively square again. It’s just enough to show the difference between a conic curve created with a fillet versus the higher continuity of Apple’s rounded corners.
Great thanks to anyone in advance that can make the time to answer any of my questions.
Lastly, where credit is due, I am indebted and grateful to Giancarlo di Marco’s book, Simplifying Complexity, as well as Rajaa Issa’s Essential Mathematics for Computational Design to learn more deeply about NURBS geometry and topology, as well as how deeper understanding benefits smoother workflows in design practice.