JAVA-MANI.BLOGSPOT.COM
Saturday, July 5, 2008
To rotate things, we need to convert polar to cartesian coordinates:
x = r * Math.cos(theta); and y = r * Math.sin(theta);
Polar coordinates (r, theta) are just another way of specifying points in a 2D plane, where r represents the distance of a point from the center and theta the angle from the horizontal axis (x-axis) through the center. The following applet shows this principle in a minimized form, it rotates a hand around the center and displays the angle accordingly.


//Sourcecode

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

public class Project40 extends Applet implements Runnable
{
Thread runner;
Image Buffer;
Graphics gBuffer;
int angle;

public void init()
{
//create graphics buffer, the size of the applet
Buffer=createImage(size().width,size().height);
gBuffer=Buffer.getGraphics();
}

public void start()
{
if (runner == null)
{
runner = new Thread (this);
runner.start();
}
}

public void stop()
{
if (runner != null)
{
runner.stop();
runner = null;
}
}

public void run()
{
while(true)
{
try {runner.sleep(250);}
catch (Exception e) { }

repaint();
}
}

void drawStuff()
{
//paint background black
gBuffer.setColor(Color.black);
gBuffer.fillRect(0,0,size().width,size().height);

//get the center of the applet
Point p=new Point(size().width/2, size().height/2);
//define the hand length
int LENGTH=70;

//calculate the vector, using the constant Pi
double vector = angle * Math.PI*2 / 360.0;

int vx=(int)(p.x+LENGTH*Math.sin(vector));
int vy=(int)(p.y-LENGTH*Math.cos(vector));

gBuffer.setColor(Color.yellow);
//the hand
gBuffer.drawLine(p.x, p.y, vx, vy);
//the round "axis"
gBuffer.drawOval(p.x-6,p.y-6,12,12);

//display the angle in degrees
gBuffer.setFont(new Font("Helvetica",Font.PLAIN,13));
gBuffer.drawString("Angle="+angle+"°",10,20);

//increase the angle, to move the hand
if(angle<360)
angle++;
else
angle=0;
}

public void update(Graphics g)
{
paint(g);
}

public void paint(Graphics g)
{
drawStuff();
g.drawImage (Buffer,0,0, this);
}
}

0 comments:

SUBSCRIBE VIA eMAIL

Enter your email address:

Delivered by FeedBurner

Recent Posts

Firefox 3

Counter

internet companies

Live Traffic Map

Subscribe Now