From Coral Dolphin, 2 Months ago, written in Text.
Embed
  1.                                                        DDA LINE DRAWING ALGORITHM
  2.  
  3. #include <graphics.h>
  4. #include <stdio.h>
  5. #include <math.h>
  6. #include <dos.h>
  7.  
  8. void main( )
  9. {
  10.     float x,y,x1,y1,x2,y2,dx,dy,step;
  11.     int i,gd=DETECT,gm;
  12.  
  13.     initgraph(&gd,&gm,"c:\\turboc3\\bgi");
  14.  
  15.     printf("Enter the value of x1 and y1 : ");
  16.     scanf("%f%f",&x1,&y1);
  17.     printf("Enter the value of x2 and y2: ");
  18.     scanf("%f%f",&x2,&y2);
  19.  
  20.     dx=abs(x2-x1);
  21.     dy=abs(y2-y1);
  22.  
  23.     if(dx>=dy)
  24.         step=dx;
  25.     else
  26.         step=dy;
  27.  
  28.     dx=dx/step;
  29.     dy=dy/step;
  30.  
  31.     x=x1;
  32.     y=y1;
  33.  
  34.     i=1;
  35.     while(i<=step)
  36.     {
  37.         putpixel(x,y,5);
  38.         x=x+dx;
  39.         y=y+dy;
  40.         i=i+1;
  41.         delay(100);
  42.     }
  43.  
  44.     closegraph();
  45. }
  46.  
  47.  
  48.  
  49.  
  50.  
  51.                                             BRESENHAM'S LINE DRAWING AGORITHM
  52. #include<stdio.h>
  53. #include<graphics.h>
  54.  
  55. void drawline(int x0, int y0, int x1, int y1)
  56. {
  57.     int dx, dy, p, x, y;
  58.  
  59.     dx=x1-x0;
  60.     dy=y1-y0;
  61.  
  62.     x=x0;
  63.     y=y0;
  64.  
  65.     p=2*dy-dx;
  66.  
  67.     while(x<x1)
  68.     {
  69.         if(p>=0)
  70.         {
  71.             putpixel(x,y,7);
  72.             y=y+1;
  73.             p=p+2*dy-2*dx;
  74.         }
  75.         else
  76.         {
  77.             putpixel(x,y,7);
  78.             p=p+2*dy;
  79.         }
  80.         x=x+1;
  81.     }
  82. }
  83.  
  84. int main()
  85. {
  86.     int gdriver=DETECT, gmode, error, x0, y0, x1, y1;
  87.     initgraph(&gdriver, &gmode, "c:\\turboc3\\bgi");
  88.  
  89.     printf("Enter co-ordinates of first point: ");
  90.     scanf("%d%d", &x0, &y0);
  91.  
  92.     printf("Enter co-ordinates of second point: ");
  93.     scanf("%d%d", &x1, &y1);
  94.     drawline(x0, y0, x1, y1);
  95.  
  96.     return 0;
  97. }
  98.  
  99.                                                                                 MID POINT CIRCLE ALGORITHM
  100. #include<stdio.h>
  101. #include<graphics.h>
  102.  
  103. void drawcircle(int x0, int y0, int radius)
  104. {
  105.     int x = radius;
  106.     int y = 0;
  107.     int err = 0;
  108.  
  109.     while (x >= y)
  110.     {
  111.     putpixel(x0 + x, y0 + y, 7);
  112.     putpixel(x0 + y, y0 + x, 7);
  113.     putpixel(x0 - y, y0 + x, 7);
  114.     putpixel(x0 - x, y0 + y, 7);
  115.     putpixel(x0 - x, y0 - y, 7);
  116.     putpixel(x0 - y, y0 - x, 7);
  117.     putpixel(x0 + y, y0 - x, 7);
  118.     putpixel(x0 + x, y0 - y, 7);
  119.  
  120.     if (err <= 0)
  121.     {
  122.         y += 1;
  123.         err += 2*y + 1;
  124.     }
  125.  
  126.     if (err > 0)
  127.     {
  128.         x -= 1;
  129.         err -= 2*x + 1;
  130.     }
  131.     }
  132. }
  133.  
  134. int main()
  135. {
  136.     int gdriver=DETECT, gmode, error, x, y, r;
  137.     initgraph(&gdriver, &gmode, "c:\\turboc3\\bgi");
  138.  
  139.     printf("Enter radius of circle: ");
  140.     scanf("%d", &r);
  141.  
  142.     printf("Enter co-ordinates of center(x and y): ");
  143.     scanf("%d%d", &x, &y);
  144.     drawcircle(x, y, r);
  145.  
  146.     return 0;
  147. }
  148.  
  149.  
  150.                                                              2.2D Translation:
  151. #include<graphics.h>
  152. #include<stdlib.h>
  153. #include<stdio.h>
  154. #include<math.h>
  155. void main()
  156. {
  157. int graphdriver=DETECT,graphmode,errorcode;
  158. int i;
  159. int x2,y2,x1,y1,x,y;
  160. printf("Enter the 2 line end points:");
  161. printf("x1,y1,x2,y2");
  162. scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
  163. initgraph(&graphdriver,&graphmode,"c:\\tc\\bgi");
  164. line(x1,y1,x2,y2);
  165. printf("Enter translation co-ordinates ");
  166. printf("x,y");
  167. scanf("%d%d",&x,&y);
  168. x1=x1+x;
  169. y1=y1+y;
  170. x2=x2+x;
  171. y2=y2+y;
  172. printf("Line after translation");
  173. line(x1,y1,x2,y2);
  174. getch();
  175. closegraph();
  176. }
  177.  
  178.  
  179.                                                           2D Rotation:
  180.  
  181. #include<graphics.h>
  182. #include<stdlib.h>
  183. #include<stdio.h>
  184. #include<math.h>
  185. void main()
  186. {
  187. int graphdriver=DETECT,graphmode,errorcode;
  188. int i;
  189. int x2,y2,x1,y1,x,y,xn,yn;
  190. double r11,r12,r21,r22,th;
  191. clrscr();
  192. printf("Enter the 2 line end points:");
  193. printf("x1,y1,x2,y2");
  194. scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
  195. initgraph(&graphdriver,&graphmode,"c:\\tc\\bgi");
  196. line(x1,y1,x2,y2);
  197. printf("\n\n\n[ Enter the angle");
  198. scanf("%lf",&th);
  199. r11=cos((th*3.1428)/180);
  200. r12=sin((th*3.1428)/180);
  201. r21=(-sin((th*3.1428)/180));
  202. r22=cos((th*3.1428)/180);
  203. //printf("%lf  %lf  %lf  %lf",r11,r12,r21,r22);
  204. xn=((x2*r11)-(y2*r12));
  205. yn=((x2*r12)+(y2*r11));
  206. line(x1,y1,xn,yn);
  207. getch();
  208. closegraph();
  209. }
  210.  
  211.  
  212.                                                                   2D Scaling:
  213.  
  214. #include<graphics.h>
  215. #include<stdlib.h>
  216. #include<stdio.h>
  217. #include<math.h>
  218. void main()
  219. {
  220. int graphdriver=DETECT,graphmode,errorcode;
  221. int i;
  222. int x2,y2,x1,y1,x,y;
  223. printf("Enter the 2 line end points:");
  224. printf("x1,y1,x2,y2");
  225. scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
  226. initgraph(&graphdriver,&graphmode,"c:\\tc\\bgi");
  227. line(x1,y1,x2,y2);
  228. printf("Enter scaling co-ordinates ");
  229. printf("x,y");
  230. scanf("%d%d",&x,&y);
  231. x1=(x1*x);
  232. y1=(y1*y);
  233. x2=(x2*x);
  234. y2=(y2*y);
  235. printf("Line after scaling");
  236. line(x1,y1,x2,y2);
  237. getch();
  238. closegraph();
  239. }
  240.  
  241.  
  242.                                                                                                SHEAR TRANSFORMATIONS
  243.                                                        
  244. #include<stdio.h>
  245. #include<graphics.h>
  246. #include<math.h>
  247. int graDriver=DETECT,graMode;
  248. int n,xs[100],ys[100],i;
  249. float shearXfactor,shearYfactor;
  250.  
  251. void DrawFn()
  252. {
  253. for(i=0;i<n;i++)
  254.  line(xs[i],ys[i],xs[(i+1)%n],ys[(i+1)%n]);
  255. }
  256.  
  257. void shearAlongX()
  258. {
  259. for(i=0;i<n;i++)
  260.  xs[i]=xs[i]+shearXfactor*ys[i];
  261. }
  262.  
  263. void shearAlongY()
  264. {
  265. for(i=0;i<n;i++)
  266.  ys[i]=ys[i]+shearYfactor*xs[i];
  267. }
  268.  
  269. void main()
  270. {
  271. printf("Enter number of sides: ");
  272. scanf("%d",&n);
  273. printf("Enter co-rdinates: x,y for each point ");
  274. for(i=0;i<n;i++)
  275.  scanf("%d%d",&xs[i],&ys[i]);
  276. printf("Enter x shear factor:");
  277. scanf("%f",&shearXfactor);
  278. printf("Enter y shear factor:");
  279. scanf("%f",&shearYfactor);
  280.  
  281. initgraph(&graDriver,&graMode,"C:\\TURBOC3\\BGI\\");
  282. setcolor(RED);
  283. DrawFn();//original
  284. shearAlongX();
  285. setcolor(BLUE);
  286. DrawFn();//Xshear
  287. shearAlongY();
  288. setcolor(GREEN);
  289. DrawFn();//Yshear
  290. getch();
  291.  
  292. }