Per il gioco basato su tile, ho bisogno di calcolare la direzione in base a un dato offset di punto (differenza tra due punti). Ad esempio, diciamo che sono al punto (10, 4) e voglio passare al punto (8, 6). La direzione in cui mi muovo è nord-ovest. Quale sarebbe il modo migliore per calcolare questo?Calcolo della direzione in base agli offset di punto
Ecco l'implementazione di base in Java.
public int direction(int x, int y) {
if (x > 0) {
if (y > 0) {
return 0; // NE
} else if (y < 0) {
return 1; // SE
} else {
return 2; // E
}
} else if (x < 0) {
if (y > 0) {
return 3; // NW
} else if (y < 0) {
return 4; // SW
} else {
return 5; // W
}
} else {
if (y > 0) {
return 6; // N
} else if (y < 0) {
return 7; // S
} else {
return -1;
}
}
}
Sicuramente può essere ottimizzato o ridotto. Qualsiasi aiuto? Grazie.
Compilare anche questo? Non restituisce un valore quando x e y sono entrambi 0. –
Sembra buono così com'è (modulo mancante 'else' trovato da Matti). Si potrebbe trarre un fattore di "ritorno", ma in genere è l'ottimizzazione che potrebbe non essere quella a livello di bytecode, e quella che il compilatore dovrebbe essere in grado di fare comunque per te. Potresti calcolare il calcolo delle condizioni 'y <0' and 'y> 0', ma ancora una volta, un compilatore decente dovrebbe essere in grado di farlo per te. Puoi cambiare la rappresentazione di che direzione è (ad es.una coppia di numeri ogni -1, 0 o 1 per l'asse N/S e l'asse W/E) per rendere questo metodo più semplice, ma non sembra necessario. –
@Matti Virkkunen Ah hai ragione (cambiato). Copia-incolla fallita ... – someguy