From 7c09e42058cda8953183cf467d7c7159f4ab518f Mon Sep 17 00:00:00 2001 From: koz01 <koz01@PCFEIB405-134.msad.vsb.cz> Date: Wed, 20 Sep 2023 10:27:40 +0200 Subject: [PATCH] 2023_Wed_900_koz01_solution --- src/main/java/lab/DrawingThread.java | 43 +++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 4 deletions(-) diff --git a/src/main/java/lab/DrawingThread.java b/src/main/java/lab/DrawingThread.java index 63badd7..33f9801 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); } - } -- GitLab