Avatar billede zitzo Nybegynder
07. maj 2005 - 21:39 Der er 17 kommentarer og
1 løsning

Et matematisk spørgsmål

Hej

Jeg sidder og udvikler et program i java, som blandt andet laver en graf over computerens serielle kommunikationen. Jeg har fundet ud af det nogengange kan være svært at se den nøjagtige værdi, så jeg har levet en listener der sender musens Y punkt til en funktion der skal regne ud hvad værdien er ved dette punkt.

Jeg har lavet et regnestykke der kan regne Y ud når der skal tegnes et punkt i grafen. Men at få vendt det regnestykke rundt er for stor en mundfuld åbentbart... jeg har ikke kunne få det til at lykkedes endnu :)

regnestykket til udregning af y er som følger:
Y = 160 + ((input/graphMax)/120))
160 er Y værdien på grafens nulpunkt
input er værdien der skal findes et Y punkt til.
graphMax er grafens maksimale værdi
120 er antallet af pixels grafen er høj

nu skal jeg så finde "input" ud fra de andre informationer. er der nogen der kan hjælpe?

Med venlig hilsen
Mads
Avatar billede jakoba Nybegynder
07. maj 2005 - 21:42 #1
( Y - 160  ) * 120 * graphMax = input
Avatar billede zitzo Nybegynder
07. maj 2005 - 21:43 #2
ups der er vist en ) for meget
Y = 160 + ((input/graphMax)/120)
Avatar billede jakoba Nybegynder
07. maj 2005 - 21:47 #3
eller langsomt:
      Y = 160 + ((input/graphMax)/120))                  // flyt 160 over på anden side
=>  Y -160 = (input/graphMax) / 120                      // gang med 120
=>  ( Y -160 ) * 120 = input / graphMax                  // gang med graphMax
=>  ( Y -160  ) * 120 * graphMax = input

ok?
Avatar billede zitzo Nybegynder
07. maj 2005 - 21:48 #4
det får jeg nogen store negative tal ud af...
Avatar billede zitzo Nybegynder
07. maj 2005 - 21:51 #5
man kan også sige at hvis den modtager 160 fra musen skal det være lige 0 og jo tættere den kommer på 40 jo højere skal den blive hvor 40 skal være = graphMax
Avatar billede zitzo Nybegynder
07. maj 2005 - 21:53 #6
og jeg beklager regnestykke var lidt anderledes
det rigtige ser således ud:
Y = 160 - ((input/graphMax)/120)


sry.
Avatar billede jakoba Nybegynder
07. maj 2005 - 21:54 #7
Kan du give et sæt tal for de 3 værdier
  input
  graphMax
  Y
et sted på grafen ?

gerne flere sæt.
Avatar billede zitzo Nybegynder
07. maj 2005 - 21:55 #8
2sec
Avatar billede jakoba Nybegynder
07. maj 2005 - 21:57 #9
Ah, det var bedre :-))

    Y = 160 - ((input/graphMax)/120))                  // flyt 160 over på anden side
=>  Y -160 = - (input/graphMax) / 120                    // gang med -1
=>  160 -Y = (input/graphMax) / 120                      // gang med 120
=>  ( 160 -Y ) * 120 = input / graphMax                  // gang med graphMax
=>  ( 160 -Y ) * 120 * graphMax = input
Avatar billede zitzo Nybegynder
07. maj 2005 - 22:00 #10
her er hvor jeg regner y ud:
Y = 160 - ((input/graphMax)/120)
60 + ((104.0/145)*120) = 73.93103
160 + ((55.0/145)*120) = 114.48276
160 + ((106.0/145)*120) = 72.27586
160 + ((56.0/145)*120) = 113.655174
160 + ((108.0/145)*120) = 70.62069
160 + ((108.0/145)*120) = 70.62069

jeg laver lige nogen prints af det nye regnestykke
Avatar billede zitzo Nybegynder
07. maj 2005 - 22:03 #11
her er med det nye regnestykke

( Y - 160  ) * 120 * graphMax = input

(131 + 160) * 120 *255 = 8904600
(104 + 160) * 120 *255 = 8078400
(79 + 160) * 120 *255 = 7313400
(121 + 160) * 120 *255 = 8598600
(81 + 160) * 120 *255 = 7374600
(53 + 160) * 120 *255 = 6517800
Avatar billede jakoba Nybegynder
07. maj 2005 - 22:04 #12
husk også at indsætte det '-' i dine regnestykker. som de står er de misvisende.
Avatar billede jakoba Nybegynder
07. maj 2005 - 22:06 #13
se det korrigerede regnestykke ovenfor:
( 160 -Y ) * 120 * graphMax = input
giver
( 160-131) * 120 * 255 = ______?
Avatar billede zitzo Nybegynder
07. maj 2005 - 22:06 #14
og emd det nyeste
kode: ((160-fixPoint) * 120 * graphMax)

(160 - 45) * 120 *255 = 3519000
(160 - 102) * 120 *255 = 1774800
(160 - 65) * 120 *255 = 2907000
(160 - 54) * 120 *255 = 3243600
(160 - 97) * 120 *255 = 1927800
(160 - 112) * 120 *255 = 1468800
Avatar billede zitzo Nybegynder
07. maj 2005 - 22:09 #15
ok kan se der er nogen typos med de + og - men resultatet komme fra den øverste udregning :)
Avatar billede jakoba Nybegynder
07. maj 2005 - 22:12 #16
Lige et øjeblik. din udregning er jo IKKE  /120  men istedet  *120

Ah, det var endnu bedre :-))

      Y = 160 - ((input/graphMax) * 120)                  // flyt 160 over på anden side
=>  Y -160 = - (input/graphMax) * 120                    // gang med -1
=>  160 -Y = (input/graphMax) * 120                      // del med 120
=>  ( 160 -Y ) / 120 = input / graphMax                  // gang med graphMax
=>  (( 160 -Y ) / 120) * graphMax = input

så:
    (( 160 -Y ) / 120) * graphMax = input
giver
    (( 160-131) / 120) * 255 = ______?

Men der er stadig uoverensstemmelser. i dine input -> Y udregninger er  graphMax == 145, den anden vej siger du  255.  ???
    hvad er det korrekte.

Nok det væsentligste ved matematik er at holde rede i hvad pokker man laver :-))

mvh JakobA
Avatar billede zitzo Nybegynder
07. maj 2005 - 22:16 #17
kanon det ser ud til at virke... jeg takker... jeg skla vist have læst op på den matematik hehe

Mads
Avatar billede jakoba Nybegynder
07. maj 2005 - 22:23 #18
Ja!

takker :)
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