Problème avec la méthode Math.asin()

UtilisateurJava -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour, je suis débutant en java et je m'entraîne à faire un logiciel pour calculer l'angle de réfraction ou l'angle d'incidence avec la loi de Snell-Descartes ( nI x sin(i) = nR x sin(R) ). Je demande d'abord à l'utilisateur de donner la valeur de nI, sin(i) et de nR pour calculer sin(R) et ensuite avec la méthode Math.asin() trouver R. Le problème c'est que par exemple avec un angle I de 60, je devrais trouver 40 alors que je trouve 0.709. Pouvez-vous m'aider ? Merci.

Voici mon code:



public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);

int mode;
double I;
double nI;
double nR;
double sinR;
double R;

do
{
do
{
System.out.println("Que voulez vous faire ?\n 1-Trouver R\n2-Trouver I\n3-Trouver nI\n 4-Trouver nR");
mode = sc.nextInt();
} while (mode !=1 && mode !=2 && mode !=3 && mode !=4);

if (mode==1)
{
System.out.println("Valeur de l'angle I ?");
I = sc.nextDouble();

System.out.println("nI ? ?");
nI = sc.nextDouble();

System.out.println("nR ?");
nR = sc.nextDouble();

sinR = ((nI*Math.sin(Math.toRadians(I))/nR));
R = Math.asin(sinR);


System.out.println("Resultat:"+R);


}
} while (1>1);
}
}

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Attention : les calculs sont en radians ! Si tu veux des degrés il faut faire la conversion.
1