L'angolo A è un angolo di laurea che continua ad aumentare di incrementi e l'Angolo B è il punto di arresto di Angolo A (si pensi 'Spin-the-bottle' dove Angolo A è l'angolo corrente della bottiglia. L'Angolo B è l'angolo necessario per indicare la tua cotta e la bottiglia gira ad una velocità fissa in senso orario).
Per fare questo, ho cercato di confrontare Angolo A e Angolo B con disuguaglianze. Se l'angolo A è di 60 gradi e l'angolo B è di 80 gradi, questo non è un problema. Se l'angolo A è 350 gradi e l'angolo B è 10 gradi, tuttavia, la disuguaglianza pensa che l'angolo A abbia attraversato l'angolo B anche se non lo è stato.
Come faccio a confrontare gli angoli quando avvolgono a 360 gradi?
Questo è uno pseudo-codice per quello che ho finora:
int AngleB = 30;
int AngleA = 300;
void Update() {
AngleA += 13;
if (AngleA > AngleB) {
AngleA = AngleB;
}
}
Aggiornamento: ecco il mio nuovo metodo che avvolge l'Angolo A rispetto all'angolo B:
double GetAngleDifference(double from, double to)
{
double difference = to - from;
while (difference < -180) double += 360;
while (difference > 180) double-= 360;
return difference;
}