Showing posts with label ALGORITHM. Show all posts
Showing posts with label ALGORITHM. Show all posts

Tuesday, October 29, 2013

IMPLEMENTATION OF BRESNHAM LINE DRAWING ALGORITHM IN JAVA

/*
DATE:29TH JULY 2013
TITLE:IMPLEMENTATION OF BRESNHAM LINE DRAWING ALGORITHM IN JAVA
*/

import java.applet.*;
import java.awt.*;
import java.util.*;

public class bresnham extends Applet
{
    double x1,y1,x2,y2;
    double dx,dy,steps,x,y,k;

    Scanner sc=new Scanner(System.in);
    double xc,yc;
   
    public bresnham(){
    System.out.println("ENTER X1 Y1");
    x1=sc.nextDouble();
    y1=sc.nextDouble();
    System.out.println("ENTER X2 Y2");
    x2=sc.nextDouble();
    y2=sc.nextDouble();
    }
  
    public void paint(Graphics g)
    {
    int ch=6;
            dx=Math.abs(x2-x1);
        dy=Math.abs(y2-y1);
        x=x1;
        y=y1;
        double e=(2*dy)-(dx);
        int i=1;
        //THIS PROGRAM IS CODED BY TG6483
        one: for(int j=10;ch==6;j++)
        {
            g.fillOval((int)x,(int)y,5,5);
            while(e>=0)
            {
                y=y+1;
                e=e-(2*dx);
            }
            x=x+1;
            e=e+(2*dy);
            i++;
            if(i<=dx)
            ch=6;
            else
            break one;
        }
    }
}
/*<applet code="bresnham.class" width="1000" height="1000">
 </applet>*/
 /*
 OUTPUT:
 bash-3.00$ appletviewer bresnham.java
ENTER X1 Y1
500
200
ENTER X2 Y2
200
600
*/


Monday, October 28, 2013

DIJKSTRA'S ALGORITHM IN JAVA

/*
TOPIC: dijkstra's algorithm in java
*/
import java.util.*;

public class dij
{
        public static void main(String args[])
        {
                int d[][]={{0,9,3,0,0,0},
                           {2,0,6,5,3,0},
                           {3,6,0,0,1,0},
                           {0,5,0,0,2,2},
                           {0,3,1,1,0,4},
                           {0,0,0,2,4,0}};
                int vi[][]=new int[6][6];

                Vector v=new Vector();

                int s=0,de=5,c=0,cost=-1,co=0,temp=0;

                while(de!=c)
                {
                        for(int i=-1;i<=5;i++)
                        {
                                while(cost<=0)
                                {cost=d[++i][c]; temp=i;}

                                if(d[de][c]>0 && vi[de][c]==0)
                                { cost=d[de][c];  vi[de][c]=1; temp=de;   break;}

                                else
                                {
                                if(d[i][c]!=0 && d[i][c]<cost && vi[i][c]==0)
                                        { cost=d[i][c]; vi[i][c]=1;  temp=i; }
                                }

                        }
                        c=temp;
                        co=co+cost;
                        cost=-1;
                        v.add(c+1);

                }

                System.out.print("\nCost is : "+co);
                System.out.println("\nPath is: ");
                System.out.print(s+1+"  ");
                                Enumeration e=v.elements();
                                while(e.hasMoreElements())
                                System.out.print(e.nextElement()+"  ");
                                System.out.print("");
        }

}
/*
Cost is : 9
Path is:
1  2  5  6
*/

Saturday, October 26, 2013

SUTHERLAND HODGEMAN POLYGON CLIPPING ALGORITHM IN JAVA

/*
TOPIC: SUTHERLAND HODGEMAN POLYGON CLIPPING
*/

import java.awt.*;
import java.applet.*;
import java.math.*;
import java.io.*;
import java.util.*;

