je besoin d'une fonction qui prend une ligne (connue par ses coordonnées) et retourner une ligne avec même angle, mais limitée à certaine longueur.Besoin d'une fonction pour limiter une ligne (connue par ses coordonnées) dans sa longueur
Mon code donne des valeurs correctes ne lorsque la ligne est activée « droite »
(seulement prouvé de façon empirique, désolé).
Ai-je raté quelque chose?
public static double getAngleOfLine(int x1, int y1, int x2, int y2) {
double opposite = y2 - y1;
double adjacent = x2 - x1;
if (adjacent == Double.NaN) {
return 0;
}
return Math.atan(opposite/adjacent);
}
// returns newly calculated destX and destY values as int array
public static int[] getLengthLimitedLine(int startX, int startY,
int destX, int destY, int lengthLimit) {
double angle = getAngleOfLine(startX, startY, destX, destY);
return new int[]{
(int) (Math.cos(angle) * lengthLimit) + startX,
(int) (Math.sin(angle) * lengthLimit) + startY
};
}
BTW: Je sais que les tableaux de retour en Java est stupide, mais il est juste pour l'exemple.
Votre chèque de NaN renvoie toujours faux que rien n'est jamais égal à NaN. Le retour de 0 pour erreur est également mauvais car 0 est un angle valide. –
Oh, vous avez raison!C'est à partir d'un code plus ancien. –