import java.awt.*; import java.applet.*; public class Circle extends Applet implements Runnable{ private int spicchi = 12; //number of parts in which the circle is divided private int incr = 1; // increment at evry loop tp delta private double delta = 0; //distance in radians to the 2nd point of each line private double deltaInGrades = 1; private int sleep = 1000/10; public void init() { } public void start() { //System.out.println("start()"); Thread t = new Thread(this); t.start(); } public void stop() { } public void destroy() { } public void paint(Graphics g) { double x1, y1, x2, y2; double alfa; alfa = (double)360/spicchi; alfa = toRadians(alfa); // now alfa is in radians deltaInGrades += incr; delta = toRadians(deltaInGrades); deltaInGrades = toDegrees(delta); if(deltaInGrades > 360) { delta = toRadians(deltaInGrades); } //System.out.println("Math.toGrades(alfa) = " + Math.toDegrees(alfa)); //System.out.println("Math.sin(alfa) = " + Math.sin(alfa)); //System.out.println("150*Math.sin(alfa) = " + 150*Math.sin(alfa)); g.drawOval(0, 0, 300, 300); for(int i = 0; i< spicchi; ++i) { x1 = Math.cos(alfa*i); y1 = Math.sin(alfa*i); x2 = Math.cos(alfa*i+delta); y2 = Math.sin(alfa*i+delta); x1 *= 150; y1 *= 150; x2 *= 150; y2 *= 150; /*System.out.println("(2)x1 = " + x1 + " y1 = " + y1 + " x2 = " + x2 + " y2 = " + y2 ); */ drawLine(g, (int)x1, (int)y1, (int)x2, (int)y2); } } private double toRadians(double angdeg) { double p = 3.141592654, back; angdeg = angdeg % 360; back = (angdeg * p)/180; return back; } private double toDegrees(double angrad) { double p = 3.141592654, back; angrad = angrad % (2*p); back = (180*angrad) / p; return back; } private void drawLine(Graphics g, int x1, int y1, int x2, int y2) { x1 += 150; x2 += 150; y1 = 150 - y1; y2 = 150 - y2; g.drawLine(x1, y1, x2, y2); } public void run() { while(true) { repaint(); try { Thread.sleep(sleep); } catch (InterruptedException e) { } } } }