package com.throwgame.main; import com.badlogic.gdx.math.Vector2; import model.Projectile; public class ThrowMath { private double tanA; private double coefficient; private double y0; private double xPos0; private double v; private double vX; private boolean initialised; public ThrowMath(){ this.tanA = 0; this.coefficient = 0; this.y0 = 0; this.initialised = false; } public void initThrow(double alpha, double g, double v0, double y0, double xPos0, double vX){ this.tanA = Math.tan(alpha); this.coefficient = g / (2 * Math.pow(v0, 2) * Math.pow(Math.cos(alpha), 2)); this.y0 = y0; this.initialised = true; this.xPos0 = xPos0; this.vX = vX; } public Vector2 calculateY(double xPos){ if(this.initialised){ Vector2 newPos = new Vector2(); //this.v = getV(xPos); //System.out.println("V: " + this.v); double newXPos = (xPos + this.vX); newPos.x = (float) newXPos; double newYPos = 1* (this.y0 + this.tanA * (newXPos - this.xPos0) - this.coefficient * Math.pow((newXPos - this.xPos0), 2)); //System.out.println("Neue x: Position " + newXPos); //System.out.println("Neue y: Position " + newYPos); newPos.y = (float) newYPos; return newPos; } else{ System.out.println("Der Wurf wurde nicht initialisiert!"); return new Vector2(); } } public double getV(double xPos){ double v = 1* (this.tanA - this.coefficient * 2 * (xPos - this.xPos0)); return v; } public Vector2 test(Projectile projectile, double g){ Vector2 lol = new Vector2(); lol.x = (float) (projectile.getxPos() + projectile.getvX()); projectile.setvY(projectile.getvY() - g); lol.y = (float) (projectile.getyPos() + projectile.getvY()); return lol; } public Vector2 pivotGetNewPos(double alpha, int xPosPivot, int yPosPivot, int radius){ Vector2 vector = new Vector2(); vector.x = (float) (radius * Math.sin(alpha)); vector.y = (float) (radius * Math.cos(alpha)); return vector; } }