Две вращающиеся точки - Java
Формулировка задачи:
Задание состоит в том чтобы остались только две точки вращающиеся а у меня линии, и еще не могу сделать чтобы при нажатии на кнопку они вращались в другую сторону, они начинают вращаться сначала а потом снова начинают крутиться так же как при первоначальном запуске, помогите пожалуйста исправить. Вот код работаю в эклипсе
package prog7; import java.applet.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class myprogseven extends Applet implements Runnable { Thread t = null; // поток int i = 0,// i -- текущее положение; x1 = 200, y1 = 200, //x1, y1 -- координаты первого // конца отрезка x3 = 50, y3 = 50, x4 = 110, y4 = 110, x2 = 220, y2 = 50, num = 90; // x2, y2 -- координаты второго конца отрезка; num -- // кол-во шагов по окружности (90 -- шаг на 4 градуса) double r2 = 100, ugi2 = 2* Math.PI / num, ug2; // r -- длина отрезка; double r3 = 100, ugi3 = Math.PI / num, ug3;// ugi -- угол поворота, double r4 = 100, ugi4 = Math.PI / num, ug4;// ug -- расчёт текущего угла public void init() { this.setSize(380, 380); // задаём размер апплета } public void start() { if (t == null) // если поток пуст t = new Thread(this); // создаём новый t.start(); // запускаем поток } public void run() { while (true) // выполняем в бесконечном цикле { try { Thread.sleep(25); // задержка в мс ug2 = i++ * ugi2; // рассчитываем текущий угол x2 = (int) Math.round(x1 + r2 * Math.cos(ug2)); // считаем // координаты // второго конца y2 = (int) Math.round(y1 + r2 * Math.sin(ug2)); x3 = (int) Math.round(x1 + r3 * Math.tan(ug3)); // считаем // координаты // второго конца y3 = (int) Math.round(y1 + r3 * Math.sin(ug3)); if (i >= num) i = 0; // если прошли окружность, то начинаем снова repaint(); // вызываем отрисовку отрезка } catch (InterruptedException e) { } Button b1 = new Button("Кнопка 1"); b1.setBounds(1,100,100,20); add(b1); b1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){ try { Thread.sleep(25); // задержка в мс ug2 = i++ * ugi2; // рассчитываем текущий угол x2 = (int) Math.round(x1 - r2 * Math.cos(ug2)); // считаем // координаты // второго конца y2 = (int) Math.round(y1 + r2 * Math.sin(ug2)); x3 = (int) Math.round(x1 + r3 * Math.tan(ug3)); // считаем // координаты // второго конца y3 = (int) Math.round(y1 + r3 * Math.sin(ug3)); if (i >= num) i = 0; // если прошли окружность, то начинаем снова repaint(); // вызываем отрисовку отрезка }catch(InterruptedException e){ } }}); } } public void paint(Graphics dr) { { //dr.setColor(Color.green); dr.drawLine(x3, y3, x2, y2); dr.setColor(Color.blue); dr.drawLine(x3, y3, x2-6, y2-50); //dr.drawLine(x3, x3, x4, y4); } } }
Решение задачи: «Две вращающиеся точки»
textual
Листинг программы
public void init() { this.setSize(380, 380); // задаём размер апплета this.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { System.out.println(e.getX() + " " + e.getY()); } }); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д