Я пытался нарисовать треугольник Серпинского за пикселем за пикселем, используя Java. И это было успешно. Но теперь я хочу нарисовать каждый пиксель с небольшой задержкой. Я использовал разные типы методов, но они оказались безуспешными.
- Таймер анимации Javafx
- Thread.sleep (100)
Это мой Main.class
import java.util.Random;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.stage.Stage;
public class Main extends Application {
private Point[] triangle;
private static int points = 1000000;
private static Point midPoint;
private int width = 600, height = 600;
@Override
public void start(Stage primaryStage) {
Canvas canvas = new Canvas(width,height);
GraphicsContext gc = canvas.getGraphicsContext2D();
Scene scene = new Scene(new Group(canvas));
primaryStage.setScene(scene);
primaryStage.show();
Random ran = new Random();
triangle = new Point[3];
triangle[1] = new Point(0d, 0d);
triangle[0] = new Point(width/2d, (double)height);
triangle[2] = new Point((double)width, 0d);
midPoint = Point.findMidTo(triangle[0], triangle[1], triangle[2]);
while(points-- > 0){
int r = ran.nextInt(3);
midPoint = midPoint.findMidTo(triangle[r]);
gc.fillOval(midPoint.getX(), midPoint.getY(),1,1);
/*
Need a delay for each iteration (Problem !!!!!!!!!!)
*/
}
}
public static void main(String[] args) {
launch(args);
}
}
И это Point.class , в котором хранятся координаты x и y и некоторые полезные функции клавиш для пикселя
class Point {
private double x, y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
public double getX() { return this.x; }
public double getY() { return this.y; }
// bunch of overloaded functions
public Point findMidTo(Point p) {
return new Point((this.getX() + p.getX())/2, (this.getY() + p.getY())/2);
}
public Point findMidTo(Point p1, Point p2) {
return new Point((this.getX() + p1.getX() + p2.getX())/3,
(this.getY() + p1.getY() + p2.getY())/3 );
}
public static Point findMidTo(Point p1, Point p2, Point p3) {
return new Point((p1.getX() + p2.getX() + p3.getX())/3,
(p1.getY() + p2.getY() + p3.getY())/3 );
}
}