Unit 4 Clipping and 3D Primitives: Structure Page No
Unit 4 Clipping and 3D Primitives: Structure Page No
4.1 INTRODUCTION
This unit introduces you to three important concepts of Computer Graphics.
Sec. 4.2 discusses the concept of clipping, which means removal of objects not
in the window frame to be plotted on a display device. This simple concept has
far reaching consequences in computer animation and especially in video
games which is a fast growing industry. Good clipping strategy is critically
important for speeding up the rendering of the current scene and hence plays a
crucial role in maximizing game’s performance and visual quality.
For surface rendering most suited and common methods are based on Bézier
and B-spline representations for simple reasons–ease of use and efficiency.
Sec. 4.4 discusses the Bézier and B-spline curves.
Objectives
After reading this unit you should be able to:
• clip 2D line segments against a rectangular clipping boundary using one
of the two line clipping algorithms–Cohen Sutherland line clipping
algorithm and Liang Barsky line clipping algorithm;
• explain how a curve and a text string is clipped against a window
boundary;
• explain the concepts used in rendering and projecting a 3D scene onto a
2D display;
• use basic techniques and methods employed in 3D object modelling and
representation, which includes
polygonal surfaces and their representation,
Bézier and B-spline curves.
65
Computer Graphics
4.2 2D CLIPPING ALGORITHMS
Clipping is an operation that eliminates invisible objects from the view
window. To understand clipping, recall that when we take a snapshot of a
scene, we adjust our aperture and focus to bring only desirable objects within
the window and the final shot is taken once the window contains only those
objects within the frame. From the point of view of mathematics, the problem
of clipping looks simple. All that we have to do is to find out the extremities of
the object and check their intersection with the window. This however is a
critical problem from the point of view of processing in computer. In gaming
industry especially, when animation at a high speed has to be shown, time
complexity of these clipping methods are crucial. You will observe that due to
this reasons in most of the clipping algorithms, intersection calculations are
avoided as far as possible. The basic idea behind these algorithms is to
maximize the performance and efficiency by deciding the visibility/partial
visibility/invisibility of an object using the minimum number of intersection
calculations. In this section you will study clipping algorithms for the
following primitive objects
• Point
• Line
• Area
• Curve
• Text
Point clipping is very simple. All you need to check is whether a point is
inside the window extremes in x- and y-directions. For line clipping several
algorithms have been introduced over the years and many refinements have
also been suggested by people in order to improve the performance of the
algorithms. One of the first algorithms that is still being used in applications is
Cohen Sutherland algorithm. It categorizes line segments into three
categories (i) trivially rejected (ii) trivially selected (iii) may be partially visible
or totally invisible. For category (i) and (ii) no intersection calculations are
required whereas category (iii) contains all those line segments that need
further processing for determining if they are partially visible or totally
invisible. For the details about point clipping and line clipping read the
following sections of the book carefully.
Read Secs. 6-5 to 6-7, Chapter 6, pages 244-250 of the book upto
Cohen Sutherland line clipping.
Recall that the rectangular window W has window boundaries parallel to the
coordinate axes and falling on the lines
x = xw min , x = xw max , y = yw min , y = yw max . The four window boundaries
are labelled in the given order by numbers 1, 2, 3, 4 . Let L be a line segment
with end points P1 = ( x 1 , y1 ), P2 = ( x 2 , y 2 ) . The algorithm proceeds as
follows.
66
1. Divide the entire plane into nine disjoint regions by extending the four Clipping and 3D Primitives
window boundaries indefinitely in both the directions
2. Assign a 4-bit long region code to each region and initialize it to be zero
(0000) for all the points. Region code helps you in identifying line
segments that can be (i) trivially rejected (Line segment AB in Fig. 1
below) (ii) trivially selected (Line segment CD) (iii) possibly partially
visible (Line segment EF). In case the line segment is neither trivially
rejected nor trivially selected, it is further processed for checking its
possible intersections with window boundaries. In this case also the
region code helps in identifying which window boundary can potentially
intersect the line segment (see Fig. 1).
Fig. 1.
3. For each end-point P in the plane, assign it a code as per the following
rule.
i) If P is to the left of the line x = xw min , first (least significant) bit is
set to 1.
ii) If P is to the right of the line x = xw max , second bit is set to 1.
iii) If P is below the line y = yw min , third bit is set to 1.
iv) If P is above the line y = yw max , fourth (most significant bit) is set
to 1.
(This way we have unique identification code for each region. For
example, if the point P is on the top right region of the window then it has
a code 1010.)
4. For each line segment L , determine the region codes-code(P1) and
code(P2) of its end points P1, P2.
5. If code(P1) = 0 and code(P2) = 0, then the line is completely visible.
Select the line and store it in the frame buffer. Else
6. Find out bitwise intersection of code(P1) and code(P2). If intersection is
a non-zero code, then line segment L is completely outside the window
and is rejected. Else there are two possibilities
i) Line may be partially visible.
ii) Line may be completely invisible.
For example, if the two endpoints are such that code(P1) = 0101
and code(P2) = 1010, then the line segment may or may not
intersect the window. See the two line segments AB and CD in
67
Computer Graphics Fig. 2 below. Both satisfy the conditions given above. However, CD
is partially visible while AB is completely invisible.
B
D
1001 1000 1010
0001 0000
0010
Fig. 2.
You may observe here that for totally or partially visible lines, algorithm works
quite efficiently. However for some invisible lines one has to calculate
intersection points with all the four window boundaries to finally decide about
its rejection. For example, consider an invisible line having one end point in
the region 0110 and the other end point in the region 1001, intersection with all
the four window boundaries has to be calculated in order to assert that the line
is invisible.
You may now test your understanding by trying the following exercises.
E1) Let W be a window having two diagonally opposite corners at (1, 1) and
(5, 4) . Trace Cohen Sutherland line clipping algorithm for the line
segment having two end points (0, 0) and (4, 5) .
68
E2) Let W be the window as given in E1). Clip a triangle with vertices Clipping and 3D Primitives
(0, 0), (4, 5) and (6, 1) against the window by tracing Cohen Sutherland
line clipping algorithm for each of the edges.
Before you apply the Liang Barsky algorithm to a particular problem, let us
recapitulate the main steps involved in Liang-Barsky algorithm.
The above constants are computed initally and will be used in most of the
computations right from deciding the visibility of the line segment to
calculating the intersection with window boundaries. Note that p1 = – p2,
still the authors of the algorithm have used them as independent
constants. This helps inter-alia in efficiently defining the loops and in
managing the intersection points with corresponding window boundary.
Fig. 3 on the next page gives you an idea of such line segments. For Line AB
and CD p1 = p2 = 0 . But in case of k = 1, q1 < 0 for AB while q1 ≥ 0 for CD.
69
Computer Graphics Hence AB is rejected when k = 1 while CD is kept for further processing. When
k takes value 2, q 2 < 0 for CD and it is rejected.
D
B
k=4
k=3
A k=1 k=2
C
Fig. 3.
Line L1 : p 1 = 0 , q 1 < 0
Line L2 : p 4 = 0 , q 4 < 0
P1 L2 P2
P2
L3
L1
P2
P1
P1
Line L3 : p 1 < 0 Line proceeds from outside to inside
for first window boundary.
p 1 > 0 Line proceeds from inside to outside
for second window boundary.
Fig. 4.
70
Clipping and 3D Primitives
u =1
P2
u1
u2
u=0
P1 u 1 > u 2 , reject line
Fig. 5.
You may now test your understanding of the algorithm by trying the following
exercise.
After attempting E3) you must have felt that the Liang-Barsky algorithm
reduces intersection calculations and is more efficient than the Cohen-
Sutherland algorithm.
As you proceed further, you would see that the methods for curve clipping and
character clipping have also been developed based on bounding rectangles.
This means for a given 2D object, you can find out the bounding rectangle with
edges parallel to the coordinate axes (parallel to the sides of clipping window).
In case the bounding rectangle does not intersect the clipping window, reject
the object. Otherwise, find out partial/ total visible objects. Intersection
calculations with the window boundary are performed for partial visible
objects, whenever essential. You may now read the following.
Read Secs. 6-9 and 6-10, Chapter 6, page 264 of the book.
You may try the following exercises before moving to the next section.
Do the exercises no. 6-10, 6-21, 6-22, Chapter 6 on pages 268-269 of the
book.
71
Computer Graphics
4.3 THREE DIMENSIONAL CONCEPTS AND
DISPLAY METHODS
Imagine yourself taking a picture by a camera. What do you normally do?
You specify a viewpoint and view direction and then set up a view window.
Once that is done you take a snap and the image of 3D scene/object is captured
in a 2D film. Basic idea behind this is projection from 3D to 2D. Projections
are broadly classified under two names (i) Parallel (ii) Perspective. When
objects are projected onto the display plane along parallel lines, we call it
parallel projection. In this case a view direction is specified and image of
points on the object are obtained by taking lines parallel to the view direction
and finding their intersection with the display plane. If you have seen an
architectural drawing of a building plan, you would have noticed that they
show three different plots, top view, front view and side view normally. This
actually is an example of a parallel projection of the building to be constructed.
On the other hand, perspective projection corresponds more closely to the way
a human eye perceives a 3D scene. A viewpoint is specified and points from
the object are projected to the view plane by considering lines emanating from
the points on the object and converging to the viewpoint. Intersections of these
converging lines with the display plane make the image of the object under
perspective projection.
72
Similarly, no two polygons can overlap leading to a common non-empty Clipping and 3D Primitives
interior (see Fig. 6(c).
Common Edge
Common
Vertex (b)
Disjoint Polygons
After reading Sec. 10-1 of the book, you would have acquired sufficient
theoretical background of how a polygonal surface is stored and rendered in
graphics. To understand and implement the ideas about the polygonal surfaces,
consider a simple example of the standard cube. The cube consists of eight
vertices (0, 0, 0), (1, 0, 0), (1, 1, 0), (0, 1, 0), (0, 0, 1), (1, 0, 1), (1, 1, 1), (0, 1, 1) .
So the vertex table is formed as shown in Table-1.
Table-1
Vertex Table
V1 0 0 0
V2 1 0 0
V3 1 1 0
V4 0 1 0
V5 0 0 1
V6 1 0 1
V7 1 1 1
V8 0 1 1
There are twelve edges in the cube. Once the vertices are labeled, we can form
the edge table as given in Table-2.
Table-2
Edge Table
E1 V1 V2
E2 V2 V3
E3 V3 V4
E4 V4 V1
E5 V5 V6
E6 V6 V7
E7 V7 V8
E8 V8 V5
E9 V2 V6
E10 V3 V7
E11 V4 V8
E12 V1 V5
73
Computer Graphics Finally, the Polygon-Surface table formed is given in Table-3.
Table-3
Polygon-Surface Table
S1 E1 E2 E3 E4
S2 E1 E9 E5 E12
S3 E2 E10 E6 E9
S4 E3 E11 E7 E10
S5 E4 E12 E8 E11
S6 E5 E12 E7 E8
E5 V8= (0,1,1)
V5 = (0,0,1) E7
E2
Fig. 7: A cube as a polygonal surface.
In many graphics packages and APIs like OpenGL, one can skip forming the
edge table and can straightaway form polygons using vertices.
Apart from polygonal surfaces, polygonal meshes are also used extensively in
3D geometric modelling. A mesh is essentially a polygonal approximation,
where the polygons are hollow, that means you only consider the boundary of
polygons and not the filled polygons. Once a polygonal mesh is formed,
different surface filling patterns within the meshes are used as per the
requirement and/or suitability of the application in which the resulting surface
is being used. You will study a little later a variety of surface primitives that
can be used for such filling applications. Triangular or quadrilateral meshes
are most common. A triangular mesh (or a triangulation) is a polygonal mesh
in which all (or almost all) the polygons are triangles. Similarly, for
quadrilateral meshes all the polygons have to be quadrilaterals.
While constructing a polygonal mesh you must again follow the rules as
described on page 72 for construction of polygonal surfaces.
It is now time to check your understanding of what you have studied above.
74
We next turn to study some of the important curve and surface generation Clipping and 3D Primitives
techniques. More precisely, we shall study Bezier and B-spline curves and
surfaces with emphasis on their properties suitable for geometric modelling.
We are giving you here another very popular iterative algorithm for generating
Bezier curves known as deCasteljau algorithm. The algorithm uses repeated
linear interpolation and works as follows:
P11 (u) P2
P1
P12 (u)
P21 (u)
P03 (u)
P01 (u)
P02 (u)
P0 P3
Fig. 8: A cube as a polygonal surface.
Do the exercise no. 10-14, 10-17, Chapter 10 on page 425 of the book.
Bezier surfaces are the natural extension of Bezier curves. There are two types
of Bezier surfaces (i) Tensor product surfaces (ii) Triangular surfaces. Let us
understand here the construction of tensor product Bézier surfaces.
75
Computer Graphics S(θ, ϕ) = r (cos θ cos ϕ, cos θ sin ϕ, sin θ) where, θ ϕ ∈ [0, π] .
Tensor product Bezier surface and composite surface: Consider the square
[0, 1] 2 = [0, 1] × [0, 1] . The tensor product Bezier surface of degree (n,m) is
defined by the map P : [0, 1]2 → R 3 given by
m n
P ( u , v) = ∑ ∑ p j,k BEZ j,m (v) BEZ k ,n (u),
j=0 k =0
where p j,k ∈ R 3 and BEZ k ,n (u ) are as defined on page 347 of the book. Points
p j,k are called control vertices or control points of the tensor product Bezier
surface and the quadrilateral mesh formed by these points is called control net
of the surface. Notice that for each fixed u the surface reduces to a Bezier
curve in v and vice versa. For example, on the boundary of the square u = 0 ,
the surface reduces to the Bezier curve
m
P(0, v) = ∑ p j,0 BEZ j,m ( v),
j=0
because BEZ k ,n (0) = 0 for k ≠ 0 and BEZ 0,n (0) = 1 . Similarly, for other three
boundaries.
In order to construct a tensor product composite Bezier surface all you need to
do is join two Bezier surfaces in such a way that the boundary curves match
identically. This will make the composite surface continuous. For higher order
smoothness notice that if the boundary curves are matching then their
derivatives (upto any order ) in the same direction will also match. So all that
you need to ensure for C1 continuity is the continuity of normal derivative.
Normal derivative of a surface at a point means the directional derivative in the
direction normal to the tangent plane. To make this point clear, let us consider
a composite Bezier surface s(u , v) defined on [0, 2] × [0, 1] with two tensor
product Bezier pieces P1 and P2 . While P1 is defined on [0, 1] × [0, 1], P2 is
defined on [1, 2] × [0,1] . Let p j,k and q j,k be the control points for P1 and P2 ,
respectively. Notice that we have defined Bezier surface only for the domain
[0, 1]2 . Therefore to define the Bezier surface corresponding to the square :
[1, 2] × [0, 1] , you need to establish a local parameterization for [1, 2] × [0, 1]
by mapping [1, 2] to [0, 1] using t = u − 1 . Then define the piece P2 using the
local parameter t as follows:
m n
P2 ( t, v) = ∑ ∑ q j,k BEZ j,m (v)BEZ k ,n (t ), t = u − 1.
j=0 k =0
76
Clipping and 3D Primitives
(1,1)
(0,1) (1,2) (2,2)
On the common boundary of the two squares at u = 1 , you have to match the
boundary curves of P1 and P2 as follows:
m m
P1 (1, v) = ∑ p j,n BEZ j,m ( v) = P2 ( 0 , v) = ∑ q j,0 BEZ j,m ( v) .
j=0 j=0
(0,0) (2,1)
Fig. 10: A composite tensor product Bezier surface.
The two boundary curves will match identically if and only if the boundary
control points p j, n = q j, 0 for j = 0, 1, … , m . This follows because Bernstein
basis polynomials are linearly independent. All you need to do for continuity
of the composite patch is to keep the same control points for the two Bezier
surfaces on the common boundary (see Fig. 10). Next, for the continuity of the
first derivatives, recall that a Bezier surface is a polynomial surface and hence
possesses continuous derivatives of all orders. Therefore we only need to
check for the C1 continuity of the composite derivatives at the joining curve of
the two pieces. This requires matching of partial derivatives of P1 and P2 in u
and v directions. In the direction u , since the two pieces have a common
boundary curve, their derivatives of all orders in that direction will also be
matching. Therefore you only need to find out conditions under which partial
derivatives of P1 and P2 match in the direction v . Using the formula for the
77
Computer Graphics first derivative of Bezier curve, you can write down the v (-directional) partial
derivatives of P1 and P2 as follows:
m n
∂P1
( t , v) = ∑ ∑ ∆1p j,k BEZ j,m −1 ( v)BEZ k ,n (u ),
∂v j= 0 k =0
m n
∂P 2
( t , v) = m ∑ ∑ ∆1q j,k BEZ j,m−1 (v)BEZ k ,n (t ), t = u − 1.
∂v j=0 k =0
Fig. 11: Red, Green and Blue control points near the boundary fall on a line.
B-spline curves are piecewise polynomial cubes with one or more polynomial
pieces with a minimum smoothness requirement. For example, a C 2 cubic
B-spline curve has one or more cubic pieces which are joined in such a way
that the resulting composite curve is twice continuously differentiable.
78
B-spline curves have a very elegant expression similar to the Bezier Clipping and 3D Primitives
representation with basis function as B-spline functions in place of Bernstein
basis polynomials. B-spline basis functions can be computed iteratively using
de Boor algorithm. Sec. 10.9 of the book discusses in detail about B-spline
curves and surfaces which you may read now.
Do the exercise no. 10-20, 10-21, Chapter 10 on page 425 of the book.
The following exercises will further help you to test your understanding of the
concepts learnt above.
E4) A curve shape has three quadratic Bézier curve segments. The curves
have been joined sequentially so that continuity of the first derivative of
the resulting curve shape is maintained. What is the minimum number of
control points that will be required as input to produce the curve? Justify
your answer.
E5) If the spacing between the knot sequence is uniformly doubled, will the
shape of the resulting B-spline curve change? Justify your answer.
E6) A B-spline curve of degree 5 having all control points on a straight line
segment will lie on the same straight line segment. True or false? Give
reasons in support of your answer.
We now end this unit by giving a summary of what we have covered in it.
4.5 SUMMARY
In this unit, we have covered the following:
1. The concept of clipping 2D objects.
2. Clipping of line segments against a 2D rectangular window.
3. Cohen Sutherland line clipping algorithm: The algorithm uses the
following main steps
• Divide the entire plane into nine disjoint regions using the four
window boundaries of the window.
• Give a unique four bit region code to each region.
• Find out the code of two end points.
• Use the code to check (i) If the line segment can be trivially selected
(ii) trivially rejected (iii) needs further processing.
• Find out the intersection with the window boundaries for line
segments which need further processing.
79
Computer Graphics 4. Liang Barsky line clipping algorithm: The algorithm uses parametric
form of the line segment. Four inequalities are created using the
parametric form of the line segments. These inequalities are used for
processing the line segment in an efficient way.
5. Three dimensional display methods: Among the simplest three
dimensional surface representations are the polygonal surfaces.
• A polygonal surface is described by vertices, edges and polygons.
• Vertex, edge and polygon tables are formed for the convenience of
organization of the polygonal surfaces. This is done because the
polygonal surface representation of most of the real life surfaces
require thousands of polygons to make a good approximation.
6. For computation of Bézier curves an iterative algorithm known as de
Casteljau algorithm is used. The algorithm uses repeated linear
interpolation.
7. Bézier surfaces are simple extensions of Bézier curves.
8. Tensor product Bézier surface is having the parametric form-
m n
P ( u , v) = ∑ ∑ p j,k BEZ j,m (v)BEZ k ,n (u ),
j=0 k =0
80
Clipping and 3D Primitives
4.6 SOLUTIONS/ANSWERS
Exercises on pages 68-69 of this unit.
E1) Proceed step by step through the algorithm. Let P1 = (0, 0) and
P 2 = (4, 5) .
i) Find code (P1) = 0101 , code (P 2) = 1000 , where code (P) means
region code of point P.
ii) code (P1) ≠ 0 and code (P 2) ≠= 0 . Also code (P1) ∩ code (P 2) = 0 .
Therefore the line segment requires further processing.
iii) For left end point P1 , first find out the intersection with the left
boundary. The intersection point is (1, 5 / 4) which is on the
window boundary. Accept the point and update P1 by this point.
That means now, P1 = (1, 5 / 4) . You need not further process it for
finding intersection with bottom window boundary.
iv) For the right end point, find out the intersection with the top
window boundary and obtain the point (16 / 5, 4) . Update the point
P 2 by this point on the top boundary of the window.
v) Draw the clipped line segment now from P1 to P 2 .
6-10 Consider here line segments with three different slopes. Let the line
segments be labelled L1, L 2, L3 , as shown in Fig. 12. Denote the
addition/ subtraction by A , multiplication/division by M . Use the
notations given in the book for subsequent discussions.
1000
y = ywmax L3
y = ywmin
L2 0100
x = xwmin x = xwmax
Fig. 12.
82
Line2: AND operation of endpoint codes = 0. Clipping and 3D Primitives
Compare the arithmetic operations for the rest of the line segments in a
similar way.
6-21 For the sake of simplicity, assume that both the ellipse and the window
have axes/edges parallel to the coordinate axes. Suppose the ellipse E
has centre ( xc, yc) with major and minor axes of lengths 2rx and 2ry
respectively. Further, let the window W have two extreme corners
( xw min, yw min) and ( xw max, yw max) as given in the book. Step by
step algorithm, based on which you may write a routine for clipping an
ellipse is as follows:
G
E
A B
D
F
C
Fig. 13.
Process in a similar way for other window boundaries. If you get two
intersection points of the ellipse with window boundaries, plot your
ellipse accordingly. Else, reject it.
Important Note: Make sure before sending the selected segment of the
ellipse to the frame buffer, that you are sending the right portion and not
the clipped away portion. Using the above steps, write your routine.
84
v) Generate the 4-bit code(above,below,right,left) for the lower left Clipping and 3D Primitives
1000 1000
y = ywmax y = ywmax
Fig. 15.
85
Computer Graphics 10-7 Assume that the coordinate system is right handed coordinate system.
Let O be an object having N polygonal surfaces Si , i = 1 to n , in its
definition. Each polygonal surface is on a plane Pi with equation of plane
given by
A i x + B i , y + C i z + D i = 0, i = 1 to n .
Let P = ( x , y, z) be the given point.
10-17 The cubic Bézier curve shapes must meet in joints in such a way that
first order continuity is maintained. Suppose you need to plot N
segments, each of which is a cubic Bézier curve. Then each segment
has 4 control points. Let the i th curve segment s i have control points -
P3i , P3i+1 , P3i+ 2 , P3i+3 , i = 0, 1, … , N − 1 . To ensure continuity of the
first derivative, use formula (10-47) on page 350 of the book with
n = 3 . Apply the formula between consecutive pieces. When the first
piece finishes, its local parameter value becomes 1, while for the second
86
piece this is the starting point and therefore local parameter for the Clipping and 3D Primitives
second piece becomes 1. Hence the continuity of derivative between
the first and second piece is guaranteed if s '0 (1) = s1' (0) . This
essentially means
(P3 − P2 ) = (P4 − P3 )
Or,
P3 = (P2 + P4 ) / 2 .
Similarly, continuity of the first derivative is guaranteed between pieces
i and i + 1 , provided
Pi = (Pi−1 + Pi +1 ) / 2 .
10-20 Use formula (10-55) on page 355 of the book recursively to compute
higher degree blending functions. For d = 2 , it goes as follows:
u − uk u k +2 − u
B k ,2 (u ) = B k ,1 (u ) + B k +1,1 (u ) .
u k +1 − u k u k + 2 − u k +1
u − uk
u − u u ∈[u k , u k +1 )
B k ,2 (u) = k +1 k
u k +2 − u
u ∈ [u k +1 , u k + 2 ).
u k + 2 − u k +1
These are well known Hat functions. Proceeding in this way, calculate
for d = 3 and d = 4 .
10-21 Use the result of the Exercise 10-20 and formula (10-55) of the book
again.
E4) You need 5 control points to completely define the curve. Assume that
the curve shape C has three segments C1 , C 2 , C 3 . Each segment is a
quadratic Bézier curve and requires three control points. Let the control
points for first piece be P0 , P1 , P2 . Since first derivative of C is
continuous, it is natural that segments make a continuous piece. Hence
the initial point for the second piece will be P2 . Let the curve C 2 has
control points P2 , P3 , P4 while that of C 3 be given by P4 , P5 , P6 . Then
by virtue of continuity of derivative and formula (10-47) on page 350 of
the book, you get P2 = (P1 + P3 ) / 2, P4 = (P3 + P5 ) / 2 .
87
Computer Graphics E5) No change in the curve. Computation of B-spline blending functions uses
ratios only, which remain unchanged.
E6) True. Curve points are convex combination of its control points. This is
because the blending functions are non-negative and the sum of the
blending functions is 1 (see Eqn.(10-56) on page 356 of the book).
***
88