|
- Applets : 3D : Kugel -
Eine rotierende Kugel als Java-Applet.
Kugel.java
import java.awt.*;
import java.awt.geom.*;
import java.applet.*;
public class Kugel extends Applet {
public void init() {
setBackground(new Color(255,255,255));
}
Image buffer;
Graphics2D gBuffer;
// Neigung um 23 Grad
AffineTransform at = AffineTransform.getRotateInstance(Math.toRadians(-23),200,200);
int rot = 0;
public void paint(Graphics g) {
// Double-Buffering
if (buffer==null) {
buffer=createImage(this.getSize().width, this.getSize().height);
gBuffer=(Graphics2D)buffer.getGraphics();
}
gBuffer.setTransform(at);
// Antialiasing
gBuffer.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
gBuffer.setColor(new Color(0,0,220));
gBuffer.fillOval(51,51,298,298);
gBuffer.setColor(new Color(255,255,255));
// Kugelposition: 50,50, Durchmesser: 300
for (int i=1;i<10;i++) {
// Breitengrade
double y = 150*Math.cos(Math.toRadians(i*10));
gBuffer.drawLine(
200-(int)(Math.sqrt(150*150-y*y)),200-(int)y,
200+(int)(Math.sqrt(150*150-y*y)),200-(int)y);
gBuffer.drawLine(
200-(int)(Math.sqrt(150*150-y*y)),200+(int)y,
200+(int)(Math.sqrt(150*150-y*y)),200+(int)y);
// Längengrade
gBuffer.drawArc(
50+(int)((300-(300*Math.cos(Math.toRadians(rot+i*10-10))))/2),50,
(int)(300*Math.cos(Math.toRadians(rot+i*10-10))),300,90,180);
gBuffer.drawArc(
50+(int)((300-(300*Math.sin(Math.toRadians(rot+i*10-10))))/2),50,
(int)(300*Math.sin(Math.toRadians(rot+i*10-10))),300,90,-180);
}
if (rot<9) rot++; // Rotation um 1 Grad
else rot = 0;
g.drawImage (buffer, 0, 0, this);
// Verzögerung
try {Thread.sleep(10);}
catch (InterruptedException e) {}
repaint();
}
public void update(Graphics g) {paint(g);}
}
Download Kugel.zip (Applet und Code, ca. 3 kb)
© 2001-2004 Albert Kluge - Alle Rechte vorbehalten
Impressum | Datenschutz | Nutzung | eMail
|