From 71505ab8f4df2e2329a3d28fa530dbbebeab9f4a Mon Sep 17 00:00:00 2001 From: koz01 <koz01@PCFEIB208-74.msad.vsb.cz> Date: Wed, 20 Sep 2023 08:42:27 +0200 Subject: [PATCH] 2023_eng_solution --- src/main/java/lab/DrawingThread.java | 30 +++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/src/main/java/lab/DrawingThread.java b/src/main/java/lab/DrawingThread.java index 63badd7..e840d96 100644 --- a/src/main/java/lab/DrawingThread.java +++ b/src/main/java/lab/DrawingThread.java @@ -1,13 +1,22 @@ package lab; import javafx.animation.AnimationTimer; +import javafx.geometry.Point2D; import javafx.scene.canvas.Canvas; import javafx.scene.canvas.GraphicsContext; +import javafx.scene.paint.Color; public class DrawingThread extends AnimationTimer { private final Canvas canvas; private final GraphicsContext gc; + + + private Point2D p = new Point2D(0, 100); + + private Point2D v = new Point2D(50, 0); + + private long lastTimeOffset = -1; public DrawingThread(Canvas canvas) { this.canvas = canvas; @@ -20,11 +29,26 @@ public class DrawingThread extends AnimationTimer { */ @Override public void handle(long now) { + gc.setFill(Color.YELLOW); + gc.clearRect(0, 0, canvas.getWidth(), canvas.getHeight()); + paintUFO(p.getX(), p.getY()); + if (lastTimeOffset >= 0) { + //compute simulation + double deltaT = (now - lastTimeOffset)/1e9; + p = new Point2D(p.getX() + v.getX()*deltaT,p.getY() + v.getY()*deltaT); + } + + lastTimeOffset = now; + } + + + void paintUFO(double x, double y) { // put your code here - //gc.setFill(Color.AQUA); + gc.setFill(Color.AQUA); //gc.setStroke(Color.BLACK); - //gc.fillOval(10, 10, 20, 20); - + gc.fillOval(15 + x, 0 + y, 30, 20); + gc.setFill(Color.SILVER); + gc.fillRect(0 + x, 8 + y, 60, 5); } } -- GitLab