public class Polyclip extends Applet
{

Scanner d=new Scanner(System.in);
public void paint(Graphics g)
{
int a[];
int b[];
int k=0;
System.out.println("Enter no. of points ");
int n=d.nextInt();
a=new int[n];
b=new int[n];
for(int i=0;i<n;i++)
{
System.out.println("Enter value of x : ");
a[i]=d.nextInt();
System.out.println("Enter value of y : ");
b[i]=d.nextInt();
}
g.drawPolygon(a,b,n);

System.out.println("Enter value of x(min) : ");
int xmn=d.nextInt();
System.out.println("Enter value of y(min) : ");
int ymn=d.nextInt();
System.out.println("Enter value of x(max) : ");
int xmx=d.nextInt();
System.out.println("Enter value of y(max) : ");
int ymx=d.nextInt();

g.drawLine(xmn,ymn,xmx,ymn);
g.drawLine(xmn,ymx,xmx,ymx);
g.drawLine(xmn,ymn,xmn,ymx);
g.drawLine(xmx,ymn,xmx,ymx);

for(int i=0;i<4;i++)
{
if(b[i]>ymx)
{
int temp=b[i];
b[i]=ymx;
a[i]= a[i] +(((a[i+1]-a[i])/(b[i+1]-temp))*(b[i]-temp));
}
else if(b[i]<ymn)
{
int temp=b[i];
b[i]=ymn;
a[i]= a[i] +(((a[i+1]-a[i])/(b[i+1]-temp))*(b[i]-temp));

 }
else if(a[i]>xmx)
{
 int temp=a[i];
 a[i]=xmx;
 b[i]=b[i]+(((b[i+1]-b[i])/(a[i+1]-a[i]))*(a[i]-temp));
}
else if(a[i]<xmn)
{
 if(a[i]==a[i+1])
 {
 k=a[0];
a[i]=xmn;
b[i]=b[i];
 }
else  if(a[i+1]<xmn)
  {
   a[i]=xmn;
b[i]=ymx;
}
 else
{
int temp=a[i];
 a[i]=xmn;
 b[i]=b[i]+(((b[i+1]-b[i])/(a[i+1]-a[i]))*(a[i]-temp));
 }
}
 }
if(b[n-1]>ymx)
{
int temp=b[n-1];
b[n-1]=ymx;
a[n-1]= a[n-1]+(((a[0]-a[n-1])/(b[0]-temp))*(b[n-1]-temp));
}
else if(b[n-1]<ymn)
{
int temp=b[n-1];
b[n-1]=ymn;
a[n-1]= a[n-1] +(((a[0]-a[n-1])/(b[0]-temp))*(b[n-1]-temp));

 }
else if(a[n-1]>xmx)
{
 int temp=a[n-1];
 a[n-1]=xmx;
 b[n-1]=b[n-1]+(((b[0]-b[n-1])/(a[0]-a[n-1]))*(a[n-1]-temp));
}
else if(a[n-1]<xmn)
{
 if(a[n-1]==a[0])
 {
 int temp=a[n-1];
a[n-1]=xmn;
b[n-1]=ymn;
 }
else if(a[0]<xmn)
  {
   a[n-1]=xmn;
   b[n-1]=ymx;
}
 else
{
 int temp=a[n-1];
 a[n-1]=xmn;
 b[n-1]=b[n-1]+(((b[0]-b[n-1])/(k-a[n-1]))*(a[n-1]-temp));
 }
 }

for(int i=0;i<n;i++)
{
a[i]=a[i]+400;
b[i]=b[i]+400;
}
g.drawPolygon(a,b,n);
ymn+=400;
ymx+=400;


xmn+=400;
xmx+=400;


g.drawLine(xmn,ymn,xmx,ymn);
g.drawLine(xmn,ymx,xmx,ymx);
g.drawLine(xmn,ymn,xmn,ymx);
g.drawLine(xmx,ymn,xmx,ymx);

}
}

/*
<applet code="Polyclip.class" width="1000" height="1000">
</applet>
*/

LIYAN BASKY LINE CLIPPING ALGORITHM IN JAVA

/*
Topic-LIYAN BASKY LINE CLIPPING ALGORITHM IN JAVA
*/
import java.awt.*;
import java.applet.*;
import java.math.*;
import java.io.*;
import java.util.*;

