Skip to main content

CG 1

 Write C++ program to draw a concave polygon and fill it with desired colour using scan fill algorithm. Apply the concept of inheritance.

The Code for above problem is as follows : 

 // Program to Fill a Polygon Using Scan Line Fill Algorithm in C++.  
   
 #include <conio.h>  
 #include <iostream.h>  
 #include <graphics.h>  
 #include <stdlib.h>  
 #include<dos.h>  
   
 class point  
 {  
   public:  
   int x,y;  
 };  
   
 class poly  
 {  
   private:  
      point p[20];  
      int inter[20],x,y;  
      int v,xmin,ymin,xmax,ymax;  
   public:  
      int c;  
      void read();  
      void calcs();  
      void display();  
      void ints(float);  
      void sort(int);  
 };  
   
   
 void poly::read()  
 {  
   int i;  
   cout<<"\n\t SCAN_FILL ALGORITHM";  
   cout<<"\n Enter the no of vertices of polygon:";  
   cin>>v;  
   if(v>2)  
   {  
      for(i=0;i<v; i++)   
      {  
        cout<<"\nEnter the co-ordinate no.- "<<i+1<<" : ";  
        cout<<"\n\tx"<<(i+1)<<"=";  
        cin>>p[i].x;  
        cout<<"\n\ty"<<(i+1)<<"=";  
        cin>>p[i].y;  
      }  
      p[i].x=p[0].x;  
      p[i].y=p[0].y;  
      xmin=xmax=p[0].x;  
      ymin=ymax=p[0].y;  
   
   }  
   else  
      cout<<"\n Enter valid no. of vertices.";  
 }  
   
 void poly::calcs()  
 {   
   for(int i=0;i<v;i++)  
   {  
      if(xmin>p[i].x)  
      xmin=p[i].x;  
      if(xmax<p[i].x)  
      xmax=p[i].x;  
      if(ymin>p[i].y)  
      ymin=p[i].y;  
      if(ymax<p[i].y)  
      ymax=p[i].y;  
   }  
 }  
   
 void poly::display()  
 {      int i;  
     float s,s2;  
       s=ymin+0.01;  
      delay(100);  
    for(i=0;i<v;i++)  
      {  
   
        line(p[i].x,p[i].y,p[i+1].x,p[i+1].y); // used draw a polygon  
      }  
      while(s<=ymax)  
      {  
        ints(s);  
        sort(s);  
        s++;  
      }  
      getch();  
   }  
   
 void poly::ints(float z)   
 {  
   int x1,x2,y1,y2,temp;  
   c=0;  
   for(int i=0;i<v;i++)  
   {  
      x1=p[i].x;  
      y1=p[i].y;  
      x2=p[i+1].x;  
      y2=p[i+1].y;  
      if(y2<y1)  
      {  
        temp=x1;  
        x1=x2;  
        x2=temp;  
        temp=y1;  
        y1=y2;  
        y2=temp;  
      }  
      if(z<=y2&&z>=y1)  
      {  
        if((y1-y2)==0)  
        x=x1;  
        else   
        {  
           x=((x2-x1)*(z-y1))/(y2-y1);  
           x=x+x1;  
        }  
        if(x<=xmax && x>=xmin)  
        inter[c++]=x;  
      }  
   }  
 }  
   
 void poly::sort(int z)   
 {  
   int temp,j,i;  
   
   
      delay(100);  
      for(i=0; i<c;i+=2)  
      {  
        delay(100);  
        line(inter[i],z,inter[i+1],z); // Used to fill the polygon ....  
      }  
 }  
   
 int main()   
 {  
   int gd=DETECT,gm;  
   initgraph(&gd,&gm,"c:\\turboc3\\bgi");  
   
   cleardevice();  
 int cl;  
  poly x;  
   
   
   x.read();  
   x.calcs();  
   cleardevice();  
   cout<<"\n\tEnter the colour u want:(0-15)->"; //Selecting colour  
   cin>>cl;  
   cleardevice();  
   setcolor(cl);  
   x.display();  
   closegraph();   
   getch();  
   return 0;  
 }  

Comments

Popular posts from this blog

Circle Triangle Pattern

  Group A   Practical 3 a   Problem Statement :   a) Write C++ program to draw the following pattern. Use DDA line and Bresenham‘s circle drawing algorithm. Apply the concept of encapsulation. Check Out Code Here  ðŸ‘‡ Output :  Code can get updated so also come back later to see if there is any changes. Also if there is any problem with code you can comment below. If you like it, do share with your friends.😊

Bouncing Ball

Group B   Practical 4 a   Problem Statement :   Write a C++ program to implement bouncing ball using sine wave form. Apply the concept of polymorphism. Check Out Code Here  ðŸ‘‡ Outputs :  Code can get updated so also come back later to see if there is any changes. Also if there is any problem with code you can comment below. If you like it, do share with your friends.😊

OOP 4

  Object Oriented Programming Group B - Practical : 4 Problem Statement :  Write a C++ program that creates an output file, writes information to it, closes the file, open it again as an input file and read the information from the file. Check Out Code Here  ðŸ‘‡ Code can get updated so also come back later to see if there is any changes. Also if there is any problem with code you can comment below. If you like it, do share with your friends.😊