Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 11.02.2021
Сообщений: 2

Многопоточность , добавить таймер к анимации

20.05.2021, 22:13. Показов 1487. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание: переделать код так, чтобы анимация рисовала последовательно точки , соответствующие значениям t , возрастающие от 0 до t max. Добавить кнопку , нажатие которой запустит анимацию.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import javax.swing.*;
import java.awt.*;
import java.awt.geom.Line2D;
public class HypotrochoidPanel extends JPanel {
    private final static int PANEL_SIZE_IN_PX = 420;
    private final static Color COLOR = Color.BLACK;
    private final static Color BACKGROUND_COLOR = Color.WHITE;
    private final static int STROKE_WIDTH = 1;
    private final double axesLimit;
    private final int R, r, d;
    public HypotrochoidPanel(int R, int r, int d) {
        this.R = R;
        this.r = r;
        this.d = d;
        setBackground(BACKGROUND_COLOR);
        axesLimit = d + Math.abs(R - r) * 1.05d;
    }
    @Override
    public Dimension getPreferredSize() {
        return new Dimension(PANEL_SIZE_IN_PX, PANEL_SIZE_IN_PX);
    }
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;
        g2.setColor(COLOR);
        g2.setStroke(new BasicStroke(STROKE_WIDTH));
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        double t = 0d;
        double step = 0.01;
        double tMax = computeTMax();
        while (t < tMax) {
            double xStart = x(t);
            double yStart = y(t);
            double xEnd = x(t+step);
            double yEnd = y(t+step);
            g2.draw(new Line2D.Double(coordinateToPixel(xStart), coordinateToPixel(yStart), coordinateToPixel(xEnd), coordinateToPixel(yEnd)));
            t += step;
        }
    }
    private double x(double t) {
        return (R - r) * Math.cos(t) + d * Math.cos(t * (R - r) / r);
    }
    private double y(double t) {
        return (R - r) * Math.sin(t) - d * Math.sin(t * (R - r) / r);
    }
    private double coordinateToPixel(double c) {
        return PANEL_SIZE_IN_PX / 2d + (PANEL_SIZE_IN_PX / 2d / axesLimit) * c;
    }
    private double computeTMax() {
        return 2 * Math.PI * HypotrochoidUtils.leastCommonMultiple(R, r) / R;
    }
    public static void main(String... args) {
        int R = 7, r = 5, d = 4;
        JFrame frame = new JFrame("Hypotrochoid: R = " + R + ", r = " + r + ", d = " + d);
        frame.add(new HypotrochoidPanel(R, r, d));
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}
public class HypotrochoidUtils {
    public static int greatestCommonDivisor(int a, int b) {
        while (b > 0) {
            int c = b;
            b = a % b;
            a = c;
        }
        return a;
    }
    public static int leastCommonMultiple(int a, int b) {
        return a * (b / greatestCommonDivisor(a, b));
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.05.2021, 22:13
Ответы с готовыми решениями:

таймер анимации
Всем привет у меня есть код на стрельбу из оружия, но при анимации перезарядки можно стрелять, и анимация автоматически завершается. ...

многопоточность и Controls или таймер
необходимо реализовать постоянное обновление изображений (контролов PictureBox) при движении изображения все остальные изображения...

Таймер при анимации
Помогите реализовать и сделать рабочим этот код, пожалуйста. unit Unit1; interface uses Winapi.Windows, Winapi.Messages,...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.05.2021, 22:13
Помогаю со студенческими работами здесь

Таймер перед выполнением анимации
доброго времени суток всем! такая ситуация: есть анимация кот увеличивае картинку и срабатыват при наведении на картинку курсором. ...

Запустить таймер и нарисовать несколько линий как в анимации
Есть такой график на форме и его нужно нарисовать таким образом Чтобы каждая линия выводилась плавно( подобие анимации) с помощью...

Добавить многопоточность
Доброго времени суток! Собрал кое-какой проект (VS 2008, для работы под windows), хочу добавить туда многопоточность, написал кое-что для...

Как добавить многопоточность?
Как сделать выполнение каждой итерации в отдельном потоке при помощи OpenMP или MPI? for(int i = 0; i&lt;= int(file_read); i++){ ...

Как добавить многопоточность?
Как сделать выполнение каждой итерации в отдельном потоке при помощи OpenMP или MPI? for(int i = 0; i&lt;= int(file_read); i++){ ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru