Course: Instructor:
Project 4: Date due:
“Computer Graphics,” ECS 175, Fall Quarter 2016 Bernd Hamann
“A SIMPLE BE ́ZIER AND B-SPLINE CURVE EDITOR”
Monday, November 21, 2016
Remark: You must NOT use GL’s routines for generating B ́ezier or B-spline curves! You can use GL for rendering but not for evaluating these curves.
The fourth project requires the implementation of a 2D B ́ezier and B-spline curve editor. A 2D B ́ezier curve is defined as
nn
c(t) = x(t),y(t) T = bi Bin(t) = (xi,yi)T ni (1−t)n−iti , t∈[0,1].
i=0 i=0
For the evaluation of a B ́ezier curve, use the de Casteljau algorithm to compute points on the curve. A single 2D parametric B-spline curve is defined as
nn
c(t) = x(t), y(t) T = di Nik(t) = (xi, yi)T Nik(t) , t ∈ [τk−1, τn+1].
i=0 i=0
Remember that you do not need to evaluate the normalized B-spline basis functions Nik(t). For the evaluation of a B-spline curve, use the de Boor algorithm to generate points on the curve.
When dealing with a B ́ezier curve, the user must be able to add, insert, delete, and modify the B ́ezier points bi. The same applies to a B-spline curve: The user must be able to add, insert, delete, and modify the de Boor points di. In addition to this, the user must be able to change the order k of a B-spline curve and modify the values of the knots τ0, … , τn+k. Initially, you can define the order to be k = 2 and the knotstobeτi =i,i=0,…,n+k.
The user must be able to specify the number of points used for rendering a B ́ezier or B-spline curve by a sequence of line segments (“display resolution”).
The user should be able to change all parameters easily by providing a screen area used for displaying and specifying the coordinates of control points (B ́ezier and de Boor points), the order and the knots of a B-spline curve, and the display resolution. The specification of control points should be made as easy as possible. Either the user types in the control information directly, or – when modifying control points – uses a “rubber band” technique to interactively move control points.
1
The curve editor must provide a facility to store the parameters defining a B ́ezier or B-spline curve. The system must be capable of reading and writing control infor- mation for B ́ezier and B-spline curves.
It must be possible to manipulate, create, and display a scene containing multiple B ́ezier and multiple B-spline curves. Make it possible to select a certain curve and to operate just on the selected one!
Besides having to hand in a program listing, please prepare a “manual sheet” explain- ing how to use your program.
The overall grade (on a scale from 0 to 100) will depend on i) completeness (40%), ii) correctness (40%), iii) interface quality (15%), and iv) the manual sheet (5%). No project will be accepted when it is more than seven (7) days late; for each day, one (1) point will be deduced.
DO NOT REMOVE YOUR PROGRAM! YOU WILL BE ABLE TO USE IT IN THE NEXT ASSIGNMENT(S).
HAVE FUN !!!
2