Étant donné deux points sur la boussole (plage de début et plage de fin) pour former une plage. Exemple de 270 (plage de début) degrés à 45 (plage de fin) degrés et donné un autre point disons 7, comment puis-je travailler si ce point est entre début et fin de gamme? J'essaie d'écrire du code pour savoir si le vent (au point 3 ci-dessus) souffle de la mer ou de la terre, où la terre est défendue par la plage de début et la plage de fin.comment décider que le point est entre deux points sur la boussole
Merci beaucoup Andy
Mise à jour: 11/10/2010 18: 46BST De la solution de @ STH ce qui suit semble fonctionner pour comme prévu.
#!/usr/bin/perl -w
sub isoffshore {
my ($beachstart,$beachend,$wind) = @_;
if($beachend < $beachstart) {
$beachend += 360;
}
if ($wind < $beachstart){
$wind += 360;
}
if ($wind <= $beachend){
print ("Wind is Onshore\n");
return 0;
}else{
print ("Wind is Offshore\n");
return 1;
}
}
isoffshore ("0","190","3"); #Should be onshore
isoffshore ("350","10","11"); #Should be offshore
isoffshore ("270","90","180");#Should be offshore
isoffshore ("90","240","0"); #Should be offshore
isoffshore ("270","90","180");#Should be offshore
isoffshore ("0","180","90"); #Should be onshore
isoffshore ("190","0","160"); #Should be offshore
isoffshore ("110","240","9"); #Should be offshore
isoffshore ("0","180","9"); #Should be onshore
isoffshore ("0","180","179"); #Should be onshore
Résultats
@localhost ~]$ ./offshore2.pl
Wind is Onshore
Wind is Offshore
Wind is Offshore
Wind is Offshore
Wind is Offshore
Wind is Onshore
Wind is Offshore
Wind is Offshore
Wind is Onshore
Wind is Onshore
Très bien. Une solution simple :-) – AndyM
@AndyM: merci - J'étais déterminé à trouver une solution sans branchement. C'est dommage pour l'opérateur% C/C++ - si cela fonctionnait correctement pour les valeurs négatives, la solution aurait été plus simple. –