cb-hackers / cbEnchanted

A new runtime for CoolBasic
13 stars 3 forks source link

Koordinaatistomuunnokset #109

Closed kukkamario closed 12 years ago

kukkamario commented 12 years ago

Funktiot maailmakoordinaattien muuntamiseksi näyttökoordinaateiksi ja toisinpäin.

aXu-AP commented 12 years ago

Postasin nämä jo foorumeille, mutta tässä on maailma=>näyttö cb:llä toteutettuna:

Function WToSX(X#, Y#)
    X = (X - CameraX()) * cbeCameraZoom()
    Y =-(Y - CameraY()) * cbeCameraZoom()
    A# = GetAngle(0, 0, X, Y) - cbeCameraAngle()
    D# = Distance(0, 0, X, Y)

    Return Cos(A) * D + SW/2
EndFunction

Function WToSY(X#, Y#)
    X = (X - CameraX()) * cbeCameraZoom()
    Y =-(Y - CameraY()) * cbeCameraZoom()
    A# = GetAngle(0, 0, X, Y) - cbeCameraAngle()
    D# = Distance(0, 0, X, Y)

    Return -Sin(A) * D + SH/2
EndFunction

Näistä olisi sitten hyvä olla cb:n tyyliin "kakkosversiot", eli parametrinä objekti, vähentää kirjoittamista paljon.

kukkamario commented 12 years ago

Joo kyllä meillä on nämä vastaavat jo cbE:n sisällä toteutettuna esimerkiksi MouseWX/Y:tä varten. Pitäisi SItten vaan tehdä ne custom funktiot niistä.

Ehkä olisi parempi jos olisi cbeWToSX/Y ja sitten cbeObjectSX/Y.

aXu-AP commented 12 years ago

Niinpä tietenkin teillä on ne siellä, enpä ajatellut tuota ;) Soveltuuko se transformaatiomatriisimatikka muuten tähän hommaan?

kukkamario commented 12 years ago

Niillä koordinaatiston ne muunnokset tehdäänkin. :)