public class LB extends Applet
{
Scanner d=new Scanner(System.in);
 public void paint(Graphics g)
 {
  System.out.println("enter value of xmin");
  int xmin=d.nextInt();
   System.out.println("enter value of ymin");
  int ymin=d.nextInt();
  System.out.println("enter value of xmax");
  int xmax=d.nextInt();
  System.out.println("enter value of ymax");
  int ymax=d.nextInt();
  int p[]=new int[4];
  int q[]=new int[4];
  System.out.println("enter value of x1");
  int x1=d.nextInt();
System.out.println("enter value of y1");
  int y1=d.nextInt();
  System.out.println("enter value of x2");
  int x2=d.nextInt();
  System.out.println("enter value of y2");
  int y2=d.nextInt();
  g.drawLine(xmin,ymin,xmin,ymax);
  g.drawLine(xmin,ymax,xmax,ymax);
  g.drawLine(xmax,ymax,xmax,ymin);
  g.drawLine(xmax,ymin,xmin,ymin);
  g.drawLine(x1,y1,x2,y2);
  p[0]=-(x2-x1);
  p[1]=x2-x1;
  p[2]=-(y2-y1);
  p[3]=y2-y1;
  q[0]=x1-xmin;
  q[1]=xmax-x1;
  q[2]=y1-ymin;
  q[3]=ymax-y1;
  float t1=0,t2=1;
  int flag=0;
  for(int i=0;i<4;i++)
  {
   if(p[i]==0)
   {
    if(q[i]>=0)
    {
     if(i<2)
     {
      if(y1<ymin)
       y1=ymin;
      if(y2>ymax)
       y2=ymax;
     }
     if(i>1)
     {
      if(x1<xmin)
      x1=xmin;
      if(x2>xmax)
      x2=xmax;
     }
     flag=1;
     g.drawLine(x1,y1,x2,y2);
    }
   }
  }
  if(flag==0)
  {
   for(int i=0;i<4;i++)
   {
    float t=(float)q[i]/(float)p[i];
    if(p[i]<0)
    {
     if(t1<t)
     t1=t;
    }
    else
    {
     if(t2>t)
     t2=t;
    }
   }
  if(t1<t2)
  {
   int xx1=(int)(x1+t1*p[1]);
   int xx2=(int)(x1+t2*p[1]);
   int yy1=(int)(y1+t1*p[3]);
   int yy2=(int)(y1+t2*p[3]);
  xmin =xmin + 200;
   ymin =ymin + 400;
  xmax =xmax + 200;
  ymax =ymax + 400;
   xx1 =xx1 + 200;
   xx2 =xx2 + 200;
   yy1 =yy1 + 400;
   yy2 =yy2 + 400;
    g.drawLine(xmin,ymin,xmin,ymax);
  g.drawLine(xmin,ymax,xmax,ymax);
  g.drawLine(xmax,ymax,xmax,ymin);
  g.drawLine(xmax,ymin,xmin,ymin);
  g.drawLine(xx1,yy1,xx2,yy2);
  }
  }
 }
}
/*
<applet code="LB.class" width=700 height=700>
</applet>
*/



COHEN-SUTHERLAND LINE CLIPPING ALGORITHM IN JAVA

