Avatar billede moine Nybegynder
27. september 2007 - 13:31 Der er 2 kommentarer

Hjælp til koordinatsystem og dataplotning

Hej

Bakser med at lave et koordinat system i en form, hvori der skal afbilledes nogle data vha. line-commands. Har googlet, læst og prøvet at forstå hvad "scale (x1,y1)-(x2,y2)" gør, men kan ikke få det til at give mening.

Koordinatsystemet er kvadratisk med dimensionerne 470x470 pixels (det skal kunne ses på meget gamle skærme). Selve akserne er tegnet og ligger fast.

Data ligger i et  dynamisk array som maksimalt kan have størrelsen 470 (svarende til et datapunkt for hver pixel på x-aksen). y-værdierne normaliserer jeg så de får en værdi mellem 0 og 10 og der vil derfor være 10/470 = 0.0213 y-enhed pr pixel i denne dimension.

Origon (0,0) på koordinatsystemet ligger i punktet (104, 494) pixel i formen.

Dataene (eller rettere de linjer de tegner) skal altså transponeres og skaleres så de passer ind i koordinatsystemet efter ovenstående regler, dvs. så (0,0) ligger i (104,494) og y-værdierne skaleres op med en faktor 47 (hvis jeg har forstået mig selv rigtigt ;-) Kan det gøres med en scale kommando og hvordan skal den så se ud?

På forhånd tak :-)
Avatar billede moine Nybegynder
27. september 2007 - 13:34 #1
Nå ja... jeg bruger VB6 - bare for en god ordens skyld ;-)
Avatar billede martin_moth Mester
07. oktober 2007 - 09:49 #2
Transformationen er de nem at lave, og jeg tror ikke der er nogen genvej til det du ønsker. Men det er jo nemt at lave selv - det er jo blot en forskydning af 0-punktet, og en skalering af y-aksen. så det er bare at trække fra og lægge til på x,y kooordinaterne. Fx:

Private Function TransformX(ByVal x As Long) As Long
  TransformX = x + 104
End Function

Private Function TransformY(ByVal y As Long) As Long
  TransformY = y * 47 + 494
End Function

'Test af transformation:
  Dim x As Long
  Dim y As Long
  x = 10
  y = 10
  MsgBox "x bliver til : " & TransformX(x)
  MsgBox "y bliver til : " & TransformY(y)


NB!!!!! Har du husket, at din Y-akse er positiv nedad? Hvis du vil have den til at gå opad som på et normalt koordinatsystem, skal du bytte lidt om på nogle fortegn
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