0% found this document useful (0 votes)
77 views

CG Lab Using JAVA

The document provides code examples for drawing geometric shapes and transforming images using various computer graphics algorithms: 1. It shows code for drawing a line between two points using the DDA line drawing algorithm in 3 sentences or less. 2. It provides code for drawing a circle given a radius using the midpoint circle algorithm. 3. Code is presented for drawing a line between two points using the Bresenham's line algorithm. 4. An example is given for scaling an image by a given factor horizontally and vertically. 5. Pseudocode is outlined for rotating an image about a point by a given angle using a 2D rotation transformation matrix. 6. Finally, code demonstrates gradually reducing
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
77 views

CG Lab Using JAVA

The document provides code examples for drawing geometric shapes and transforming images using various computer graphics algorithms: 1. It shows code for drawing a line between two points using the DDA line drawing algorithm in 3 sentences or less. 2. It provides code for drawing a circle given a radius using the midpoint circle algorithm. 3. Code is presented for drawing a line between two points using the Bresenham's line algorithm. 4. An example is given for scaling an image by a given factor horizontally and vertically. 5. Pseudocode is outlined for rotating an image about a point by a given angle using a 2D rotation transformation matrix. 6. Finally, code demonstrates gradually reducing
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 29

1.

Draw a line using DDA algorithm :

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

You might also like