/*
COHEN-SUTHERLAND ALGORITHM
*/
import java.applet.*;
import java.awt.*;
import java.util.*;
public class CohenS extends Applet
{
    Scanner sc=new Scanner(System.in);
            int xmax,ymax,xmin,ymin;
            public int[] set(int x,int y)
            {
                        int a[]=new int[4];
                        if(x<xmin)
                                    a[3]=1;
                        else
                                    a[3]=0;
                        if(x>xmax)
                                    a[2]=1;
                        else
                                    a[2]=0;
                        if(y<ymin)
                                    a[0]=1;
                        else
                                    a[0]=0;
                        if(y>ymax)
                                    a[1]=1;
                        else
                                    a[1]=0;
                        return a;
            }
            void setminmax()
            {
            System.out.println("Enter xmax of the Rectangle");
            xmax=sc.nextInt();
            System.out.println("Enter ymax of the Rectangle");
            ymax=sc.nextInt();
            System.out.println("Enter xmin of the Rectangle");
            xmin=sc.nextInt();
            System.out.println("Enter ymin of the Rectangle");
            ymin=sc.nextInt();
           
            }
            boolean check(int a[])
            {
                        for(int i=0;i<a.length;i++)
                                    if(a[i]==1)
                                                return false;
                        return true;
            }
            int[] produceXY(int i,int x1,int y1,float m)
            {
                        int a[]=new int [2];
                        float x=0,y=0;
                        switch(i)
                        {
                                    case 0:
                                                x=xmin;
                                                y=y1+m*(x-x1);
                                                break;
                                  
                                    case 1:
                                                x=xmax;         
                                                y=y1+m*(x-x1);
                                                break;
                                    case 3:
                                                y=ymin;
                                                x=x1+(y-y1)/m;
                                                break;
                                    case 2:
                                                y=ymax;
                                                x=x1+(y-y1)/m;
                                                break;
                        }
                        a[0]=(int)x;
                        a[1]=(int)y;
                        return a;
            }
            boolean doAnd(int a[],int b[])
            {
                        for(int i=0;i<a.length;i++)
                        {
                                    int k=a[i]&b[i];
                                    if(k==1)
                                                return false;
                        }
                        return true;
            }
            public void paint(Graphics g)
            {
                setminmax();
                        g.drawRect(xmin,ymin,xmax-xmin,ymax-ymin);
                       g.drawRect(xmin+100,ymin,xmax-xmin,ymax-ymin);
                        int a[][]=new int[2][4];
                        int b[][]=new int[2][4];
                        int c[]=new int[2];
                        int c1=20;
                        int x1,y1,x2,y2;
                        System.out.println("Enter x1 of the line");
                x1=sc.nextInt();
                    System.out.println("Enter y1");
                    y1=sc.nextInt();
                    System.out.println("Enter x2");
                    x2=sc.nextInt();
                    System.out.println("Enter y2");
                y2=sc.nextInt();
           
                        float m=(y2-y1)*1.0f/(x2-x1);
                       
                        g.drawLine(x1,y1,x2,y2);
                        a[0]=set(x1,y1);
                        a[1]=set(x2,y2);
                        if(check(a[0])&&check(a[1]))
                        {
                                    g.drawLine(x1,y1,x2,y2);
                        }
                        else
                        {
                                    if( doAnd(a[0]  , b[1]) )
                                    {
                                                for(int i=a[0].length-1;i>=0;i--)
                                                {
                                                            if(a[0][i]==1)

                                                            {
                                                                        c=produceXY(a[0].length-1-i,x1,y1,m);
                                                                        b[0]=set(c[0],c[1]);
                                                         
                                                                        if(check(b[0]))
                                                                        {
                                                                                    x1=c[0];
                                                                                    y1=c[1];
                                                                                    break;
                                                                        }
                                                                        c1+=20;
                                                            }
                                                }
                                                for(int i=a[0].length-1;i>=0;i--)
                                                {
                                                            if(a[1][i]==1)
                                                            {
                                                                        c=produceXY(a[0].length-1-i,x1,y1,m);
                                                                        b[1]=set(c[0],c[1]);
                                              
                                                                        if(check(b[1]))
                                                                        {
                                                                                    x2=c[0];
                                                                                    y2=c[1];
                                                                                    break;
                                                                        }
                                                                        c1+=20;
                                                            }
                                                }
                                                g.drawLine(x1+100,y1,x2+100,y2);
                                    }
                        }
            }
}
/*<applet code="CohenS.class" width=1000 height=1000>
</applet>*/



IMPLEMENTATION OF DDA LINE DRAWING ALGORITHM

/*
NAME:TEJAS J GHALSASI
DATE:29TH JULY 2013
TITLE:IMPLEMENTATION OF DDA LINE DRAWING ALGORITHM IN JAVA
*/
import java.applet.*;
import java.awt.*;
import java.util.*;

public class dda extends Applet
{
double x1,y1,x2,y2;
    double dx,dy,steps,x,y,k;

    Scanner sc=new Scanner(System.in);
    double xc,yc;
   
    public dda(){
    System.out.println("ENTER X1 Y1");
    x1=sc.nextDouble();
    y1=sc.nextDouble();
    System.out.println("ENTER X2 Y2");
    x2=sc.nextDouble();
    y2=sc.nextDouble();
    }
  
    public void paint(Graphics g)
    {
            try{
            dx=x2-x1;
        dy=y2-y1;
    if(Math.abs(dx)>Math.abs(dy))
        steps=Math.abs(dx);
        else
        steps=Math.abs(dy);
        xc=(dx/steps);
        yc=(dy/steps);
        x=x1;
        y=y1;
    //CODED BY TEJAS GHALSASI
        for(k=1;k<=steps;k++)
        {
            x=x+xc;
            y=y+yc;
            g.fillOval((int)x,(int)y,5,5);
           
        }
    }catch(Exception e){}
    }
}
/*<applet code="dda.class" width="1000" height="1000">
 </applet>*/

 /*
 OUTPUT:
 bash-3.00$ javac dda.java
bash-3.00$ appletviewer dda.java
ENTER X1 Y1
500
200
ENTER X2 Y2
600
500
*/

Friday, October 25, 2013

