Assignment2 Solution
Assignment2 Solution
Assignment 2 Solution
1. Determine the equation of the parametric cubic spline passing through points A and B, [4]
A = (2,5), Slope vector at A is at 900 w.r.t. the X-axis and has magnitude = 1,
B = (6,0), Slope vector at B is at 450 w.r.t. the X-axis and has magnitude = 1.
What is the slope of this curve at t = 0.5
2 −2 1 1 2 5
h i −3 3 −2 −1 6 0
P (t) = [t][MH ][GH ] = t3 t2
t 1
0
0 1 0 cos(900 ) sin(900 )
1 0 0 0 cos(450 ) sin(450 )
−7.29 11.71
h i 11.29 −17.71
P (t) = t3 t2 t 1
0 1
2 5
−7.29 11.71
h i 11.29 −17.71
P 0 (t) = 3t2
2t 1 0 0
1
2 5
P 0 (0.5) = [5.82, −7.93]
dy
Slope at point P is dx
= −7.93/5.82 = −1.36
3
X 3
B(t) = (1 − t)n−i ti Vi = (1 − t)3 V0 + 3(1 − t)2 tV1 + 3(1 − t)t2 V2 + t3 V3
i=0
i
−1 3 −3 1 V0
h i 3 −6 3 0 V
1
B(t) = [t][MB ][V ] = t3 t2
t 1 −3 3
0 0 V
2
1 0 0 0 V3
3. Write a function in MATLAB or Python to plot the Bezier curve given control points (V0 , V1 , V2 , V3 ). [10]
The input to the function will be a four by two matrix [V],
Xv 0 Yv 0
X Y
v1 v1
[V ] = (2)
X
v2 Yv2
Xv3 Yv3
where, Xvi and Yvi are the x- and y-coordinates of the control point Vi . Upload your code as a
text file named ’LastName-FirstName-Bezier.txt’ (e.g., Mujumdar-Soham-Bezier.txt) in the as-
signment 2 section on the Moodle. (Note: Make sure your code is well-commented. Use atleast
100 points on the curve to plot the curve.)
%% MATLAB f u n c t i o n t h a t p l o t s a c u b i c B e z i e r c u r v e g i v e n 4 c o n t r o l p o i n t s
f u n c t i o n p = p l o t B (V)
% I n p u t V i s i n a form o f 4 x 2 m a t r i x .
% Given f o u r c o n t r o l p o i n t s V0 , V1 , V2 , V3 ; V m a t r i x i s a s f o l l o w s :
% Row i f i r s t column i s x−c o o r d o f Vi−1
% Row i s e c o n d column i s y−c o o r d o f Vi−1
% e . g . V = [0 ,0; 3 ,4; 5 ,2; 6 ,0]
MB = [−1 3 −3 1 ; 3 −6 3 0 ; −3 3 0 0 ; 1 0 0 0 ] ; % Bezier curve matrix
% B ( t ) = [ T ] [MB] [ V ] ; l e t ’ s c a l c u l a t e MBV = [MB] [ V] f i r s t .
MBV = MB∗V;
% F o r o b t a i n i n g 101 p o i n t s a l o n g t h e c u r v e , we d i v i d e t h e r a n g e [ 0 , 1 ] i n
% 101 u n i f o r m i n t e r v a l s
t = linspace (0 ,1 ,101) ’;
T = [ t . ˆ 3 t . ˆ 2 t ones ( s i z e ( t ) ) ] ;
x = T∗MBV( : , 1 ) ; % x−c o o r d o f p o i n t s on t h e c u r v e
y = T∗MBV( : , 2 ) ; % y−c o o r d o f p o i n t s on t h e c u r v e
% Plot the curve
figure (); clf ;
p = p l o t ( x , y , ’ − r ’ , ’ l i n e w i d t h ’ , 2 ) ; h o l d on ;
p t s = p l o t (V ( : , 1 ) , V( : , 2 ) , ’ − − ok ’ , ’ M a r k e r F a c e C o l o r ’ , ’ k ’ ) ; % Showing c o n t r o l
g r i d on ;
xlim ( [ 0 , 6 ] ) ; ylim ( [ − 2 , 4] ) ;
x l a b e l ( ’X ’ ) ; y l a b e l ( ’Y ’ ) ;
% Plot settings
axis equal ;
s e t ( gca , ’ F o n t S i z e ’ , 1 0 ) ;
s e t ( gca , . . .
’ Box ’ , ’ on ’ , ...
’ TickDir ’ , ’ in ’ , ...
4. Use your code from Q. 3 to plot the Bezier curves for each of the following sets of control points, [8]
Based on the plots, comment on what happens to the curve when (a) the order of the control points
is changed, and (b) one of the control points is moved.
The Bezier curve plots are shown in Fig. 1. From the the figure we can conclude that (a) changing
the order of the control points changes the Bezier curve except when the order is exactly reversed.
In that case, the curve remains same (even though the parametrization changes, i.e., which point
on the curve you get at a particular t = t0 ), and (b) moving the control point changes the Bezier
curve. The curve passes through first and the last control points, while the intermediate control
points pull the curve towards them giving it a particular shape.
5. Find (x,y,z) if the two Bezier curve segments (B1 and B2 ) passing through following sets of [5]
control points are required to be C 1 continuous at the common point D.
For the curve segments B1 , B2 to be C 1 continuous at the common point D, we must have (a)
value of B1 at D = value of B2 at D, and (b) slope of B1 at D = slope of B2 at D. Since (a) is
automatically satisfied due to the properties of Bezier curves, we only need to satisfy (b).
For a cubic Bezier curve, we have
3
X 3
B(t) = (1 − t)n−i ti Vi = (1 − t)3 V0 + 3(1 − t)2 tV1 + 3(1 − t)t2 V2 + t3 V3
i=0
i
3(D − C) = 3(E − D)
C = 2D − E = (4, 2, 6)
(a) (b)
(c) (d)