CG Lab Using JAVA
CG Lab Using JAVA
C:\jdk1.3\bin>edit dda.java
//DDA Algorithm
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.lang.*;
/* <applet code="dda" width=500 height=500> </applet> */
public class dda extends Applet implements ActionListener {
Label lt,lx1,ly1,lx2,ly2;
TextField tx1,ty1,tx2,ty2;
Button bdda;
public void init() {
setFont(new Font("arial",Font.BOLD,24));
lt=new Label("DDA Algorithm");
lx1=new Label("Enter x1");
lx2=new Label("Enter x2");
ly1=new Label("Enter y1");
ly2=new Label("Enter y2");
tx1=new TextField(10);
tx2=new TextField(10);
ty1=new TextField(10);
ty2=new TextField(10);
bdda=new Button("Draw Line DDA");
add(lt);
add(lx1);
add(tx1);
add(lx2);
add(tx2);
add(ly1);
add(ty1);
add(ly2);
add(ty2);
add(bdda);
bdda.addActionListener(this); }
public void actionPerformed(ActionEvent ae)
{
String str=ae.getActionCommand();
repaint();
}
public void paint(Graphics g)
{
double dx,dy,steps,x,y,k;
double xc,yc,x1=10,x2=0,y1=0,y2=0;
x1=Double.parseDouble(tx1.getText());
x2=Double.parseDouble(tx2.getText());
y1=Double.parseDouble(ty1.getText());
y2=Double.parseDouble(ty2.getText());
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;
for(k=1;k<=steps;k++)
{
x=x+xc;
y=y+yc;
g.fillOval((int)x,(int)y,5,5);
}
}
}
C:\jdk1.3\bin>javac dda.java
OUTPUT
C:\jdk1.3\bin>appletviewer dda.java
2. Draw a circle using Bresenham‟s algorithm.
C:\jdk1.3\bin>edit midptcircle.java
//Mid Point Circle Algorithm
import java.math.*;
import java.awt.*;
import java.applet.*;
/* <applet code="midptcircle" width=500 height=500> </applet> */
public class midptcircle extends Applet {
public void paint(Graphics g) {
int r=150;
int d=(5/4)*r;
int x=0;
int y=r;
do
{
g.setColor(Color.red);
g.drawLine(y+200,x+200,y+200,x+200);
g.drawLine(x+200,y+200,x+200,y+200);
g.drawLine(x+200,-y+200,x+200,-y+200);
g.drawLine(y+200,-x+200,y+200,-x+200);
g.drawLine(-y+200,-x+200,-y+200,-x+200);
g.drawLine(-x+200,-y+200,-x+200,-y+200);
g.drawLine(-x+200,y+200,-x+200,y+200);
g.drawLine(-y+200,x+200,-y+200,x+200);
if(d<0)
d=d+2*x+1;
else
{
d=d+2*(x-y)+1;
y=y-1;
}
x=x+1;
}
while(x<y); } }
C:\jdk1.3\bin>javac midptcircle.java
OUTPUT
C:\jdk1.3\bin>appletviewer midptcircle.java
3. Draw a line using Bresenham’s algorithm.
C:\jdk1.3\bin>edit bline.java
//Bresenhams Line Drawing Algorithm
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
/* <applet code="bline" width=500 height=500> </applet> */
public class bline extends Applet implements ActionListener
{
Label lt,lx1,ly1,lx2,ly2;
TextField tx1,ty1,tx2,ty2;
Button bline;
public void init() {
lt=new Label("Bresenhams Line algorithm");
lx1=new Label("enter x1");
lx2=new Label("enter x2");
ly1=new Label("enter y1");
ly2=new Label("enter y2");
tx1=new TextField(10);
tx2=new TextField(10);
ty1=new TextField(10);
ty2=new TextField(10);
bline=new Button("Draw Line Algorithm");
add(lt);
add(lx1);
add(tx1);
add(lx2);
add(tx2);
add(ly1);
add(ty1);
add(ly2);
add(ty2);
add(bline);
bline.addActionListener(this); }
public void actionPerformed(ActionEvent ae)
{
String str=ae.getActionCommand();
repaint();
}
public void paint(Graphics g)
{
int k;
double x,y,dx,dy,p,x1=0,x2=0,y1=0,y2=0;
int x3=200,y3=300,x4=600,y4=400;
x1=Double.parseDouble(tx1.getText());
x2=Double.parseDouble(tx2.getText());
y1=Double.parseDouble(ty1.getText());
y2=Double.parseDouble(ty2.getText());
dx=Math.abs(x2-x1);
dy=Math.abs(y2-y1);
x=x1;
y=y1;
p=2*dy-dx;
g.fillOval(200,500,5,5);
for(k=0;k<dx;k++)
{
if(p<0)
{
g.fillOval((int)x++,(int)y,5,5);
p=p+(2*dy);
}
else
{
g.fillOval((int)x++,(int)y++,5,5);
p=p+(2*(dy-dx));
}
} } }
C:\jdk1.3\bin>javac bline.java
OUTPUT
C:\jdk1.3\bin>appletviewer bline.java
4. Scale an image.
C:\jdk1.3\bin>edit scaling2d.java
//SCALING 2D
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
/* <applet code="scaling2d" width=300 height=500> </applet> */
public class scaling2d extends Applet implements ActionListener
{
Label lt,lx,ly;
TextField sx,sy;
Button scaling;
public void init()
{
setFont(new Font("Arial",Font.BOLD,24));
lt=new Label("2d Transformation Scaling");
lx=new Label("2d Scaling Height position");
ly=new Label("2d Scaling Width position");
sx=new TextField(10);
sy=new TextField(10);
scaling=new Button("Scaling");
setFont(new Font("Arial",Font.PLAIN,12));
add(lt);
add(lx);
add(sx);
add(ly);
add(sy);
add(scaling);
scaling.addActionListener(this);
}
public void actionPerformed(ActionEvent ae)
{
String str=ae.getActionCommand();
repaint();
}
public void paint(Graphics g)
{
int x,y;
x=Integer.parseInt(sx.getText());
y=Integer.parseInt(sy.getText());
g.drawString("Before Scaling",100,75);
g.drawRect(100,100,100,120);
g.drawString("After Scaling",100,250);
g.drawRect(100,300,100*x,120*y);
}
}
C:\jdk1.3\bin>javac scaling2d.java
OUTPUT
C:\jdk1.3\bin>appletviewer scaling2d.java
5. Algorithm to rotate an image.
C:\jdk1.3\bin>javac Rotation2d.java
//Rotation 2D
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.util.*;
import java.math.*;
/* <applet code="Rotation2d" width=500 height=500> </applet> */
public class Rotation2d extends Applet implements ActionListener
{
Label lt,lx1,lx2,lx3,ly1,ly2,ly3;
TextField tx1,tx2,tx3,ty1,ty2,ty3;
Button blin;
public void init()
{
setFont(new Font("Arial",Font.BOLD,24));
lt=new Label("Roatation");
lx1=new Label("Enter x1");
lx2=new Label("Enter x2");
lx3=new Label("Enter x3");
ly1=new Label("Enter y1");
ly2=new Label("Enter y2");
ly3=new Label("Enter y3");
tx1=new TextField(10);
tx2=new TextField(10);
tx3=new TextField(10);
ty1=new TextField(10);
ty2=new TextField(10);
ty3=new TextField(10);
blin=new Button("Rotate");
setFont(new Font("Arial",Font.PLAIN,12));
add(lt);
add(lx1);
add(tx1);
add(lx2);
add(tx2);
add(lx3);
add(tx3);
add(ly1);
add(ty1);
add(ly2);
add(ty2);
add(ly3);
add(ty3);
add(blin);
blin.addActionListener(this);
}
public void actionPerformed(ActionEvent ae)
{
String str=ae.getActionCommand();
repaint();
}
public void paint(Graphics g)
{
int i,j,k;
double r=30*3.14/180;
int x1,y1,x2,y2,x3,y3,x11,y11,x22,y22,x33,y33;
x1=Integer.parseInt(tx1.getText());
y1=Integer.parseInt(ty1.getText());
x2=Integer.parseInt(tx2.getText());
y2=Integer.parseInt(ty2.getText());
x3=Integer.parseInt(tx3.getText());
y3=Integer.parseInt(ty3.getText());
g.drawString("Original Image",200,200);
g.drawLine(x1,y1,x2,y2);
g.drawLine(x2,y2,x3,y3);
g.drawLine(x1,y1,x3,y3);
double p1[][]=new double[3][3];
int p[][]=new int[3][3];
double t[][]=new double[3][3];
t[0][0]=t[1][1]=Math.cos(r);
t[0][1]=-(Math.sin(r));
t[1][0]=Math.sin(r);
t[2][2]=1;
t[0][2]=t[1][2]=t[2][0]=t[2][1]=0;
p[0][0]=x1;
p[0][1]=x2;
p[0][2]=x3;
p[1][0]=y1;
p[1][1]=y2;
p[1][2]=y3;
p[2][0]=p[2][1]=p[2][2]=1;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
p1[i][j]=0;
for(k=0;k<3;k++)
{
p1[i][j]=p1[i][j]+t[i][k]*p[k][j];
}}
System.out.println(); }
x11=(int) p1[0][0];
x22=(int) p1[0][1];
x33=(int) p1[0][2];
y11=(int) p1[1][0];
y22=(int) p1[1][1];
y33=(int) p1[1][2];
g.drawString("Rotated Image",400,400);
g.drawLine(x11,y11,x22,y22);
g.drawLine(x22,y22,x33,y33);
g.drawLine(x11,y11,x33,y33); } }
C:\jdk1.3\bin>javac Rotation2d.java
OUTPUT
C:\jdk1.3\bin>appletviewer Rotation2d.java
10. Image Reducing and Disappear
C:\jdk1.3\bin>edit circle.java
\\Circle Disappear
import java.applet.*;
import java.awt.*;
/*
<applet code="circle" width=300 height=300>
</applet>
*/
public class circle extends Applet implements Runnable
{
Thread t;
int i=300,j=300;
public void start()
{
t=new Thread(this);
t.start();
}
public void run()
{
try{
while(i>10)
{
repaint();
Thread.sleep(250);
i+=10;
j-=10;
}
}
catch(Exception e)
{}
}
public void paint(Graphics g)
{
g.drawOval(i,i,j,j); } }
C:\jdk1.3\bin>javac circle.java
OUTPUT
C:\jdk1.3\bin>appletviewer circle.java
6. Algorithm to translate an image.
C:\jdk1.3\bin>edit translation2d.java
\\2d Transformation - Translation
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
/*
<applet code="translation2d" width=500 height=500>
</applet>
*/
public class translation2d extends Applet implements ActionListener
{
Label lt,lx,ly;
TextField tx,ty;
Button translate;
public void init()
{
lt=new Label("2d Transformation Translation");
lx=new Label("Enter Translation Left position");
ly=new Label("Enter Translation Top position");
tx=new TextField(10);
ty=new TextField(10);
translate=new Button("Translation");
add(lt);
add(lx);
add(tx);
add(ly);
add(ty);
add(translate);
translate.addActionListener(this);
}
public void actionPerformed(ActionEvent ae)
{
repaint();
}
public void paint(Graphics g)
{
int x,y;
x=Integer.parseInt(tx.getText());
y=Integer.parseInt(ty.getText());
g.drawString("Before Translation",100,75);
g.drawRect(100,200,100,120);
g.drawString("After Translation",300,250);
g.drawRect(100+x,200+y,100,120);
}
}
C:\jdk1.3\bin>javac translation2d.java
OUTPUT
C:\jdk1.3\bin>appletviewer translation2d.java
7. program for bouncing a ball
C:\jdk1.3\bin>edit movingball.java
//Bouncing Ball
import java.awt.*;
import java.applet.*;
/* <applet code="movingball" width=500 height=500>
</applet> */
public class movingball extends Applet implements Runnable
{
Thread t;
int x=0;
int y=0;
public void start()
{
t=new Thread(this);
t.start();
}
public void paint(Graphics g)
{
g.fillOval(x,y,50,50);
}
public void run()
{
try{
for(;;){
for(;;){
if(y==300)
break;
else
{
y=y+3;
x=x+3;
Thread.sleep(100);
repaint();
} }
for(;;)
{
if(y==0)
break;
else
{
y=y-5;
x=x+3;
Thread.sleep(100);
repaint();
}
}
run();
}
}
catch(InterruptedException ae)
{}
}}
C:\jdk1.3\bin>javac movingball.java
OUTPUT
C:\jdk1.3\bin>appletviewer movingball.java
8. Display Balls at Random Position
C:\jdk1.3\bin>edit dots.java
//Display Balls at Random Position
import java.awt.*;
import java.applet.*;
/* <applet code=dots width=800 height=500> </applet> */
public class dots extends Applet implements Runnable
{
int x=0,y=0;
Thread t;
Dimension d;
public void init()
{
t=new Thread(this);
t.start();
}
public void run()
{
while(true)
{
try{
repaint();
Thread.sleep(10);
}
catch(Exception e)
{}
}
}
public void paint(Graphics g)
{
d=getSize();
x=(int)(Math.random()*d.getWidth());
y=(int)(Math.random()*d.getHeight());
g.fillOval(x,y,50,50); } }
C:\jdk1.3\bin>javac dots.java
OUTPUT
C:\jdk1.3\bin>appletviewer dots.java
9. program to display an image as tiled and cascaded according to the user‟s
option
C:\jdk1.3\bin>edit Rectangle.java
//Cascade or Tile
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
/* <applet code="Rectangle" width=500 height=500> </applet> */
public class Rectangle extends Applet implements ActionListener
{
Label l1;
TextField tcho;
Button btn;
public void init()
{
l1=new Label("Enter the 1.Tile 2.Cascade");
tcho=new TextField();
btn=new Button("Draw");
add(l1);
add(tcho);
add(btn);
btn.addActionListener(this);
}
public void actionPerformed(ActionEvent ae)
{
repaint();
}
public void paint (Graphics g)
{
if(Integer.parseInt(tcho.getText())==1)
{
g.drawString("Tile", 50, 50);
g.drawRect(78, 86, 92, 92);
g.drawRect(296, 86, 92, 92);
g.drawRect(80, 254, 92, 92);
g.drawRect(303, 254, 92, 92); }
else
{
g.drawString("Cascade", 50, 50);
g.drawRect(60, 90, 100, 100);
g.drawRect(90, 120, 100, 100);
g.drawRect(120, 150, 100, 100);
g.drawRect(150, 180, 100, 100);
}
}
}
C:\jdk1.3\bin>javac Rectangle.java
OUTPUT
C:\jdk1.3\bin>appletviewer Rectangle.java