From 84e220b332bfffb0f2dcc39b9697a6fd6691d265 Mon Sep 17 00:00:00 2001 From: Leonard Kugis Date: Mon, 25 Apr 2022 18:36:30 +0200 Subject: Initial commit --- src/aufgaben/blatt2/Objekt.java | 65 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100755 src/aufgaben/blatt2/Objekt.java (limited to 'src/aufgaben/blatt2/Objekt.java') diff --git a/src/aufgaben/blatt2/Objekt.java b/src/aufgaben/blatt2/Objekt.java new file mode 100755 index 0000000..031b73a --- /dev/null +++ b/src/aufgaben/blatt2/Objekt.java @@ -0,0 +1,65 @@ +package aufgaben.blatt2; + +import java.util.Date; + +public class Objekt { + + private float x, y, dir, v; + private long time; + + public Objekt(int x, int y) { + this.x = x; + this.y = y; + } + + public void setX(int x) { + this.x = x; + } + + public void setY(int y) { + this.y = y; + } + + public void setMovement(float degrees, float v) { + this.dir = degrees; + this.v = v; + this.time = System.nanoTime(); + } + + public void update() { + long delta = getDelta(); + float change = (float) (delta/1e9); + if(dir == 0 || dir == 360) { + x += change * v; + } else if(dir >= 0 && dir < 90) { + x += change * v; + y -= Math.tan(Math.toRadians(dir)) * change * v; + } else if(dir >= 90 && dir < 180) { + x -= Math.tan(Math.toRadians(dir-90)) * change * v; + y -= change * v; + } else if(dir >= 180 && dir < 270) { + x -= change * v; + y += Math.tan(Math.toRadians(dir-180)) * change * v; + } else if(dir >= 270 && dir < 360) { + x += Math.tan(Math.toRadians(dir-270)) * change * v; + y += change * v; + } else { + System.out.println("Invalid angle! (float, 0<=angle<=360)"); + } + System.out.println("X = " + x + ", Y = " + y + ", fps = " + delta/1e9); + } + + public int getX() { + return Math.round(x); + } + + public int getY() { + return Math.round(y); + } + + public long getDelta() { + long old = time; + time = System.nanoTime(); + return time-old; + } +} -- cgit v1.2.1