From 6f5b7c83eee860504dae2a0233a9a66be5f1fc6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Ko=C5=BEusznik?= <jan@kozusznik.cz> Date: Fri, 14 Oct 2022 14:46:22 +0200 Subject: [PATCH] Fix movement equations --- src/main/java/lab/BulletAnimated.java | 11 ++++++----- src/main/java/lab/Dragon.java | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/java/lab/BulletAnimated.java b/src/main/java/lab/BulletAnimated.java index dd27903..c9d9fb4 100644 --- a/src/main/java/lab/BulletAnimated.java +++ b/src/main/java/lab/BulletAnimated.java @@ -4,9 +4,10 @@ import javafx.geometry.Point2D; import javafx.geometry.Rectangle2D; import javafx.scene.canvas.GraphicsContext; import javafx.scene.image.Image; + public class BulletAnimated implements DrawableSimulable, Collisionable{ - private static final double STRENGTH_CANNON_COEFICIENT = 4.; + private static final double STRENGTH_CANNON_COEFICIENT = 1.; private Point2D position; private Point2D start; @@ -57,7 +58,7 @@ public class BulletAnimated implements DrawableSimulable, Collisionable{ } if (accelerate && start.distance(position) < cannonLength) { double cannonAngle = cannon.getAngle(); - double strenghtOfCannon = cannon.getStrength() * STRENGTH_CANNON_COEFICIENT/100.; + double strenghtOfCannon = cannon.getStrength() * STRENGTH_CANNON_COEFICIENT; speed = speed .add(new Point2D(Math.cos(cannonAngle) * strenghtOfCannon, Math.sin(cannonAngle) * strenghtOfCannon) .multiply(deltaT / mass)); @@ -67,11 +68,11 @@ public class BulletAnimated implements DrawableSimulable, Collisionable{ -1. / 2 * crossSectionalArea * Constants.AIR_DENSITY * dragCoefficient * Math.pow(speed.getX(), 2), -1. / 2 * crossSectionalArea * Constants.AIR_DENSITY * 0.47 * Math.pow(speed.getY(), 2)); Point2D acceleration = new Point2D(-airResistanceforce.getX() * mass, - (-Constants.GRAVITATIONAL_ACCELERATION/20 + airResistanceforce.getY()) * mass); + (-Constants.GRAVITATIONAL_ACCELERATION + airResistanceforce.getY()) * mass); speed = speed.add(acceleration.multiply(deltaT)); } if (!hitToGround) { - position = position.add(speed.multiply(deltaT*1000)); + position = position.add(speed.multiply(deltaT*100)); if (!accelerate && position.getY() <= size / 2) { hitToGround = true; position = new Point2D(position.getX(), size / 2); @@ -83,7 +84,7 @@ public class BulletAnimated implements DrawableSimulable, Collisionable{ } public Rectangle2D getBoundingBox() { - return new Rectangle2D(position.getX(), position.getY(), size, size); + return new Rectangle2D(position.getX() - size, position.getY(), size, size); } public boolean overlaps(Dragon dragon) { diff --git a/src/main/java/lab/Dragon.java b/src/main/java/lab/Dragon.java index 987de59..035a553 100644 --- a/src/main/java/lab/Dragon.java +++ b/src/main/java/lab/Dragon.java @@ -37,7 +37,7 @@ public class Dragon implements DrawableSimulable, Collisionable{ public Rectangle2D getBoundingBox() { - return new Rectangle2D(position.getX(), position.getY(), size, size); + return new Rectangle2D(position.getX() - size, position.getY(), size, size); } -- GitLab