# Curves and surfaces in computer aided geometric design - Yamaguchi F.

**Download**(direct link)

**:**

**47**> 48 49 50 51 52 53 .. 90 >> Next

Next, consider the polygon shape in Fig. 5.4(c). Points Qx and Q2 are on extensions of Q0S and Q3S, not far from S. In this case, the center of curvature at the starting point is on the opposite side of line 6061 as Qz- The center of curvature at the end point is on the opposite side of line Q2Q3 as Q0, and the curve segment has two inflection points. If Q^ and Q2 are removed farther from point S than in Fig. 5.4(c), the situation in Fig. 5.4(d) is obtained, with the curve having a cusp. If they are removed still farther, the curve has a loop, as in Fig. 5.4(e). This is easy to understand if we compare with the case of a Ferguson curve (refer to Sect. 3.2.1). Since the tangent vectors at the ends of a Bezier curve segment are given by Eqs. (5.14), as Qi ~ Qo and 63 — Qi become larger, when a certain relationship holds a cusp develops in the curve. If the magnitude of the tangent vectors becomes still larger, the curve develops a loop.

Let us find the condition for a cubic Bezier curve segment to have a-cusp, following the same method as in Sect. 3.2.1. Letting:

Qi-Qo = m(S~Qo) Qi Q2 = n (63 _ S)

the derivative of the Bezier curve segment is, from Eq. (5.12):

Ã Qo 1

P(t) = [3t2 21 1 0] MB

(5.18)

5 1 Curves

175

Fig. 5.4. Cubic Bezier curve segments

Since the shape of a Bezier curve segment is invariant under coordinate transformation, let us take the origin at Q0 and the positive x-axis in the

Q0 = [0 0], S=[SxSy-], Q3 = [C 0] Then (5.18) becomes:

P(t) = 3[t2 t 1]

Ã-1 ç -3 1-

2-420 110 0

have:

0 0

mSx mSy

nSx + {l-n)C nSy

Ñ 0

= 3[f2 t 1]

- 3(m-n)Sx + {3n-2)C 3(m-n)Sy'

2(n — 2m)Sx + 2(l — n)C 2(n — 2m)Sy mSx mSv

5. The Bernstein Approximation (5.19)

To find the cusp, set P(t) = 0. Then:

[:3{m-n)t2 + 2{n-2m)t + m']Sx + [{3n-2)t2 + 2(l-n)t]C = 0 [3 (m — n) t2 + 2 (n — 2 m) t + m] Sy = 0

Solving these equations gives:

(5.20)

(5.21)

When m and n have values that satisfy Eq. (5.21), the cubic Bezier curve segment has a cusp and the parameter has the value:

2 (rc — 1)

3n — 2 '

If we take m = n, when m = n = 2 the cusp occurs at t = % (Fig. 5.4(d)). A loop occurs in the curve when:

m-y) ("×Í-

(5.22)

(5.23)

Representation of a Straight Line

Let us modify a cubic Bezier curve segment as follows:

P{t) = {l-t?QQ + 3t{l-t)2Q, + 3t2{l-t)Q2 + t3Q,

= (áç — Qo + 3 Qi — 3 Q2) t3 + 3 (Q0 — 2 Qx + Q2) t2 + 3 {Qi —Qo)t+Qo-

(5.24)

The condition for the t3 and t2 terms to vanish is:

áç-áî + 3á1-3á2 = 0 (5.25)

áî-2 Qi + Q2 = 0. (5.26)

Using Eq. (5.26), (5.25) becomes:

0i ~2Q2 + Q3 = 0. (5.27)

Equations (5.26) and (5.27) are also the conditions for the 2nd derivative

vector to be 0 at the start and end points of the curve (refer to Eq. (5.15)).

From Eqs. (5.26) and (5.27) we have:

5.1 Curves

177

2 Qo + 6ç

3

Substituting these relations into Eq. (5.24), the Bezier curve segment becomes:

so that the curve degenerates to the line segment joining Q0 and Q5 (Fig. 5.5). Approximate Representation of a Circle

Consider an approximate representation of the first quadrant of a circle of unit radius by a cubic Bezier curve segment (Fig. 5.6).

If we specify the condition that at t = \ the curve passes through the point

P(t) = (\~t)Q0 + tQ3

(1Ä/2, 1/1/2):

={ V 0]+{ [14+1 ¹ 1]+Y [0 1] =

\/2 )/2

then, solving the above equation, we have:

(5.28)

Q i

Q2

<Ýç

Qi=Qo+-^ (Q3-Q0) Q2=Qo+^~CQz-Qo)

Fig. 5.5. Expression of a line segment as Bezier curve segment

y,

Q,= [0 11 Q2'-[k 1]

0

Fig. 5.6. Approximate expression of a ^-circle by a Bezier curve segment

178

5. The Bernstein Approximation

Qon — Qo+tsCQi ~ Qo) Q[I',=Q1+ts(Q2~Qi)

Q\u=Q2+ts(Q3-Q2')

QP=Ql" + t -QI") Ql?=Q\" + tt(Qy-Q\") Q^=QP+ts(.Q?:-QF)

Fig. 5.7. Graphical method of determining a point on a curve corresponding to t = ts

In this case, the maximum deviation from a true circle is +0.027% (refer to Table 3.2).

Let the points on the 3 sides of the curve defining polygon which divide those sides in the ratio ts: 1 — ts be Q\f \ 0[/] and Ql2] (Fig. 5.7):

Next, let Q1q] and Q\2] be 2 points on sides of the polygon Ql0u, Q[1], Q[21] that divide those sides in the ratio ts: 1 — ts:

eE,2I=(i-oes,'1+fse[1ii=(i-(s)2e0+2(i-/j(se1+r52e21 e[l2l=(i-(s)e[i1,+tse^=(i-(,)2e1+2(i-(>)«,e2+ts2e3 J'

Finally, let Q1q] be the point on the line segment Q[q\ Q[2] that divide that line segment in the ratio ts: 1 — ts:

Qlo3] = (^ts)Q[2] + tsQ[2]- (5.31)

Substituting relations (5.30) into (5.31) gives:

&3,=(i-o3&+3(i-o4ei+3<i-(s)(s2e2+ts3e3

Determination of a Point on a Curve

(5.29)

= P{Q

(5.32)

5.1 Curves

which is the point on the curve at which t = ts. The point on the curve where t = ts can be found graphically by performing the following process: divide each side of the given polygon in the ratio of ts: 1 — ts. Connect the generated points and make a new polygon. Repeat the above process for the new polygon until the polygon becomes a line segment. Divide the line segment in the ratio ts: 1 — ts. Then the generated point is what we want to find.

**47**> 48 49 50 51 52 53 .. 90 >> Next