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

Word perfect graphic, WPG: It is word perfect graphic file that is used vi...

WPG: It is word perfect graphic file that is used via Word Perfect. It first came out with the release of word perfect 5.0. Such files can include bitmaps, line arts and vector gr

Cathode ray tube, cathode ray tube is an analog or digital device

cathode ray tube is an analog or digital device

Important points about the diffuse reflection, Important Points About the D...

Important Points About the Diffuse Reflection An extremely rough surface appears uniformly bright from each viewing direction Q the intensity of reflected light is identical i

digital audio technologies, Digital audio technologies DAB (Digita...

Digital audio technologies DAB (Digital Audio Broadcasting) Digital Audio Tape (DAT) DVD DVD-A Digital audio player Compact disc (CD) Minidisc (obsolete

Polygon clipping algorithm, Write a polygon clipping algorithm to clip a po...

Write a polygon clipping algorithm to clip a polygon against rectangular clipping are. Read the vertices of polygon to be clipped. 2. Read the coordinates of the rectangular cl

Behavioral animation - computer animation, Behavioral Animation - Computer ...

Behavioral Animation - Computer Animation It used for control the motion of several objects automatically. Objects or "actors" are specified rules about how they respond to th

What is a spline, What is a spline?  To produce a smooth curve by a des...

What is a spline?  To produce a smooth curve by a designed set of points, a flexible strip called spline is used. Like spline curve can be mathematically explained with a piece

Important points for designing the animation sequence, Important Points for...

Important Points for Designing the Animation Sequence There are several applications which do not follow this sequence as, real time computer animations generated by vehicle dr

Common transformation for parallel projection-transformation, Derive the co...

Derive the common transformation for parallel projection into a specified view plane, here the direction of projection d=aI+bJ+cK is along the normal N=n1I+n2J+n3K along with the r

Transformation, Define transformation. Explain all basic transformation

Define transformation. Explain all basic transformation

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