diff --git a/src/main/java/lab/BulletAnimated.java b/src/main/java/lab/BulletAnimated.java index 58acd4f302b0ecb7801c33da10cb096f082da020..4ec882be11642f8fbf0a9276942739a4c1beaad3 100644 --- a/src/main/java/lab/BulletAnimated.java +++ b/src/main/java/lab/BulletAnimated.java @@ -12,13 +12,10 @@ public class BulletAnimated { private Point2D initialSpeed; private double size; private double mass = 2; - private double strenghtOfCannon = 2; + private double strenghtOfCannon = 80; private double cannonLength = 100; private boolean accelerate = true; private boolean hitToGround = false; - - private double crossSectionalArea; - private double dragCoefficient = 0.47; private Image image; private World world; @@ -55,15 +52,11 @@ public class BulletAnimated { .multiply(1 / 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); - speed = speed.add(acceleration.multiply(timeStep / 1000)); + Point2D acceleration = new Point2D(0, -Constants.GRAVITATIONAL_ACCELERATION*50 * mass); + speed = speed.add(acceleration.multiply(timeStep)); } if (!hitToGround) { - position = position.add(speed); + position = position.add(speed.multiply(timeStep)); if (!accelerate && position.getY() <= size / 2) { hitToGround = true; position = new Point2D(position.getX(), size / 2); diff --git a/src/main/java/lab/DrawingThread.java b/src/main/java/lab/DrawingThread.java index aa963ee466963b2cf9f93cacb94fec627cd2fb16..af51eacecd31059ea67c309983b484db72beefd5 100755 --- a/src/main/java/lab/DrawingThread.java +++ b/src/main/java/lab/DrawingThread.java @@ -28,8 +28,8 @@ public class DrawingThread extends AnimationTimer { gc.clearRect(0, 0, canvas.getWidth(), canvas.getHeight()); world.draw(); if (lasttime > 0) { - //time are in nanoseconds and method simulate expects miliseconds - world.simulate((now - lasttime) / 1e6); + //time are in nanoseconds and method simulate expects seconds + world.simulate((now - lasttime) / 1e9); } lasttime = now; } diff --git a/src/main/java/lab/World.java b/src/main/java/lab/World.java index 370989a8550c8130b8e79fb0a5a4dcc8dc78282b..c83521dac1b0f272d25c8c424b463d95a33bd1d1 100644 --- a/src/main/java/lab/World.java +++ b/src/main/java/lab/World.java @@ -32,6 +32,12 @@ public class World { cannon.simulate(timeDelta); } + public double getWidth() { + return canvas.getWidth(); + } + public double getHeight() { + return canvas.getHeight(); + } }