diff --git a/src/main/java/lab/DrawingThread.java b/src/main/java/lab/DrawingThread.java index 63badd7697bde7382096fbbae8e6244464b2cbb1..e840d96c81950fc3acca876b27a5fcdcd1105048 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); } }