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

UtilisateurJava -  
KX Messages postés 19031 Statut Modérateur -
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 19031 Statut Modérateur 3 020
 
Attention : les calculs sont en radians ! Si tu veux des degrés il faut faire la conversion.
1