Draw the letters s, p, r or u by using multiple bézier curve, Computer Graphics

Assignment Help:

Draw the letters S, P, R or U of English alphabet using multiple Bézier curves. 

A complete code for plotting Bezier curves is given previously. There in the code, control points for the Bézier curves are taken using mouse input.  Plot Bézier curves by first identifying the control points of the curve and then storing them in an array.  Always employ curves of same degree for plotting different parts of the alphabet letter.  In the following code, character  P  is generated using only quadratic Bézier curves. Straight line segments are also generated using a quadratic Bézier curve by choosing the control points on a straight line. 

/* Create the character P using multiple Bezier curves*/

#include

#include

#include  

#define n 2 //Uniform degree of all Bezier curves 

int ww=640,wh = 480; //Window Size

int OUT_CURVES = 18; //Counter for curves in outer boundary

int IN_CURVES=12; // Counter for curves in inner boundary

//Coordinates of control points for outer curves

int Px_Out[21]={90, 120, 160, 180, 180, 180, 180, 180, 160,

140, 120, 120,120, 120, 140, 140,140, 120, 90, 90, 90};

int Py_Out[21]={100, 100, 100, 100, 120, 140, 160, 180, 180,

180, 180, 230,230,240,240, 250, 260, 260, 260, 200,100};

//Coordinates of control points for inner curves

int Px_In[15]={120, 130, 140, 160, 160, 160, 160,

160,160,160,130,120,120,120,120};

int Py_In[15]={120, 120, 120, 120, 130, 140,

140,145,150,160,160,160,160,130,120};  

void myInit(){

    glClearColor(0.0,0.0,0.0,0.0);

    glColor3f(0.0,1.0,0.0);

    glPointSize(4.0); //Select point size 

    gluOrtho2D(0.0,640.0,0.0,480.0); 

    //For setting the clipping areas  

} //Initialize    

//Point plotting    

//Computing factorial of a number k

int factorial(int k) {

 int fact=1,i;

 for(i=1;i<=k;i++)

 fact=fact*i;

 return fact; }  

/* Draw a bezier curve with control points (x[i],y[i]),

i=0,..., n */

void drawBezier(int x[n+1], int y[n+1]) {

 double P_x,P_y;

 glColor3f(1.0,1.0,1.0); //Set drawing colour for curve

 for( double t=0.0;t<=1.0;t+=0.01){

  P_x=0.0; 

  P_y=0.0;

 glBegin(GL_POINTS); //Draw point (P_x,P_y) on the curve 

for( int i=0;i<=n;i++) {

 int cni=factorial(n)/(factorial(n-i)*factorial(i));

 P_x = P_x+(double)(x[i]*cni)*pow(1 - t,n-i)*pow(t,i); 

 P_y = P_y+(double)(y[i]*cni)*pow(1 - t,n-i)*pow(t,i); 

   }

 

   glVertex2f(P_x,wh -P_y); 

   }

 glEnd();

glFlush(); }

 

//Draw character P using Bezier curves

void Bezier()

{

 int Control_x[3], Control_y[3];

 //Outer Boundary curves 

 for (int j=0;j<=OUT_CURVES; j+=2){

  Control_x[0]=Px_Out[j];

  Control_y[0]=Py_Out[j];

  Control_x[1]=Px_Out[j+1];

  Control_y[1]=Py_Out[j+1];

  Control_x[2]=Px_Out[j+2];

  Control_y[2]=Py_Out[j+2];

 drawBezier(Control_x, Control_y);

 }

 //Inner Boundary curves

 for (int j=0;j<=IN_CURVES; j+=2){

  Control_x[0]=Px_In[j];

  Control_y[0]=Py_In[j];

  Control_x[1]=Px_In[j+1];

  Control_y[1]=Py_In[j+1];

  Control_x[2]=Px_In[j+2];

  Control_y[2]=Py_In[j+2];

 drawBezier(Control_x, Control_y);

 }

 glFlush();

}

//Draw character P on a mouse click

void myMouse(int button, int state, int x, int y) { 

 if(button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) {      

  Bezier();

  glFlush();} 

}

void myDisplay() {

    glClear(GL_COLOR_BUFFER_BIT);

 //Bezier();

    glFlush();

}

int main() {

    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);

    glutInitWindowSize(ww,wh);

    glutInitWindowPosition(200,200);

    glutCreateWindow("Bezier curves");

    glutMouseFunc(myMouse);

    glutDisplayFunc(myDisplay);

    myInit();

    glutMainLoop();

 return 0;

}

 Other characters R,S,U can be similarly plotted using appropriate coordinates of the control points.


Related Discussions:- Draw the letters s, p, r or u by using multiple bézier curve

Sound editing programs, Sound Editing Programs; Sound editing tools for bo...

Sound Editing Programs; Sound editing tools for both digitized and MIDI sound; by that you see music and also hear it. Through drawing a representation of a sound in fine growths,

Transformation for 3-d scaling, Transformation for 3-D Scaling As we a...

Transformation for 3-D Scaling As we already seen that the scaling process is mainly utilized to change the size of an object. The scale factors find out whether the scaling i

Application of animation, Application of animation: There are a variety of...

Application of animation: There are a variety of utilizations for computer animation. They can vary from fun to practical and educational ones. Medicine, military, entertainment,

Raster & Vector display, what is refresh buffer/ identify the content and o...

what is refresh buffer/ identify the content and organisation of the refresh buffer for the case of raster display and vector display.

Advantages of scan line algorithm, Advantages of Scan line Algorithm:  ...

Advantages of Scan line Algorithm:   This time and always we are working along with one-dimensional array as: x[0...x_max] for color not a 2D-array like in Z-buffer algorithm.

Rotation about z-axis - transformation for 3-d rotation, Rotation about z-a...

Rotation about z-axis - Transformation for 3-d rotation Rotation about z-axis is explained by the xy-plane. Suppose a 3-D point P(x,y,z) be rotated to P'(x',y',z') along with

Define affine transformation, Define Affine transformation?  A coordina...

Define Affine transformation?  A coordinate transformation of the form X= axxx +axyy+bx, y 'ayxx+ayy y+by  is known as a two-dimensional affine transformation. Every of the tra

What do you understand by the term image compositing, Question 1: (a) E...

Question 1: (a) Explain in detail what you understand by the term image compositing and where it is more often used? (b) You are given 3-5 images to make a photo montage/ima

Macintosh - hardware for computer animation, Macintosh - Hardware for compu...

Macintosh - Hardware for computer animation It was originally designed to be graphic and desktop publishing machines. Macs did not turn into which widely known till recently, a

Write Your Message!

Captcha
Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd