import java.applet.*; import java.awt.*; //======================================== //============================================ public class Graphica extends Applet implements Runnable { Graphics g; Color bgColor; int TOPX=100; //koordinatq kreplenija int TOPY=10; //analogixno int X = 0; // vspomogatelnqe peremennqe, int Y = 0; // koordinatq sharika int quant=50; //refresh time (delay) float L=150; //dlina niti double Xm=100; //otklonenie niti, max float Tm=100; //delitel' vremeni (dlja uskorenija umenshit' long T=0; //na4alo vremeni double kzat=0.999; //================================== public void init() { g = getGraphics(); bgColor = new Color(255,255,255); setBackground(bgColor); get_coordinates(); } //============================== //potok sobstvenno { (new Thread(this)).start(); } //===================================== public void run() { while (true) { get_coordinates(); //polu4im koordinatq repaint(); //repaint :) T=T+quant; //uveli4im quant vremeni Xm=Xm*kzat; try { Thread.sleep(quant); //spim } catch (InterruptedException e) { } } } //======================================= void get_coordinates() { double S; S=Xm*Math.cos(Math.sqrt(9.8/L)*(T/Tm)); //soglasno formulam //X=Xm*cos(wt); //t=T/1000 (quant vremeni) // w=sqrt(g/l) //S - rasstojanie otklonenija //iz ravnobedrennogo treugolnika polu4aem a double a; a=(Math.asin((S/2)/L))*2; //a teper' 4eres a X i Y X=(new Double(L*Math.sin(a)).intValue())+TOPX; Y=(new Double(L*Math.cos(a)).intValue())+TOPY; // Sstem.out.println("X="+X); // System.out.println("Y="+Y); } //============================================================= //============================================================= public void paint(Graphics g) { g.setColor(Color.black); g.drawLine(TOPX-40,TOPY,TOPX+40,TOPY); //plano4ka g.setColor(Color.green); g.drawLine(TOPX,TOPY,X,Y); // nito4ka g.setColor(Color.red); g.fillOval(X-10,Y-10,20,20); //sharik } //=============================================================== private void initComponents () {//GEN-BEGIN:initComponents setLayout (new java.awt.BorderLayout ()); }//GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables // End of variables declaration//GEN-END:variables }