Tarkoitus olisi saada jokin objekti pyörähtämään esim. yhden asteen kerrallaan ja sitten odottamaan näppäintä ja taas yhden asteen jne. Olettaisin että tähän ei tarvita kovin montaa riviä?
Lähdettäisiin vaikka tästä:
SCREEN 12
X=50
Y=50
X2=200
Y2=200
DO
<tähän väliin luulisin trigonometristen tms komentojen tulevan>
LINE (X,Y)-(X2,Y2),4,B
A$=INPUT$(1)
LOOP
yhdellä linellä piirrettyä suorakaidetta et saa pyöriteltyä. tarvit neljä erillistä lineä. joku muu selittäköön tarkemmin.
No muotoillaan kysymystä hieman toisenlaiseksi(toki edelliseenkin saa vastata); otetaan pallo, joka liikkuu ruudulla. Se pyörii 360 astetta sivunuolista, liikkuu eteen/ylös taakse/alas. Kuinka kulmaa voi kääntää yhden...
Mikäs ongelma tässä on? Ensin poistat vanhan janan, lasket uudet koordinaatit kertomalla vanhat luvulla e^(i Pi/180), ja lopuksi piirrät kuvion uudessa asennossa. Tämä kääntää kuviota yhden asteen positiiviseen kiertosuuntaan origon suhteen.
...jossa "e" on...? jossa "i" on...?
Neperin luku ja imaginääriyksikkö.
e on e (neperin luku) ja i on i (imaginääriluku tai -yksikkö).
Katso vaikka wikipedia http://en.wikipedia.org/wiki/E_
i:n ja Piin välillä ei lue mitään Jaskan esimerkissä...? Tarkoittaako kertolaskua?
Algebrassa on tapana jättää kertomerkki pois. Siis tarkoittaa.
käsitin että i tarkoittaa -1 luulen että käsitin väärin
Niinpä teit. i * i = -1
. Tännekin tuli taas harvinaisen fiksuja vastauksia. Miksette saman tien neuvoneet, kuinka kolmiulotteisessa avaruudessa pyörittäminen hoituu kauniisti kvaterniolla? Annetaanpa nyt parantuneen hengen nimissä järkeviä vastauksia.
Xu = cos(a) * X - sin(a) * Y;
Yu = cos(a) * Y + sin(a) * X;
Muistaakseni noin. Jos positiivinen kiertosuunta ei miellytä, vaihda plussa ja miinus toisin päin. Vihjeenä vielä, että kannattaa laskea sini ja kosini valmiiksi muuttujiin ja käyttää muuttujissa olevia arvoja kaikille pyöritettäville pisteille, koska sinin ja kosinin laskeminen on suhteellisen hidasta.
Kannattaa aina aloittaa alkuperäisistä koordinaateista, koska muuten luvut muuttuvat aina vain epätarkemmiksi eikä laatikko kohta olekaan laatikko.
Lisäksi et voi tehdä tuota enää aivan samalla tavalla kuin ennen. Tarvitset kaikkien neljän kulman koordinaatit, ja joikainen kulma pitää aina laskea uudestaan. Sitten vain yhdistät ne oikeassa järjestyksessä. Eli yhdellä LINEllä ei mene.
Edit. Niin, T.M. tuossa näyttääkin lausekkeesta helpommin sovellettavan muodon, eli lasketaan vain tietty matka tiettyyn suuntaan ja lisätään halutut keskipisteen koordinaatit.
Itse tein yhden viivan pyörityksen näppäimillä siten, että kasvatin kulmaa joka näppäimenpainalluksella esim +0.01:llä, ja sitten laskin tuosta arvosta sin ja cos arvot (x:lle sin, ja y:lle cos), elikkäs:
ax = sin(kulma)*sade;
ay = cos(kulma)*sade;
line(x, y, x+ax, y+ay)
Edit: Ihmettelen miten Neperin luku ja imaginääriyksikkö liittyvät mitenkään tähän o_O *ei osaa*
Mielestäni tuollaiset elitistijutut voi jättää pois ja kertoa vastauksen, eikä heittää ihan ufoja kaavoja joita kukaan ei tajua.
kaunista korkkiruuvia rupesi piirtämään kun vihdoin viimein älysin tuon jutun. xD
T.M. kirjoitti:
Ihmettelen miten Neperin luku ja imaginääriyksikkö liittyvät mitenkään tähän
Trigonometriset funktiot ja eksponenttifunktio, e^x, voidaan määritellä sarjakehitelmien avulla (http://en.wikipedia.org/wiki/Taylor_series#List_of_Taylor_series_of_some_common_functions), jolloin niitä voidaan käyttää laajemmilla lukualueilla (kaikki reaali- ja kompleksiluvut), välittämättä siitä, mitä ihmettä esimerkiksi 2 ^ PI käytännössä voisi tarkoittaa.
Kun ekspontenttifunktion sarjakehitelmään sijoitetaan i*x, huomataan (varsin hämmästyttävä) yhteys, Eulerin kaava:
e^(ix) = cos(x) + i*sin(x)
Tästä ei käytännössä ole ainakaan peliohjelmoijalle mitään hyötyä (toisin kuin kvaternioista). Ja varsinkaan jos ei vielä hallitse trigonometriaa, ei muiden tällaisella matemaattisella triviatiedolla brassailu ainakaan auta asiaa.
Toisinaan voi olla vaikea tietää, minkä verran jollakin on esitietoja matematiikasta. En minä kirjoittanut viestiäni brassaillakseni, minusta vaan kompleksiluvut (myös kvaterniot) ovat helppo tapa hahmottaa pyörityksiä. Kyllä minäkin olen muualla saanut välillä ihan heprealta kuullostavia vastauksia omiin matematiikan ongelmiin, jotka olen sitten joko lisäkysymyksillä tai kynällä ja paperilla selvittänyt itselleni. En ole kokenut vastauksia mitenkään typeriksi, vaan olen ollut iloinen, kun olen huomannut, että asiaa voi ajatella myös kokonaan eri lailla kuin mitä minä ajattelin.
Toisinaan voi olla helppo arvata, että jos joku ei osaa kääntää laatikkoa ruudulla, hän ei varmaankaan tunne imaginäärilukuja ja tuollaisia hienoja menetelmiä :) Minullekaan ei sano mitään tuollainen imaginääriluku eksponenttina, ja sentään olen yrittänyt edes jossakin määrin ymmärtää kvaternioita, jotta voisin niitä paremmin projektissani käyttää.
Vaan nytpä oppitte, jos alatte tämän kirjoittelun perusteella opiskelemaan kompleksilukuja. :)
Ööh... Täytyy myöntää että nämä matemaattiset kaavat ja sarjakehitelmät ja kvaterniot tms eivät tällä hetkellä ole vahvinta alaani (pääsyynä että niitä ei ole vielä opetettu...) mutta eiköhän niidenkin aika tule joskus.:)
Kipperi kirjoitti:
Ööh... Täytyy myöntää että nämä matemaattiset kaavat ja sarjakehitelmät ja kvaterniot tms eivät tällä hetkellä ole vahvinta alaani (pääsyynä että niitä ei ole vielä opetettu...) mutta eiköhän niidenkin aika tule joskus.:)
...yliopistossa.
Mahdollisesti jo lukiossa...
Jos kvaternioita opetetaan lukiossa (muualla kuin ehkä Päivölässä), niin minä syön hattuni :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.