diff --git a/src/main/java/lab/DrawingThread.java b/src/main/java/lab/DrawingThread.java index 63badd7697bde7382096fbbae8e6244464b2cbb1..33f9801890898548163b0464d63ac1b58324a901 100644 --- a/src/main/java/lab/DrawingThread.java +++ b/src/main/java/lab/DrawingThread.java @@ -3,11 +3,27 @@ package lab; import javafx.animation.AnimationTimer; import javafx.scene.canvas.Canvas; import javafx.scene.canvas.GraphicsContext; +import javafx.scene.paint.Color; public class DrawingThread extends AnimationTimer { + private static final double FPS = 100; + private final Canvas canvas; + private final GraphicsContext gc; + + private double p_x = 5; + + private double p_y = 300; + + private double v_x = 50; + + private double v_y = -50; + + private double g_y = 9.81; + + private long previousTime; public DrawingThread(Canvas canvas) { this.canvas = canvas; @@ -20,11 +36,30 @@ public class DrawingThread extends AnimationTimer { */ @Override public void handle(long now) { + if (previousTime > 0) { + double deltaT = (now - previousTime) / 1e9; + if (deltaT < 1/FPS) { + return; + } + p_x = p_x + v_x * deltaT; + p_y = p_y + v_y * deltaT; + v_y = v_y + g_y * deltaT; + + } + + gc.clearRect(0, 0, canvas.getWidth(), canvas.getHeight()); + + drawUFO(p_x, p_y); + previousTime = now; + } + + + void drawUFO(double x, double y) { // put your code here - //gc.setFill(Color.AQUA); - //gc.setStroke(Color.BLACK); - //gc.fillOval(10, 10, 20, 20); + gc.setFill(Color.SILVER); + gc.fillOval(15 + x, y, 30, 20); + gc.setFill(Color.INDIANRED); + gc.fillRect(x, 8 + y, 60, 2); } - }