package com.trs.game; import com.badlogic.gdx.math.Polygon; public class StaticMath { public static double calculateAngle(int xPos1, int yPos1, int xPos2, int yPos2){ float deltaX = xPos2 - xPos1; float deltaY = yPos2 - yPos1; double angle; if(deltaY == 0){ if(deltaX < 0){ angle = Math.PI; } else{ angle = 0; } } else if(deltaX == 0 && deltaY >= 0){ angle = Math.PI / 2; } else if(deltaX == 0 && deltaY < 0){ angle = Math.PI / -2; } else{ angle = Math.abs(Math.atan(deltaY / deltaX)); if(deltaX < 0 && deltaY < 0){ angle = Math.PI + angle; } else if(deltaX < 0 && deltaY > 0){ angle = Math.PI - angle; } else if(deltaX > 0 && deltaY < 0){ angle = 2*Math.PI - angle; } } return angle; } public static Polygon createPolygon(int xPos, int yPos, double angle, double width, double length){ float[] points = new float[8]; double phi = (Math.PI / 2) - angle; double d = Math.sin(phi) * width; double e = Math.cos(phi) * width; double f = Math.sin(angle) * length; double g = Math.cos(angle) * length; points[0] = xPos; points[1] = yPos; points[2] = points[0] + (float) e; points[3] = points[1] - (float) d; points[4] = points[2] + (float) g; points[5] = points[3] + (float) f; points[6] = points[4] - (float) e; points[7] = points[5] + (float) d; return new Polygon(points); } public static Polygon[] createCollisionPolygons(Polygon wall){ Polygon[] collisionPolygons = new Polygon[4]; // first line of polygon float[] newVertices; // last four coordinates are all incremented by one, so the polygon is 1 width polygon newVertices = new float[8]; newVertices[0] = wall.getVertices()[0]; newVertices[1] = wall.getVertices()[1]; newVertices[2] = wall.getVertices()[2]; newVertices[3] = wall.getVertices()[3]; newVertices[4] = wall.getVertices()[2]; newVertices[5] = wall.getVertices()[3]; newVertices[6] = wall.getVertices()[0]; newVertices[7] = wall.getVertices()[1]; collisionPolygons[0] = new Polygon(newVertices); // third line of polygon newVertices = new float[8]; newVertices[0] = wall.getVertices()[2]; newVertices[1] = wall.getVertices()[3]; newVertices[2] = wall.getVertices()[4]; newVertices[3] = wall.getVertices()[5]; newVertices[4] = wall.getVertices()[2]; newVertices[5] = wall.getVertices()[3]; newVertices[6] = wall.getVertices()[0]; newVertices[7] = wall.getVertices()[1]; collisionPolygons[1] = new Polygon(newVertices); // second line of polygon newVertices = new float[8]; newVertices[0] = wall.getVertices()[4]; newVertices[1] = wall.getVertices()[5]; newVertices[2] = wall.getVertices()[6]; newVertices[3] = wall.getVertices()[7]; newVertices[4] = wall.getVertices()[2]; newVertices[5] = wall.getVertices()[3]; newVertices[6] = wall.getVertices()[0]; newVertices[7] = wall.getVertices()[1]; collisionPolygons[2] = new Polygon(newVertices); // fourth line of polygon newVertices = new float[8]; newVertices[0] = wall.getVertices()[6]; newVertices[1] = wall.getVertices()[7]; newVertices[2] = wall.getVertices()[0]; newVertices[3] = wall.getVertices()[1]; newVertices[4] = wall.getVertices()[2]; newVertices[5] = wall.getVertices()[3]; newVertices[6] = wall.getVertices()[0]; newVertices[7] = wall.getVertices()[1]; collisionPolygons[3] = new Polygon(newVertices); return collisionPolygons; } }