Math przeliczanie radianów na stopnie

Odpowiedz Nowy wątek
2011-01-22 16:05

Rejestracja: 9 lat temu

Ostatnio: 7 lat temu

0

Witam

Jestem początkującym programistą i nie mogę znaleźć odpowiedzi na zaistniały problem a mianowicie chodzi o przeliczanie stopni na radiany.

Udało mi się znaleźć na stronie oracla sposób na przeliczanie ale przelicza mi tylko do 90stopni a potem pokazuje już tylko NaN, jak zrobić żeby przeliczało do 360 lub 180 ze stopniami ujemnymi?

oto co wymodziłem


\\Dla sin(1)

wynik = 1;
wynikfunkcjistopnie = Math.toDegrees(Math.asin(wynik)) ;
wynikfunkcjiradiany = Math.toRadians(wynikfunkcjistopnie);
System.out.println(wynikfunkcjistopnie + "\n" + wynikfunkcjiradiany)

\\i z tego co wyczytalem wychodzi prawidłowo (przynajmniej jeżeli chodzi o stopnie)
\\ale gdy sin jest powyżej 1 komunikat będzie NaN, wygląda to tak jakby nie dało się wyjść poza 90 stopni, może mi ktoś doradzić \\\\co tu zrobic?

Pozostało 580 znaków

2011-01-22 16:27

Rejestracja: 9 lat temu

Ostatnio: 3 lata temu

0
rad=st*Math.PI/180;

??

Pozostało 580 znaków

2011-01-22 16:38

Rejestracja: 9 lat temu

Ostatnio: 7 lat temu

0

wporządku a odwrotnie?

w programie chodzi o to aby wpisując w oknie np sin (1) otrzymać 90 stopni i tak jest póki nie wpisze wartości np sin (1.1) bo wtedy pokazuje się NaN. Myśle ze problem tkwi z tym przeliczaniem i nie moge dojrzeć w czym jest problem :/

Pozostało 580 znaków

bo
2011-01-22 16:46
bo
0

Piszesz o funkcji sin(), ale w kodzie używasz funkcji asin(). A to coś zupełnie innego. I nic dziwnego, że dostajesz NaN, argument dla funkcji asin() musi być z przedziału [-1,1].

Pozostało 580 znaków

2011-01-22 16:49

Rejestracja: 9 lat temu

Ostatnio: 7 lat temu

0

Mhm w takim razie jak otrzymać kąt 90stopni wpisując Math.sin(1) ? Bo niestety nie wiem :(

Pozostało 580 znaków

2011-01-22 16:49

Rejestracja: 9 lat temu

Ostatnio: 3 lata temu

0

masz więc na myśli nie funkcję sinus, lecz arcus sinus

asin przyjmuje tylko argumenty z zakresu [-1,1], jeżeli interesuje Cię wartośc funkcji dla 1.1, to powinieneś poczytać czym jest arcus sinus

Pozostało 580 znaków

2011-01-22 16:51

Rejestracja: 9 lat temu

Ostatnio: 3 lata temu

0
Melzar napisał(a)

Mhm w takim razie jak otrzymać kąt 90stopni wpisując Math.sin(1) ? Bo niestety nie wiem :(

Nie wpisywać Math.sin tylko Math.asin i później przekształcić na stopnie, tak jak pokazałem wczesniej, tylko, że w drugą stronę

edytowany 1x, ostatnio: notexists, 2011-01-22 16:51

Pozostało 580 znaków

2011-01-22 16:56

Rejestracja: 9 lat temu

Ostatnio: 7 lat temu

0

No własnie tyle, że jak sam powiedzialeś asin przyjmuje wartości od -1 do 1 więc sinusa 1.1 juz tym nie zrobię a wlasnie tego potrzebuję :(

Pozostało 580 znaków

2011-01-22 17:13

Rejestracja: 9 lat temu

Ostatnio: 3 lata temu

0

jezeli nadal poszukujesz:

Melzar napisał(a)

Mhm w takim razie jak otrzymać kąt 90stopni wpisując Math.sin(1) ? Bo niestety nie wiem :(

poczytaj o funkcji arcus sinus (matematycznej, a nie programistycznej :) ), to tak jak byś pytał dla jakiego x sin(x)=1.1 -> dla żadnego

edytowany 1x, ostatnio: notexists, 2011-01-22 17:13

Pozostało 580 znaków

2011-01-22 17:16

Rejestracja: 9 lat temu

Ostatnio: 7 lat temu

0

ok ;) te plecy z matmy będą mnie całe życie męczyć ;) dzięki za pomoc, pozdro :)

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0