Sunday 23 June 2013

Midpoint ellipse drawing algorithm

/* compiler- Turbo c++ author- Mangilal Sharma =================================
*/ 
#include<graphics.h>
#include<conio.h>
#include<stdio.h>

void plotpoints(int cx, int cy, int x, int y)
{
    putpixel(cx + x, cy + y, 4);
    putpixel(cx - x, cy + y, 4);
    putpixel(cx + x, cy - y, 4);
    putpixel(cx - x, cy - y, 4);
}

void main()
{
    int cx, cy, rx, ry;

    printf("Enter the center ");
    scanf("%d%d", &cx, &cy);
    printf("x radius : ");
    scanf("%d", &rx);
    printf("y radius : ");
    scanf("%d", &ry);

    long rx2 = (long) rx * rx;
    long ry2 = (long) ry * ry;
    long trx2 = 2 * rx2;
    long try2 = 2 * ry2;
    long p, x = 0, y = ry;
    long px = 0;
    long py = trx2 * y;

    p = (long) ((ry2 - (rx2 * ry) + (0.25 * rx2)) + 0.5);

    int gd = DETECT, gm = DETECT;
    initgraph(&gd, &gm, "");
    cleardevice();

    putpixel(cx, cy, 15);

    while (px < py) {
    plotpoints(cx, cy, x, y);
    x++;
    px += try2;
    if (p < 0)
        p += ry2 + px;
    else {
        y--;
        py -= trx2;
        p += ry2 + px - py;
    }
    }
    py = trx2 * y;
    px = try2 * x;
    p = (long) ((ry2 * (x + 0.5) * (x + 0.5) + rx2 * (y - 1) * (y - 1) - rx2 * ry2) + 0.5);
    while (y >= 0) {
    plotpoints(cx, cy, x, y);
    y--;
    py -= trx2;
    if (p > 0)
        p += rx2 - py;
    else {
        x++;
        px += try2;
        p += rx2 - py + px;
    }
    }

    getch();
}
/*=============================19Nov.,2010=============================*/



 

Midpoint circle drawing algorithm

/* compiler- Turbo c++ author- Mangilal Sharma =================================
Midpoint circle algorithm=================================================*/ 
#include<graphics.h>
#include<conio.h>
#include<stdio.h>

void plotpoints(int x, int y, int cx, int cy)
{
    putpixel(cx + x, cy + y, 4);
    putpixel(cx - x, cy + y, 4);
    putpixel(cx + x, cy - y, 4);
    putpixel(cx - x, cy - y, 4);
    putpixel(cx + y, cy + x, 4);
    putpixel(cx - y, cy + x, 4);
    putpixel(cx + y, cy - x, 4);
    putpixel(cx - y, cy - x, 4);
}

void main()
{
    int cx, cy, x = 0, y, r, p;
    int gd = DETECT, gm = DETECT;

    clrscr();

    printf("Enter the center \n");
    scanf("%d%d", &cx, &cy);
    printf("Enter the radius : ");
    scanf("%d", &r);

    y = r;
    p = 1 - r;

    initgraph(&gd, &gm, "");
    cleardevice();

    while (x < y) {
    plotpoints(x, y, cx, cy);
    x++;
    if (p < 0)
        p += 2 * x + 1;
    else {
        y--;
        p += 2 * (x - y) + 1;
    }
    }

    getch();

}
/*=============================19Nov.,2010=============================*/


Bresenham's line drawing algorithm

/* compiler- Turbo c++ author- Mangilal Sharma =================================*/ 
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>

void swap(int &x, int &y)
{
    int k = x;
    x = y;
    y = k;
}

void main()
{
    int gd = DETECT, gm = DETECT, x1, x2, y1, y2, dx, dy, p, k;
    float m = 0;

    clrscr();

    printf("Enter the sarting point x1 & y1\n");
    scanf("%d%d", &x1, &y1);

    printf("Enter the end point x2 & y2\n");
    scanf("%d%d", &x2, &y2);

    dx = abs(x2 - x1);
    dy = abs(y2 - y1);
    m = (float) (y2 - y1) / (x2 - x1);

    initgraph(&gd, &gm, "");
    cleardevice();

    if (fabs(m) > 1) {
    swap(x1, y1);
    swap(x2, y2);
    swap(dx, dy);
    }

    if ((x1 > x2)) {
    x1 = x2;
    y1 = y2;
    }
    p = 2 * dy - dx;
    for (k = 0; k < abs(dx); k++) {
    if (p < 0) {
        p = p + 2 * dy;
    } else {
        if (m < 0)
        y1--;
        else
        y1++;
        p = p + (2 * dy) - (2 * dx);
    }
    if (fabs(m) <= 1)
        putpixel(x1++, y1, 15);
    else
        putpixel(y1, x1++, 15);
    }

    getch();
}
/*=============================19Nov.,2010=============================*/


Saturday 22 June 2013

DDA (Digital differential analyzer) Line Drawing Algorithm

/* compiler- Turbo c++ author- Mangilal Sharma =================================
DDA (Digital differential analyzer) Line Drawing Algorithm========================*/ 
#include <graphics.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>

void main()
{

    int gd = DETECT, gm = DETECT, s, dx, dy, m, x1, y1, x2, y2;
    float xi, yi, x, y;

    clrscr();

    printf("Enter the sarting point x1 & y1\n");
    scanf("%d%d", &x1, &y1);

    printf("Enter the end point x2 & y2\n");
    scanf("%d%d", &x2, &y2);

    initgraph(&gd, &gm, "");
    cleardevice();

    dx = x2 - x1;
    dy = y2 - y1;

    if (abs(dx) > abs(dy))
    s = abs(dx);
    else
    s = abs(dy);

    xi = dx / (float) s;
    yi = dy / (float) s;

    x = x1;
    y = y1;

    putpixel(x1, y1, 4);

    for (m = 0; m < s; m++) {
    x += xi;
    y += yi;
    putpixel(x, y, 4);
    }
    getch();
}
/*=============================19Nov.,2010=============================*/


Friday 21 June 2013

Armstrong number (Entered no. is armstrong or not)

/* compiler- Turbo c++ author- Mangilal Sharma =================================*/ 
#include<stdio.h>
#include<conio.h>
#include<math.h>

void main()
{
 int n,a,b,arm=0;
 clrscr();
 printf("Enter a number: ");
 scanf("%d",&n);
 b=n;
 while(n>0)
 {
  a=n%10;
  n=n/10;
  arm=arm+pow(a,3);
 }
 printf("Entered digit's sum of the cubes is: %d\n",arm);
 if(arm==b)
 printf("Entered no. is armstrong");
 else
 printf("Entered no. is not armstrong");
 getch();
}
/*=============================19Nov.,2010=============================*/

C program to print reverse of a entered number

/* compiler- Turbo c++ author- Mangilal Sharma =================================*/ 
#include <conio.h>
#include <stdio.h>

void main()
{
 clrscr();
 int sum=0,num,a,n;
 printf("Enter No. in range of int (less than 32768): ");
 scanf("%d",&num);
 printf("Reverse of '%d' is: ",num);
 while(num>0)
 {
  a=num%10;
  sum=sum+a;
  printf("%d",a);
  num=num/10;
 }
 getch();
}
/*=============================19Nov.,2010=============================*/