Avatar billede thewizard Nybegynder
29. december 2009 - 13:31 Der er 16 kommentarer og
1 løsning

Grader convertering til hældningstal

Overskrift siger alt faktisk.

Er der nogen der sidder inde med en klasse/metode som kan konvertere grader til et hældningstal?

@para: double grader
@return double hældningstal

Modtager den 0, returnerer den -1
Modtager den 90, returnerer den 0
Modtager den 180, returnerer den 1
Modtager den 270, returnerer den 0

Så skal klassen selvfølgelig kunne beregne alle andre variationer af parametre. 45 grader giver f.eks. -0.5

Er sikker på nogen må ha' haft det problem før.
Avatar billede arne_v Ekspert
29. december 2009 - 14:54 #1
Hvordan definerer du haeldningstal ?

Med definitionen i http://da.wikipedia.org/wiki/H%C3%A6ldningstal saa kan du bruge:

Math.tan(Math.toRadians(grader))

men den definition er ikke den samme som din.
Avatar billede thewizard Nybegynder
29. december 2009 - 15:18 #2
Jeg har lavet lidt hjemmebiks - jeg ved ikke om den holder 100%

--------------
if(degree >= 0 && degree <= 90){
            //-1 to 0
            double procent = degree/90;
            return -1*(1-procent);
        }
       
        if(degree > 90 && degree <= 180){
            //0 to 1
            degree-=90;
            double procent = degree/90;
            return (procent);
        }else if(degree > 180 && degree <= 270){
            //0 to 1
            degree-=180;
            double procent = degree/90;
            return 1-procent;
        }else if(degree > 270 && degree <= 359){
            //0 to 1
            degree-=270;
            double procent = degree/90;
            return -1*(procent);
        }
Avatar billede thewizard Nybegynder
29. december 2009 - 15:18 #3
Kommentarerne i koden er ikke korrekt
Avatar billede thewizard Nybegynder
29. december 2009 - 15:20 #4
Og der mangler en else if ;) Men tror godt du kan læse den.

Stadig 200 point for verifikation.
Avatar billede arne_v Ekspert
29. december 2009 - 15:22 #5
Den tror jeg ikke paa.

Det er ikke en lineaer funktion af grader.

Du skal bruge tan. Men jeg gaetter paa at der er et offset i forhold til wikipedia versionen.
Avatar billede thewizard Nybegynder
29. december 2009 - 15:25 #6
Er ikke den stærke tangens bruger. Enhedscirklen er ikke mit stærkeste kapitel ;).
Avatar billede thewizard Nybegynder
29. december 2009 - 15:25 #7
Bare husk at javas koordinatsystem er omvendt.. op er -1, ned er +1
Avatar billede arne_v Ekspert
29. december 2009 - 15:26 #8
Hvordan maaler du den haeldningsgrad sammenliket med wikipedia artiklen?
Avatar billede arne_v Ekspert
29. december 2009 - 15:27 #9
sammenlignet med
Avatar billede thewizard Nybegynder
29. december 2009 - 15:30 #10
Vinklen kommer fra et punkt i grafen. Vinklen danner jo en linje, og det er déns hældningstal vi ønsker at finde.

Hvis vinklen er 0 (peger direkte op af) er hældningstallet -1 (omvendt pga. javas gui). Osv. osv.
Avatar billede arne_v Ekspert
29. december 2009 - 15:37 #11
Vi har to problemer:

1) du maaler tilsyneladende grader fra lodret mens man normalt maaler fra vandret

det er nemt at loese ved at traekke 9- fra inden man beregner tangens

Math.tan(Math.toRadians(grader-90))

2) du mener at en lodret linie har haeldningen 1 eller -1 men den har faktisk haeldning uendelig eller minus uendelig

det problem ved jeg ikke hviordan vi loeser
Avatar billede thewizard Nybegynder
29. december 2009 - 15:40 #12
Jeg skal lige regne lidt på det :). Bare læg et svar, arne.
Tror der er en bedre løsning!
Avatar billede thewizard Nybegynder
29. december 2009 - 15:41 #13
(Altså bedre løsning end at finde hældningstal).
Avatar billede arne_v Ekspert
29. december 2009 - 15:49 #14
Hvis der er tale om at du skal "gaa" et stykke i en bestemt retning kan du jo bruge:

x = x + afstand * Math.cos(Math.toRadians(grader));
y = y + afstand * Math.sin(Math.toRadians(grader));
Avatar billede arne_v Ekspert
29. december 2009 - 15:49 #15
Og et svar fra mig.
Avatar billede arne_v Ekspert
29. december 2009 - 15:49 #16
om igen
Avatar billede thewizard Nybegynder
29. december 2009 - 16:08 #17
:) Det er svært at fortælle hvad det er til. Det er matematikken bag et lille applet-spil.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester