From db1f883e98923c6e96dc0ecd32e20e06dbcfa8a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Ko=C5=BEusznik?= <jan@kozusznik.cz> Date: Fri, 14 Oct 2022 14:42:36 +0200 Subject: [PATCH] fix movement equation --- src/main/java/lab/BulletAnimated.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/lab/BulletAnimated.java b/src/main/java/lab/BulletAnimated.java index 3770cb3..5a18879 100644 --- a/src/main/java/lab/BulletAnimated.java +++ b/src/main/java/lab/BulletAnimated.java @@ -13,7 +13,7 @@ public class BulletAnimated implements DrawableSimulable, Collisionable{ private Point2D initialSpeed; private double size; private double mass = 2; - private double strenghtOfCannon = 50; + private double strenghtOfCannon = 100; private double cannonLength = 100; private boolean accelerate = true; private boolean hitToGround = false; @@ -53,18 +53,18 @@ public class BulletAnimated implements DrawableSimulable, Collisionable{ double cannonAngle = cannon.getAngle(); speed = speed .add(new Point2D(Math.cos(cannonAngle) * strenghtOfCannon, Math.sin(cannonAngle) * strenghtOfCannon) - .multiply(1 / mass * deltaT)); + .multiply(deltaT / mass)); } else if (!hitToGround) { accelerate = false; Point2D airResistanceforce = new Point2D( -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 + airResistanceforce.getY() * mass); + (-Constants.GRAVITATIONAL_ACCELERATION + airResistanceforce.getY()) * mass); speed = speed.add(acceleration.multiply(deltaT)); } if (!hitToGround) { - position = position.add(speed); + position = position.add(speed.multiply(deltaT*100)); if (!accelerate && position.getY() <= size / 2) { hitToGround = true; position = new Point2D(position.getX(), size / 2); @@ -75,7 +75,7 @@ public class BulletAnimated implements DrawableSimulable, Collisionable{ } public Rectangle2D getBoundingBox() { - return new Rectangle2D(position.getX(), position.getY() - size, size, size); + return new Rectangle2D(position.getX(), position.getY(), size, size); } public boolean overlaps(Dragon dragon) { -- GitLab