public static coordonnees calculerPositionEvitement(int longueurRecul,coordonnees coordonneesActuelles) { double angleRad = coordonneesActuelles.alpha; angleRad /= 1000; int alphaDegre1 = 90 + (int)Math.convertRadianToDegree(angleRad); int xArrive1 = (int)(longueurRecul * Math.cosinus(alphaDegre1) + coordonneesActuelles.x); int yArrive1 = (int)(longueurRecul * Math.sinus(alphaDegre1) + coordonneesActuelles.y); int alphaDegre2 = -90 + (int)Math.convertRadianToDegree(angleRad); int xArrive2 = (int)(longueurRecul * Math.cosinus(alphaDegre2) + coordonneesActuelles.x); int yArrive2 = (int)(longueurRecul * Math.sinus(alphaDegre2) + coordonneesActuelles.y); double distance1 = (1500 - xArrive1) * (1500 - xArrive1) + (1000 - yArrive1) * (1000 - yArrive1); double distance2 = (1500 - xArrive2) * (1500 - xArrive2) + (1000 - yArrive2) * (1000 - yArrive2); coordonnees positionEvitement = new coordonnees(); if (distance1 < distance2) { positionEvitement.x = xArrive1; positionEvitement.y = yArrive1; } else { positionEvitement.x = xArrive2; positionEvitement.y = yArrive2; } return positionEvitement; }
public static coordonnees calculerPositionRecul(int longueurRecul, coordonnees coordonneesActuelles, int demiTour) { coordonnees positionEvitement = new coordonnees(); double angleRad = coordonneesActuelles.alpha; angleRad /= 1000; int alphaDegre = 180*demiTour + (int)Math.convertRadianToDegree(angleRad); positionEvitement.x = (int)(longueurRecul * Math.cosinus(alphaDegre) + coordonneesActuelles.x); positionEvitement.y = (int)(longueurRecul * Math.sinus(alphaDegre) + coordonneesActuelles.y); return positionEvitement; }