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

Ray casting - polygon rendering and ray tracing methods, Ray Casting -polyg...

Ray Casting -polygon rendering and ray tracing methods It is a method wherein the surfaces of objects visible to the camera are determined by throwing or say casting rays of

Describe the term multimedia, Question: (a) Describe the term ‘Multimed...

Question: (a) Describe the term ‘Multimedia'. (b) Briefly describe two main reasons to use ‘Compression' in Multimedia. (c) All Multimedia development teams could have

Sutherland hodgman algorithm, Sutherland-Hodgman Algorithm Any polygon...

Sutherland-Hodgman Algorithm Any polygon of any type of arbitrary shape can be explained with the assist of some set of vertices connected with it. While we try to clip the po

Representational animation - computer animation, Representational Animation...

Representational Animation - Computer Animation This method permits an object to change its shape throughout the animation. There are three sub-types to this. The initial is th

Find the normalization transformation, Illustration: Find the normalizatio...

Illustration: Find the normalization transformation N that uses the rectangle W (1, 1), X (5, 3), Y (4, 5) and Z (0, 3) as a window and also the normalized device screen like the

Sutherland cohen line clipping algorithm, Describe briefly Sutherland Cohen...

Describe briefly Sutherland Cohen line clipping algorithm.   OR   Describe Cohen Sutherland line clipping algorithm. Cohen Sutherland line clipping algorithm In this algorith

Assumption for diffuse reflection - polygon rendering, Assumption for Diffu...

Assumption for Diffuse Reflection - Polygon Rendering  i) the diffuse reflections by the surface are scattered along with equal intensity in each direction, independent of vie

How many key frames does a one-minute animation film, How many key frames d...

How many key frames does a one-minute animation film order along with no duplications need? Solution : One minute = 60 seconds Number of frames needed per second=24 Numbe

Exceptional cases - orthographic projection, Exceptional cases - Orthograph...

Exceptional cases - Orthographic Projection 1)   We have an Orthographic projection, if f=0, then cot (β) =0 that is β=90 0 . 2)   β =cot-1 (1)=450 and this Oblique projec

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