|
Трохоиды
Описание и работа:
Программа рисует трохоиды. Минимальное значение полос прокрутки = 1, а максимальное = 90 pix.
Download:
[trohoidi.class]
Программа:
// Copyright Konstantin S. Matveyev
// 27 August 2000
//
import java.applet.*;
import java.awt.*;
class trohoidi extends Applet {
private Scrollbar sb1, sb2, sb3;
public void init() {
setBackground(Color.black);
setForeground(Color.lightGray);
sb1 = new Scrollbar(Scrollbar.HORIZONTAL, 95 , 5, 1, 95);
sb2 = new Scrollbar(Scrollbar.HORIZONTAL, 95 , 5, 1, 95);
sb3 = new Scrollbar(Scrollbar.HORIZONTAL, 95 , 5, 1, 95);
Panel p=new Panel();
p.setLayout(new GridLayout(3, 2));
p.add(new Label("Радиус опорной окружности: ")); p.add(sb1);
p.add(new Label("Радиус подвижной окружности (П.О): ")); p.add(sb2);
p.add(new Label("Расстояние точки, описывающей кривую, от центра П.О: "));
p.add(sb3);
setLayout(new BorderLayout());
add("North", p);
}
public void start() { }
double r1=90, r=90, h=90;
double m=r/r1;
public boolean handleEvent(Event evtObj) {
if(evtObj.target instanceof Scrollbar) {
r1=sb1.getValue();
r= sb2.getValue();
h= sb3.getValue();
m=r/r1;
repaint();
} return super.handleEvent(evtObj); }
public void paint(Graphics g) {
for(double t=1; t<=360; t=t+0.02) {
double xx = (r1+m*r1)*Math.cos(m*t) - h*Math.cos(t+m*t);
double yy = (r1+m*r1)*Math.sin(m*t) - h*Math.sin(t+m*t);
int x = (int) xx;
int y = (int) yy;
g.setColor(Color.white);
g.drawLine(300+x, 330+y, 300+x, 330+y);
}
}
public void destroy() { }
}
| |
|