Уроки, алгоритмы, программы, примеры

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

У меня проблема вот с этим: gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);. Вылезает ошибка: CS1061 "object" не содержит определения "GL_COLOR_BUFFER_BIT", и не удалось найти доступный метод расширения "GL_COLOR_BUFFER_BIT",...
Большое спасибо. Единственный код который прошел без каких либо ошибок. Ура!!!
Скажите пожалуйста, подскажите алгоритм по которому по заданным точкам можно определить тип многогранника, скажем это куб или прямоугольный параллелепипед. Нашел теорию по этим фигурам: https://www.mat... https://www.mat... Акцентировать внимание...
Всем у кого не работает. файл wizard.script Ещё одно упоминание Glut32 в строке "if (!VerifyLibFile(dir_nomacro_lib, _T("glut32"), _T("GLUT's"))) return false;" меняем на "if (!VerifyLibFile(dir_nomacro_lib, _T("freeglut"), _T("GLUT's"))) return...
Не получается, емаё

Счетчики и рейтинг

Рейтинг@Mail.ru Яндекс.Метрика
Язык программирования: 
Java
Среда программирования: 
IntelliJ IDEA 2016.1

package me.grafika.barbanyagra;
 
import javafx.animation.*;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.LineTo;
import javafx.scene.shape.MoveTo;
import javafx.scene.shape.Path;
import javafx.stage.Stage;
import javafx.util.Duration;
 
import static java.lang.Math.ceil;
import static java.lang.Math.sqrt;
 
public class RandomMoveDots extends Application {
    private static final double EXTERNAL_RADIUS = 13; // радиус невидимых внешних кругов (по нему происходит размещение окружностей)
    private static final double INNER_RADIUS = 8; // радиус видимых округов
    private static final double MOVEMENT_MS = 250; // продолжительность движения
    private static final double PAUSE_MS = 150; // продолжительность паузы между движениями
 
    @Override
    public void start(Stage primaryStage) throws Exception {
        Group root = new Group();
        primaryStage.setScene(new Scene(root, 500, 500, Color.BLACK)); // задаем сцену
        primaryStage.setResizable(false); // запрещаем изменять размер экрана
        primaryStage.setTitle("Random Move Dots"); // задаем заголовок она
 
        Group circles = new Group(); // сюда сложим круги
        ParallelTransition animation = new ParallelTransition(); // сюда сложим всю анимацию
 
        // по радиусу вычисляем достаточное количество кругов
        int in_raw = (int) ceil(500 / EXTERNAL_RADIUS) / 2 + 1;
        int in_column = (int) ceil(500 / sqrt(3) / EXTERNAL_RADIUS) / 2 + 1;
 
        for (int i = -in_column; i <= in_column; i++) {
            for (int j = -in_raw; j <= in_raw; j++) {
                Circle circle = new Circle(getX(i, j), getY(i, j), INNER_RADIUS, Color.WHITE); // создаем круг
                circles.getChildren().add(circle); // добавляем круг
 
                SequentialTransition st = new SequentialTransition(); // создаем последовательную анимацию
                st.getChildren().addAll(
                        // движение в сторону
                        new PathTransition(
                                Duration.millis(MOVEMENT_MS),
                                new Path(
                                        new MoveTo(getX(i, j), getY(i, j)),
                                        new LineTo(getX(i, j + (i % 2 == 0 ? 1 : -1)), getY(i, j + (i % 2 == 0 ? 1 : -1)))
                                ),
                                circle),
                        new PauseTransition(Duration.millis(PAUSE_MS)), // пауза
 
                        // движение влево
                        new PathTransition(
                                Duration.millis(MOVEMENT_MS),
                                new Path(
                                        new MoveTo(getX(i, j), getY(i, j)),
                                        new LineTo(getX(i + (j % 2 == 0 ? 1 : -1), j), getY(i + (j % 2 == 0 ? 1 : -1), j))
                                ),
                                circle),
                        new PauseTransition(Duration.millis(PAUSE_MS)), // пауза
 
                        // движение вправо
                        new PathTransition(
                                Duration.millis(MOVEMENT_MS),
                                new Path(
                                        new MoveTo(getX(i, j), getY(i, j)),
                                        new LineTo(getX(i - ((i + j) % 2 == 0 ? 1 : -1), j + ((i + j) % 2 == 0 ? 1 : -1)), getY(i - ((i + j) % 2 == 0 ? 1 : -1), j + ((i + j) % 2 == 0 ? 1 : -1)))
                                ),
                                circle),
                        new PauseTransition(Duration.millis(PAUSE_MS)) // пауза
                );
                st.setCycleCount(Animation.INDEFINITE); // зацикливаем
                animation.getChildren().add(st); // сохраняем
            }
        }
 
        root.getChildren().add(circles); // добавляем круги
        primaryStage.show(); // запускаем сцену
        animation.play(); // запускаем анимацию
    }
 
    private double getX(double x, double y) {
        return 250 + x * EXTERNAL_RADIUS + y * 2 * EXTERNAL_RADIUS;
    }
 
    private double getY(double x, double y) {
        return 250 + x * sqrt(3) * EXTERNAL_RADIUS;
    }
}

Прикрепленный файлРазмер
RandomMoveDots.zip40.28 кб