TO IMPLEMENT LEAKY BUCKET ALGORITHM IN JAVA

/*
TOPIC:TO IMPLEMENT LEAKY BUCKET ALGORITHM IN JAVA
filename:Licky.java
*/
import java.io.*;
import java.util.*;

class Queue
{
int q[],f=0,r=0,size;
void insert(int n)
{
Scanner in = new Scanner(System.in);
q=new int[10];
for(int i=0;i<n;i++)
{
System.out.print("\nEnter " + i + " element: ");
int ele=in.nextInt();

if(r+1>10)
{
System.out.println("\nQueue is full \nLost Packet: "+ele);
break;
}
else
{
r++;
q[i]=ele;
}
}
}

void delete()
{
Scanner in = new Scanner(System.in);
Thread t=new Thread();
if(r==0)
System.out.print("\nQueue empty ");

        else
{
        for(int i=f;i<r;i++)
{
try
{
                t.sleep(1000);
}
catch(Exception e){}
System.out.print("\nLeaked Packet: "+q[i]);
f++;
}
}
System.out.println();
        }

}

class Licky extends Thread
{
public static void main(String ar[])throws Exception
{
Queue q=new Queue();
Scanner src=new Scanner(System.in);
System.out.println("\nEnter the packets to be sent:");
int size=src.nextInt();
q.insert(size);
q.delete();

}
}

/*
OUTPUT

bash-3.00$ javac Licky.java
bash-3.00$ java Licky

Enter the packets to be sent:
11

Enter 0 element: 1

Enter 1 element: 0

Enter 2 element: 2

Enter 3 element: 3

Enter 4 element: 4

Enter 5 element: 5

Enter 6 element: 6

Enter 7 element: 7

Enter 8 element: 8

Enter 9 element: 9

Enter 10 element: 10

Queue is full
Lost Packet: 10

Leaked Packet: 1
Leaked Packet: 0
Leaked Packet: 2
Leaked Packet: 3
Leaked Packet: 4
Leaked Packet: 5
Leaked Packet: 6
Leaked Packet: 7
Leaked Packet: 8
Leaked Packet: 9
bash-3.00$
*/

TO IMPLEMENT RSA ENCRYPTION ALGORITHM IN JAVA

/*

TITLE: TO IMPLEMENT RSA ENCRYPTION ALGORITHM IN JAVA
RSA.JAVA
*/
import java.util.*;
import java.io.*;
class RSA
{
         public static void main(String args[])
{
double i=0,e=0;

double p=7,q=11,n=p*q,fi=(p-1)*(q-1);
System.out.print("\nThe two prime numbers are :");
System.out.print("\np= "+p+"\tq= "+q);
System.out.print("\nn=p*q= "+n);
System.out.print("\nfi(n)= "+fi);
CoPrime c=new CoPrime();

for(i=2;!c.coprime(fi,i)&&i<fi;i++)
{
e=i;
}
e=13;
System.out.print("\n\nGenerated e= "+e);
double d=0;
while(!((e*d)%fi==1))
{
d++;
}
System.out.print("\n\nd="+d);

System.out.print("\n\n\nPublic Key= (" + e + " , " + n + ")");
System.out.print("\nPrivate Key= (" + d + ")");


System.out.print("\n\nEnter the plaintext: ");
Scanner in=new Scanner(System.in);
int plaintext=in.nextInt();
double C=Math.pow(plaintext,e)%n;
System.out.print("CipherText= "+C);


System.out.print("\n\n\nRECEIVER");

System.out.print("\nEnter the CipherText: ");
double Ci=in.nextDouble();
double m=1;
for(i=0;i<d;i++)
m=m*Ci%n;
m=m%n;
System.out.println("\nPlaintext= "+m);
}
}
class CoPrime
{
double hcf(double a,double h)
{
double temp;
while(true)
{
temp=a%h;
if(temp==0)
return h;
a=h;
h=temp;
}
}

boolean coprime(double c,double d)
{
double gcd=hcf(c,d);
if(gcd==1)
return true;

return false;
}
}
/*
OUTPUT:
The two prime numbers are :
p= 7.0  q= 11.0
n=p*q= 77.0
fi(n)= 60.0

Generated e= 13.0

d=37.0


Public Key= (13.0 , 77.0)
Private Key= (37.0)

Enter the plaintext: 9
CipherText= 58.0


RECEIVER
Enter the CipherText: 58

Plaintext= 9.0
*/