0. Introduction
In the fields of multivariable calculus and differential geometry, the concept of βarc length parameterizationβ is extremely important. However, for many people, it may seem obscure and difficult to understand at first.
For example, in do Carmoβs Differential Geometry of Curves and Surfaces (Section 1.5), the definition of curvature is closely related to arc length:
Let be a curve parameterized by arc length . The number is called the curvature of at .
Similarly, in George Thomasβs Thomas Calculus (Section 13.3), arc length is used as a parameter to describe a curve:
β¦ each value of determines a point on , and this way of describing using is what we call an arc length parameter for the curve.
Although this concept may seem complex at first, it is crucial for designing and understanding complex curves and shapes. I will attempt to explain this fascinating concept in a more vivid way using Rhino & Grasshopper.
π1. Prerequisites
To better understand arc length parameterization, we need to review some basic mathematical knowledge:
1.1. Vector-Valued Functions
πDefinition 1: A vector-valued function is simply a function whose domain is a set of real numbers and whose range is a set of vectors. This means that for every number in the domain of there is a unique vector in denoted by . If and are the components of the vector , then , and are real-valued functions called the component functions of and we can write
In simple terms, the distinctive feature of vector-valued functions is:
- Input is a number
- Output is a vector (three numbers)
πExample 1: The simplest vector-valued function is:
In Grasshopper, we can use the βπConstruct Pointβ component to represent this. Therefore, when , we have .
NoteIn mathematics, vectors and points are different concepts. For simplicity, I will not strictly distinguish between them.
πExample 2: Letβs look at a slightly more complex example: a helix can be expressed using a vector-valued function.
(Β©οΈThomasβ Calculus)
Similarly, it can be expressed in the system of linear equations:
We can use the βπConstruct Pointβ component to represent this curve. Here, we can appreciate that when the output is a 3-vector, it is given a geometric meaning. I just need to give a single value to this function, and it will give me a point in space!πWhen we give a sufficiently dense set of values, these points form a smooth curve.
1.2. Arc Length
The arc length not only represents the length of an βarcβ but also the total length of a curve.
πDefinition 2: The arc length of a plane curve with parametric equations, as the limit of lengths of approximating polygonal paths and, for the case where and are continuous, we arrived at the formula
If you have forgotten calculus and partial derivatives, donβt worry. The essence of this formula is that the total length of a curve can be obtained by dividing the curve into small segments and summing the lengths of each segment. When our division is infinitely fine, the result of this summation is the total length of the curve.
As shown in the figure, the blue curve is the curve we want to measure, and the red curve is the polygonal path used to approximate the blue curve.

(Β©οΈThomasβ Calculus)
We can use a Grasshopper example to understand this. When our division is finer, the two curvesβ lengths are closer.
At this point, we can use trigonometric function to calculate the distance between two very close points:
2. What is Arc Length Parameterization?
After the above preparation, we finally need to discuss the essence of arc length parameterizationπ. From do Carmoβs Differential Geometry of Curves and Surfaces (Section 1.5), we know that:
Let be a curve parameterized by arc length . The number is called the curvature of at .
So, what is βarc length parameterizationβ, and what is βparameterized by arc lengthβ?
Letβs review the helix example. The points on the helix are expressed as:
Or:
Notice that? All these expressions are with input . The is given, which belongs to the interval , i.e., .
Remark
This is also the βπDomainβ in Grasshopper.
Letβs try to use to express the points on the curve. Suppose the input is , we then write: . In rigorous mathematical language, this is
A smooth curve parametrized by .
Therefore, when we talk about βarc length parameterizationβ and βparameterized by arc lengthβ, we are actually talking about ==replacing the input from to !==
That is, as long as we can find the relationship between and , we can re-interpret the curve using ! So, what can be used to establish the relationship between and ? The answer is arc length!π‘
The arc length of is:
Therefore, we can swap and :
Then, substituting into , we get the equation of the curve expressed using . This process is so-called βarc length parameterizationβ, and this curve is βparameterized by arc lengthβ.
3. Verify in Grasshopper
Now, letβs apply these theories to Grasshopper for practical operation. I drew a helix in Rhino, as shown below.
3.1. Curve Domain
First, we need to define the domain of the curve:
Here, we need to think about whether the interval is we need. This interval is the definition domain of a Rhino.Geometry.Curve, but it may not be what we expect.
Letβs review the helix formula:
Actually, its more general form is:
Here,
- controls the rotation radius of the helix, and
- controls the βhow compressedβ in the direction. At the same time, we see that is the parameter of the trigonometric function, therefore using radian as may be a good choiceβοΈ. By observing how many turns this curve makes, we find that it has 10 turns! So, the interval of is:
We can use the βπRemapβ component to map the from mathematical space to the domain of Rhino.Geometry.Curve.
3.2. Curve Formula
Our objectiveπ― is to figure out the values of and .
3.2.1. Calculate b
The value of is easy to calculate. The simplest method is to take . When , the point has rotated 10 times and has reached the end of the interval. So, is:
i.e., the end of the interval, also the end of the curve. We can simply get the value of :
Thus, we can get:
3.2.2. Calculate a
We can take any value , for example :
At this time, and are:
Squaring both sides, we get:
Because , we know that .
Rearranging, we get the formula for the helix. Now, letβs plug in the values of and :
The results show that the distance between the points obtained through mathematical reasoning and those calculated by Rhino is within an acceptable tolerance.
3.3. Reparameterization from t to Arc Length s
Next, letβs reparameterize the curve:
First, we use the following formula to calculate the arc length and establish the relationship between and :
Substituting the formula, we get:
That is, the relationship between and is:
So, if we express the helix curve using , it will be:
We can also verify this using Grasshopper. The difference between the curve constructed using mathematical expressions and the curve calculated using βπEvaluate Lengthβ is very small.
Remark
Here, the error is larger than before because it involves a lot of root calculations. For whom is interested can further research numerical analysis.
4.Conclusion
The example below is parameterized by :
While the example below is parameterized by arc length :
Through this detailed discussion and practice, we not only deepened our understanding of arc length parameterization but also implemented this concept in Grasshopper. This understanding and application provide us with powerful tools and perspectives for complex geometric modeling and problem-solving. I hope this article can help you apply these concepts in your own projects!