Proceedings of ICAR 2003 The 11th International Conference on Advanced Robotics Coimbra, Portugal, June 30 - July 3, 2003
On the generation of a trigonometric interpolating curve in R3 Rui C. Rodrigues
F. Silva Leite
Departamento de F´ısica e Matem´atica Departamento de Matem´atica Instituto Superior de Engenharia de Coimbra Universidade de Coimbra
[email protected] [email protected] Silv´ erio Rosa Departamento de Matem´atica Universidade da Beira Interior
[email protected] Abstract The problem of generating smooth trajectories of mechanical systems is particularly important in robotics. Traditionally, cubic splines are the most used for pathplanning of mobile robots moving in a two-dimensional environment. Although these curves are easy to compute, in practice they have some disadvantages over other interpolating curves. In this paper we introduce a class of new splines whose segments are composed by convex combination of circular arcs and straight lines. One particular feature of such interpolating curve relies on the fact that the calculation of each segment depends only on local data. This is an important advantage from a practical point of view. We also study optimality properties in order to make a comparison with cubic splines.
1
Introduction
The problem of constructing curves which interpolate a given set of data at discrete points and boundary conditions is considered. We follow an idea of Nagy [3] to construct curves in the plane by piecing together segments which are convex combinations of circular arcs and straight line segments. Although the framework can be generalized to Rn , n > 3, having in mind applications to path-planning of vehicles moving in the 2-dimensional space, we consider mainly plane curves and require that they are C 2 - smooth. The explicit formulas involve trigonometric functions which justifies the name given to these interpolating curves. Classical interpolating and smoothing cubic splines suffer from the deficit that a change in a single data point requires the recalculation of the entire spline function. This can be a severe drawback when implementing real trajectory planning under the presence
1629
of unpredictable changes, like the appearance of sudden obstacles. Trigonometric splines overcome this perceived difficulty for they have the property that each of its spline segments depends only on the data in its neighborhood. Another interesting feature of these trigonometric splines is the fact that the proposed construction also works when directions at the interpolating points are also prescribed. This is also an important issue in trajectory planning of vehicles moving in a real environment, like going through a narrow passage. Optimality properties are also discussed. The construction presented here can be seen as a counterpart for trigonometric splines in Rn of a well known geometric algorithm to produce cubic splines known as the De Casteljau algorithm (see [2] for details). One further achievement would be the generalization of the proposed construction to non-Euclidean spaces, in the same way as was done in [5] for polynomial splines. This appears to be a major step that will be part of our future goals.
2
Background
For the sake of completeness we start with a short review about the basics of space rotations. 2.1 Rotations in R3 If eb = (e1 , e2 , e3 ) is a unit vector in R3 , one can define the skew-symmetric matrix
E=
0 e3 −e2
−e3 0 e1
e2 −e1 0
which satisfies E ~x = eb × ~x, for every vector ~x. For θ ∈ R, the matrix R ≡ R(b e, θ) = e θE , applied to any
vector ~u in R3 , geometrically defines an instantaneous rotation of vector ~u about the axis eb by the angle θ. It is easy to check that the matrix R = e θE is an orthogonal matrix with det(R) = 1. The set of all orthogonal matrices with determinant equal to one is a Lie group which is denoted by SO(3) (special orthogonal group). A classic result indicates that any matrix of SO(3) is equivalent to a rotation about a fixed axis eb (kb ek = 1) through an angle θ ∈ [0, 2π[. This is the reason why the elements of SO(3) are called rotations matrices. It is also known that for any matrix R ∈ SO(3) there exists a skew-symmetric matrix E and θ ∈ R such that R = e θE . The effect of the rotation R = e θE on a vector ~u can also be achieved if we choose the orthogonal matrix R1 = e θ1 E1 where E1 = E > (which means eb1 = −b e) and θ1 = 2π − θ. R and R1 perform the desired rotation with opposite directions. The components of θ eb are called exponential coordinates of the matrix R. It is not difficult to show that e θE can be given as a linear combination of matrices I, E and E 2 . Since E is a skew-symmetric matrix associated with the vector eb, one can deduce that E 3 = −E and find, after some simple calculations, the following formula e θE = I + sin (θ) E + (1 − cos (θ)) E 2 ,
(1)
known as Rodrigues’s formula. Finally, we show that if one knows how to do a rotation by an angle θ ∈ [0, 2π[ around axis ~k = (0, 0, 1) then, by a suitable change of coordinate frame, any rotation by the angle θ about an arbitrary axis eb, can be defined. Consider the matrix
cos θ R = sin θ 0
− sin θ cos θ 0
0 0 1
.
R is clearly an orthogonal matrix with det(R) = 1. R is therefore a rotation matrix and it is not difficult to observe that R geometrically defines an instantaneous rotation (in the positive direction) by an angle θ, around axis ~k. In fact, R is the matrix representation, with respect to the canonical basis of R3 , of the linear transformation T that performs the vector rotation around ~k. Choosing the skew-symmetric matrix −1 0 0 A = E21 − E12 = 0 0 1 0 0 0 one also gets e θA = R. Now, suppose that we have three distinct points of R3 m, p1 and p2 , vectors ~v1 = p1 − m and ~v2 = p2 − m, and want to rotate a vector ~v ∈ span{~v1 , ~v2 } by an angle θ ∈ [0, 2π[ on the plane defined by ~v1 and ~v2 . To accomplish the desired rotation one simply needs to find the matrix representation of T in a new orthonormal basis {b u1 , u b2 , u b3 }
1630
generated by applying Gram-Schmidt procedure to basis {~v1 , ~v2 , ~v1 × ~v2 } or basis {~v2 , ~v1 , ~v2 × ~v1 }. The matrix responsible for this change of basis is given by Q = [b u1 u b2 u b3 ] and the new matrix representa> tion is simply Q e θA Q> or e θ(Q A Q ) . Since Q is orthogonal and A is skew-symmetric then Q A Q> is skew-symmetric. We get as expected e θE with E = Q A Q> . This approach is necessary in order to define a vector rotation in Euclidean spaces of higher dimension. Remark 1. The same result is achieved if matrix E is calculated directly, that is, using a unitary vector orthogonal to ~v1 and ~v2 , whose direction is given by the cross-product ~v1 × ~v2 . 2.2 Construction of a circular arc in R3 Consider the unique circle whose center is the point m ∈ R3 and which passes through points p1 and p2 of R3 with p1 6= p2 . Next, we define a curve x(t), t ∈ [0, 1], that describes the circular arc, with minimum length, that starts at point p1 and ends at point p2 . ~b Let ~a = p1 − m, ~b = p2 − m, eb = k~~aa× and θ ∈ ]0, π] ×~bk be the angle between vectors ~a and ~b. Notice that if ~a and ~b are not linearly independent vectors (case where m is the the middle point of the straight line segment between points p1 and p2 ) then eb can be chosen arbitrarily among all unitary vectors orthogonal either to ~a or to ~b. Using the previous section it is now clear that the curve x(t) is given by x(t) = m + e t θE ~a ,
(2)
where t ∈ [0, 1] and E is the skew-symmetric matrix associated with vector eb, i.e., such that E ~x = eb × ~x for every vector ~x. Another curve that describes a circular arc (without minimal length) that starts at p1 and ends at p2 can also be defined by equation (2), just by using eb1 = −b e has the new rotation axis and θ1 = 2π − θ instead of θ. If ~a and ~b are linearly independent vectors then the curve (2) can also be described by the following equation x(t) = m +
sin (t θ) ~ sin ((1 − t) θ) b+ ~a . sin (θ) sin (θ)
(3)
Using formula (1) we have e t θE ~a = ~a + sin (t θ) E ~a + (1 − cos (t θ)) E 2 ~a = ~a + sin (t θ) (b e × ~a) + (1 − cos (t θ)) (b e × (b e × ~a)) =
sin (t θ) (b e × ~a) + cos (t θ) ~a .
Thus x(t) = m + sin (t θ) (b e × ~a) + cos (t θ) ~a . Therefore, for t = 1, ~b = sin (θ) (b e ×~a)+cos (θ) ~a, from which we get eb × ~a =
1 ~ sin (θ) b
−
cos (θ) sin (θ)
~a .
Finally, x(t)
= m+ −
sin (t θ) ~ sin (θ) b
+ cos (t θ) ~a
sin (t θ) cos (θ) sin (θ)
= m+
sin (t θ) ~ sin (θ) b
+
mL = q0 + λ1 (~e × ~u0 ) = q1 + λ2 (~e × ~u1 )
~a sin ((1−t) θ) sin (θ)
where λ1 and λ2 have to be found. To find the angle of rotation θL ∈ ]0, 2π[ we have to compute the following angles
~a .
For more details see [1] and [4].
3
β1 β2 β3
Generation of a spline curve in R3
In the following we describe a spline curve S : [t1 , tm ] ⊂ R → R3 that satisfies S(ti ) = pi where t1 < t2 < · · · < tm is a partition of the time interval [t1 , tm ] and p1 , . . . , pm are given distinct points of R3 . Each spline segment is given by a convex combination of circular arcs or line segments. The spline curve is, as usual, obtained by joining together the resulting m − 1 segments. In the present situation, each segment depends only on the data in its neighborhood. From a practical point of view this is a very good property. In order to simplify the calculation of the spline segment Si (t), t ∈ [ti , ti+1 ], we use the time interval [0, 1] instead of [ti , ti+1 ]. This procedure only requires a convenient final parametrization (see end of section 3.4). The segment Si (t), t ∈ [0, 1], connecting the points pi and pi+1 , i = 1, . . . , m − 1, is a convex combination of two components, the left component Li and the right component Ri , defined by Si (t) = (1 − φ(t)) Li (t) + φ(t) Ri (t) ,
t ∈ [0, 1].
The detailed computation of these components will be explained in sections 3.1, 3.2 and 3.3. The function φ is, for the moment, any C 1 [0, 1] function satisfying φ(0) = 0 and φ(1) = 1 (so that Si (0) = pi and Si (1) = pi+1 ). 3.1 Computation of the left component To define the left component Li , i = 2, . . . , m − 1, we use the points pi−1 , pi and pi+1 . If the points pi−1 , pi and pi+1 define a straight line (if vectors ~u0 = pi −pi−1 and ~u1 = pi+1 − pi are such that ~u0 × ~u1 = ~0) then Li is the line segment connecting pi (at t = 0) and pi+1 (at t = 1), Li (t) = (1 − t) pi + t pi+1 ,
Otherwise, Li is a circular arc joining the points pi (at t = 0) and pi+1 (at t = 1). This circular arc belongs to the circle defined by the points pi−1 , pi and pi+1 . Such a curve can be described by equation (2) once we have computed the axis of rotation (b eL ), the center of the circle (mL ) and the angle of rotation (θL ). We choose for axis of rotation the vector ebL = k~~eek where ~e = ~u0 × ~u1 . The center of the circle is given by the intersection of the straight lines s0 (t) = q0 + t (~e × ~u0 ) and s1 (t) = q1 + t (~e × ~u1 ) where q0 = pi +p2 i−1 and q1 = pi+12+pi . We get
t ∈ [0, 1] .
1631
= = =
] (pi−1 − mL , pi+1 − mL ) , ] (pi−1 − mL , pi − mL ) , ] (pi − mL , pi+1 − mL ) ,
where β1 , β2 , β3 ∈ ]0, π[. Then, if β1 + β2 = β3 is satisfied we get θL = 2π − β3 otherwise we must have θL = β 3 . Finally, we get Li (t) = mL + e t θL EL (pi − mL ) ,
t ∈ [0, 1],
where EL is the skew-symmetric matrix associated with the axis of rotation ebL . With the exception of θL = π, we can also use equation (3) to represent the circular arc. 3.2 Computation of the right component To define the right component Ri , i = 1, . . . , m − 2, we use the points pi , pi+1 and pi+2 and proceed as before. Ri will be the line segment connecting pi (at t = 0) and pi+1 (at t = 1) Ri (t) = (1 − t) pi + t pi+1 ,
t ∈ [0, 1],
if vectors ~u0 = pi+1 − pi and ~u1 = pi+2 − pi+1 are such that ~u0 × ~u1 = ~0. Otherwise, Ri will be a circular arc joining pi (at t = 0) and pi+1 (at t = 1) Ri (t) = mR + e t θR ER (pi − mR ) ,
t ∈ [0, 1].
We have ebR = k~~eek where ~e = ~u0 × ~u1 . The center mR is given by mR = q0 + λ1 (~e × ~u0 ) = q1 + λ2 (~e × ~u1 ) i+1 where q0 = pi+12+pi , q1 = pi+2 +p and λ1 , λ2 have 2 to be found. To compute θR ∈ ]0, 2π[ we have to find β1 β2 β3
= ] (pi − mR , pi+2 − mR ) , = ] (pi − mR , pi+1 − mR ) , = ] (pi+1 − mR , pi+2 − mR ) ,
where β1 , β2 , β3 ∈ ]0, π[. Then, if β1 + β3 = β2 we get θR = 2π − β2 otherwise θR = β2 . ER is the skewsymmetric matrix associated with the axis of rotation ebR .
3.3
Computation of the first left component and last right component
It is now clear that in order to define the first segment S1 (t) of the spline function, one more point of R3 is necessary to calculate L1 . The same happens to define the last segment Sm−1 (t): another point is needed to calculate Rm−1 . We can choose carefully two more points p0 and pm+1 that obviously depend of each practical application or choose appropriate boundary conditions which is more natural. In fact, two points and a direction are enough to define a unique circular arc or line segment. We concentrate on the first segment S1 (t) of the spline function. We have two points p1 and p2 and the initial velocity vector ~v1 . If vectors ~u1 = p2 − p1 and ~v1 are such that ~v1 × ~u1 = ~0 then L1 (t) is the unique line segment connecting p1 (at t = 0) to p2 (at t = 1), else, to define the circular arc (that connects points p1 at t = 0 and p2 at t = 1), we have to find the angle θL and the center mL of the circle generated by p1 , p2 and ~v1 . Notice that in the present situation m1 is allowed to be the middle point of the straight line segment connecting p1 and p2 . The axis of rotation is given by ebL , the unit vector associated with vector ~e = ~v1 × ~u1 . It is easy to see that using the angles α = ](~v1 , ~u1 ), α ∈ ]0, π[, and α1 = |α− π2 |, α1 ∈ [0, π2 [, then the angle of rotation θL ∈ ]0, 2π[, can be expressed in terms of α1 in the following way: if we have α ≤ π2 then θL = π−2 α1 otherwise we get θL = π+2 α1 . This reasoning leads to θ = 2 α though this is not always clear from a geometric analysis. Finally, we compute ~a = ~e × ~u1 1 and ~b = ~e × ~v1 , use q1 = p2 +p and find λ1 and λ2 2 such that mL = q1 + λ1 ~a = p1 + λ2 ~b. The same procedure can be applied to the calculation of Rm−1 if we have the points pm−1 and pm and the final velocity vector ~vm . To find the circular arc, we have that ebR is the unit vector associated with vector ~e = ~um × ~vm where ~um = pm − pm−1 , θR is calculated as before using α = ](~vm , ~um ), ~a = ~e ×~um , ~b = ~e ×~vm , qm = pm +p2 m−1 and mR = qm + λ1 ~a = pm + λ2 ~b with λ1 and λ2 to be found. Remark 2. Notice that the norm of the velocity vector ~v1 was not used in the computation of L1 . Only its direction was really take into account. A change in the parametrization would solve the problem. Still, such procedure must not be used. This has to do with the continuity of the first derivative of the spline function and will be clarified in the next section. This conclusion also applies to the computation of the last right component. 3.4
Comments
In short, we can say that each segment of function S has one of the following formulas:
1632
Si (t)
=
(1 − φ(t)) [(1 − t) pi + t pi+1 ] + φ(t) [(1 − t) pi + t pi+1 ] = (1 − t) pi + t pi+1 ;
Si (t)
=
(1 − φ(t)) [mL + e t θL EL (pi − mL )] + φ(t) [mR + e t θR ER (pi − mR )] .
If both circular arc coincide then Si (t) = m + e t θE (pi − m) , where m = mL = mR , θ = θL = θR and E = EL = ER ; Si (t)
=
(1 − φ(t)) [mL + e t θL EL (pi − mL )] + φ(t) [(1 − t) pi + t pi+1 ] ;
Si (t)
=
(1 − φ(t)) [(1 − t) pi + t pi+1 ] + φ(t) [mR + e t θR ER (pi − mR )] .
The spline curve S(t), t ∈ [t1 , tm ], defined as the concatenation of all segments has the following final form S(t) = Si ((t−ti )/(ti+1 −ti )) , t ∈ [ti , ti+1 ], i = 1, . . . , m − 1.
4
Properties of the spline curve
Such a spline function has some properties that are unusual to other spline function. For example, each spline segment depends only on the data in its neighborhood since only four points are used to its computation. If one wants to change a particular interpolation point then at most two segments on the left and two segments on the right have to be computed instead of computing everything from the beginning. Due to the fact that each segment is defined as a convex combination of Li and Ri with φ(0) = 0 and φ(1) = 1, it follows immediately that Si (t) ≈ Li (t) for t ≈ 0 and Si (t) ≈ Ri (t) for t ≈ 1. The smoothness of spline function S depends on the choice of function φ. Since φ is a function of class C 1 [0, 1] we show bellow that the spline has at least continuous first derivative in [t1 , tm ]. If we write Si (t) = Li (t) + φ(t) (Ri (t) − Li (t)) and use the Leibniz’s formula for the nth derivative of a product we have for each n ∈ N0 µ ¶ n d n Li X n d n−k φ d k Ri d k Li d n Si = + ( ) − . k dtn dtn d t n−k dtk dtk k=0 (4) Proposition 4.1. The resulting spline is at least of class C 1 [t1 , tm ]. Proof. By equation (4) we get ¯ µ ¶¯ ¯ t − ti d S(t) ¯¯ d Si ¯ = ¯ d t t=ti+1− d t ti+1 − ti ¯t=ti+1− =
d Ri (t = 1− ) , dt
i = 1, . . . , m − 2 and ¯ µ ¶¯ ¯ d S(t) ¯¯ d Si+1 t − ti+1 ¯ = d t ¯t=ti+1+ dt ti+2 − ti+1 ¯t=ti+1+ =
d Li+1 (t = 0+ ) , dt
i = 1, . . . , m − 2. Since the components Ri and Li+1 are defined using points pi , pi+1 and pi+2 it follows that d k Ri d k Li+1 − (t = 1 (t = 0+ ) ) = dtk dtk for k = 0, 1, 2, · · · , which gives ¯ ¯ d S(t) ¯¯ d S(t) ¯¯ = , d t ¯t=ti+1− d t ¯t=ti+1+
The following realistic example shows a trigonometric spline curve when points and directions are specified.
for all i = 1, . . . , m − 2. Remark 3. Concerning remark 2 we can now say that a change in the parametrization of L1 would propagate to the computation of S1 and affect the continuity of the first derivative of the spline function at point p2 . We now observe that if φ ∈ C 2 [0, 1] and dd φt (t = 1− ) = dφ + d t (t = 0 ) = 0 then the spline function has at least continuous second derivative. Remark 4. If we choose φ(t) = t then the resulting spline function is C 1 [t1 , tm ] and Si (t) = (1 − t) Li (t) + t Ri (t) , t ∈ [0, 1]. ¡ ¢ If instead we choose φ(t) = sin2 π2 t then the resulting spline function is C 2 [t1 , tm ] and leads to ¡ ¢ ¡ ¢ Si (t) = cos2 π2 t Li (t) + sin2 π2 t Ri (t) , which we call trigonometric spline. 4.1 A new algorithm The calculations of the first left component and last right component gives an idea of how to use the spline function S to solve the problem when directions at the interpolating points are also prescribed. Nevertheless, this new algorithm compromises the resulting smoothness of spline function S.
5
6
Optimal behavior
It is well known that the cubic spline minimizes average acceleration among the C 2 curves that interpolate a given set of points and have prescribed initial and final velocity. So, at this point it would be important to find a global optimal behavior for the trigonometric spline. However, this appears to be a difficult task. Nevertheless, we have found some interesting properties. First of all we can say that for all t ∈ [0, 1], every Si is such that φ
d Si d φ dφ d d Li − Si = − Li + φ2 (Ri − Li ) + φ . dt dt dt dt dt
If Si is a straight line segment (the two components Li and Ri represent the same straight line) the spline segment satisfies the differential equation
Examples
¨ = 0, x
An example (on the plane) of the trigonometric spline ¡ ¢ curve (we have chosen φ(t) = sin2 π2 t which guarantees that the resulting curve is C 2 - smooth) is presented in the following. The arrows which are pictured in cyan indicate the starting and ending directions. The spline curve appears in black, the left component is pictured in blue while green is used for the right component.
t ∈ [0, 1] .
When the spline segment is a circular arc (occurs when Si (t) = Li (t) = Ri (t) = m + e t θE (pi − m)) it satisfies the following simple differential equation d 3x dx + θ2 = 0, dt3 dt
t ∈ [0, 1] .
Indeed, d Si = θE e t θE (pi − m) = θE (Si (t) − m), dt
1633
(5)
which indicates that
Using equations (7) in the preceding formula for k = 4 we get µ ¶ d 4 Si d 2 Li d Li 2 = −(θ ) (1 − t) − 4 L dt4 dt2 dt
k
d Si = θ k E k (Si (t) − m) dtk for all k ∈ N. Since E 3 = −E we get for k = 3 d 3 Si dt3
=
θ 3 E 3 (Si (t) − m)
=
−θ 3 E (Si (t) − m)
µ 2 ¶ d Ri d Ri −(θR )2 t + 4 . dt2 dt
d Si dt as we stated. Equation (5) also includes the case when Si is a straight line segment since this correspondes to θ = 0 (remember that θ = 2 α where α = ](~vi , ~ui ) with ui = pi+1 − pi ). If we differentiate equation (5) we get the differential equation −θ 2
=
d 4x d 2x + θ2 = 0, t ∈ [0, 1], 4 dt dt2 which can be viewed as the Euler-Lagrange Equation of the variational problem that consists in finding the extremum of the functional Z 1 ¨ i − θ 2 hx, ˙ xi ˙ dt . h¨ x, x 0
Moreover, if Si is a straight line segment or a circular arc then hS¨i , S¨i i − θ 2 hS˙i , S˙i i = 0 (6) and thus minimizes Z J(x) =
1
3
d Li d Li + (θL )2 = 0, dt3 dt
(7)
3
d Ri d Ri + (θR )2 = 0. dt3 dt We get for the derivatives of the spline segment Si (t) = (1 − t) Li (t) + t Ri (t) the following formula (equation (4) with φ(t) = t) (1 − t) +k
d 2 Si = −θ + 2 θ2 dt2 2
Thus, 2 d 4 Si 2 d Si + θ = 2 θ2 dt4 dt2
µ
¶
µ
d Ri d Li − dt dt
d Li d Ri − dt dt
¶ .
¶ .
(8)
We differentiate equation (8) two times, then use equations (7) and (8) again to get finally the differential equation d 6 Si d 4 Si d 2 Si + 2 θ2 + θ4 = 0. 6 4 dt dt dt2 The previous equation clearly indicates the following (expected) simple expression for the spline segment t ∈ [0, 1] and cj ∈ R3 .
¨ i − θ 2 hx, ˙ xi| ˙ dt . |h¨ x, x
To see that ... this is true note that from equation (5) one can get hSi , S˙i i + θ 2 hS˙i , S˙i i = 0 which can be rewritten as ddt hS¨i , S˙i i − hS¨i , S¨i i + θ 2 hS˙i , S˙i i = 0. Since hS¨i , S˙i i = 0 for both straight line segments and circular arcs, equation (6) follows. Now we discuss the case when both components represent different circular arcs and φ(t) = t. We have Li (t) = mL + e t θL EL (pi − mL ) and Ri (t) = mR + e t θR ER (pi − mR ) and by equation (5)
=
d Li d Ri −4 +4 dt dt
Si (t) = c1 +c2 t+(c3 +c4 t) cos (t θ)+(c5 +c6 t) sin (t θ) ,
0
d k Si dtk
Assuming θL = θR = θ then µ d 4 Si d 2 Li d 2 Ri 2 = −θ (1 − t) + t dt4 dt2 dt2
d k Li d k Ri d k−1 Li + t − k dtk dtk d t k−1
d k−1 Ri , d t k−1
Acknowledgments The work was supported in part by ISR, project posi/sri/41618/2001 and project erbfmrxct970137.
References [1] R. M. Murray, Z. Li and S. S. Sastry, A Mathematical Introduction to Robotic Manipulation, CRC Press, 1994. [2] G. Farin, Curves and Surfaces for CAGD, Academic Press, Third Edition, 1993. [3] M. S. Nagy and T. P. Vendel, “Generating Curves and Swept Surfaces by Blended Circles”, Computer Aided Geometric Design, Vol. 17, pp. 197206, 2000. [4] J. B. Kuipers, Quaternions and Rotation Sequences, Princeton University Press, 1999. [5] P. Crouch, G. Kun and F. Silva Leite, “The De Casteljau Algorithm on Lie Groups and Spheres”, Journal of Dynamical and Control Systems, vol. 5, n. 3, pp. 397-429, 1999.
k ∈ N.
1634