Write a Program to implement Standard Perspective Projection in 3-Dimensions.

 

Write a Program to implement Standard Perspective Projection in 3-Dimensions.

  1. #include<iostream.h>  
  2. #include<conio.h>  
  3. #include<graphics.h>  
  4. #include<math.h>  
  5. #include<stdio.h>  
  6. #include<stdlib.h>  
  7. #define pi 3.14  
  8. class per  
  9. {  
  10.     float x[10], y[10], z [10], d;  
  11.     float x1 [10], y1[10], xm, ym, z1 [10];  
  12.     int i, k, j, n;  
  13.     public:  
  14.     void get();  
  15.     void perpro();  
  16.     void map();  
  17.     void graph();  
  18.     void plot1();  
  19. }  
  20. void per::get()  
  21. {  
  22.     cout<< "\n ENTER OF VERTICES";  
  23.             cin>>n;  
  24.     cout<<"\n ENTER";  
  25.             for (i=0;i<n;i++)  
  26.     {  
  27.         cout<<"\n x["?i<<"], y["<<i<<"] and z ["<<i<<"]";  
  28.         cin>>x[i]>>y[i]>>z[i];  
  29.     }  
  30.         cout<<"\n ENTER WIDTH FOR Z-AXIS-d";  
  31.         cin>>d;  
  32. }  
  33. void per:: perpro()  
  34. {  
  35.     for(i=0;i<n;i++)  
  36.     {  
  37.         x1[i]=(d*x[i])/(z[i]+d);  
  38.         y1[i]=(d*y[i])/(z[i]+d);  
  39.         z1[i]=0;  
  40.     }  
  41.     cout<< "\n ENTER PROJECTION, VERTICES OF POLYGON ARE--";  
  42.             for(i=0;i<n;i++)  
  43.     {  
  44.         cout<<"x?["<<i<<"]="<<x1[i]<< "\t";  
  45.         cout<<"y?["<<i<<"]="<<y1[i]<< "\t";  
  46.         cout<<"z?["<<i<<"]="<<z1[i]<< "\t";  
  47.         cout<<"\n";  
  48.     }  
  49. }  
  50. void per :: map()  
  51. {  
  52.     int gd=DETECT;  
  53.     initgraph (&gd, &gm, "");  
  54.     int errorcode = graphresult();  
  55.     /*an error occurred */  
  56.            if (errorcode!=grOK)  
  57.     {  
  58.         printf("Graphics error: %s \n",grapherrormsg (errorcode));  
  59.                       printf("Press and key to halt: ");  
  60.                       getch();  
  61.                       exit(1); /* terminate with an error code */  
  62.             }  
  63. }  
  64. void per::graph()  
  65. {  
  66.     xm= get maxx()/2;  
  67.     ym=get maxy()/2  
  68.     line (xm,0, xm, 2 * ym);  
  69.     line (0, ym, 2 * xm, ym);  
  70. }  
  71. void per::plot1()  
  72. {  
  73.     for(i=0;i<n-1;i++)  
  74.     {  
  75.         line(x1[i]*100+xm,(-y1[i]*100+ym),x1[i+1]*100+xm,(-y1[i+1]*100+ym));  
  76.     }  
  77. line(x1[n-1]*100+xm,(-y1[n-1]*100+ym),x1[0]*100+xm,(-y1[0]*100+ym));  
  78.     getch();  
  79. }  
  80. void main()  
  81. {  
  82.     class per a;  
  83.     clrscr();  
  84.     a.map();  
  85.     a.graph();  
  86.     a.get();  
  87.     a.perpro();  
  88.     a.graph();  
  89.     a.plot1();  
  90.     getch();  
  91. }  

Output

Computer Graphics Programs

Post a Comment

Previous Post Next Post