Grandi wrote:Galgoneer wrote:Lisäksi minua ärsyttää tuo tapa laskea kahden samalla akselilla olevan pisteen etäisyys distance-funktiolla, kun on olemassa operator- eli perus miinuslasku ( tyyliin x2-x1, lienee hieman kevyempi, kuin turhat potenssiin korotukset ja neliöjuuret )
Ei kai se noin yksinkertaista voi olla? Ainakaan funktiosi ei toiminut.
Vaikka sanoit, että et matematiikasta mitään ymmärrä, laitanpa tähän kuitenkin selityksen, miksi se on noin:
Code: Select all
sqrt( (x2-x1)^2 + (y2-y1)^2 ) // tällä siis lasketaan etäisyys
jos y2=0 ja y1=0, niin lauseke sievenee seuraavasti:
sqrt( (x2-x1)^2 + (0-0)^2 ) //tässä on siis vain korvattu y2 ja y1 nollilla
sqrt( (x2-x1)^2 + 0 ) // 0-0=0 ja 0^2=0
sqrt( (x2-x1)^2) // nollan lisääminen ei vaikuta mihinkään, koska nolla luonteensa puolesta on kovin olematon
x2-x1 // neliöjuuri on vastatoimenpide toiseen korotukselle, joten sqrt(x^2)=x
Joten kyllä se on ihan noin yksinkertaista. y-etäisyyden laskennassa vastaavasti x2-x1=0.
Grandi wrote:
Ja kaipaisin nyt siis ihan toimivaa funktiota
Kyllä se ainakin minulla toimii, kokeile vaikkapa funktiotani seuraavilla arvoilla:
Code: Select all
cout << GetAngle(0,0,1,0) << endl; //pitäisi olla 0
cout << GetAngle(0,0,1,1) << endl; //pitäisi olla 45
cout << GetAngle(0,0,0,1) << endl; //pitäisi olla 90
cout << GetAngle(0,0,-1,1) << endl; //pitäisi olla 135
cout << GetAngle(0,0,-1,0) << endl; //pitäisi olla 180
cout << GetAngle(0,0,-1,-1) << endl; //pitäisi olla 225
cout << GetAngle(0,0,0,-1) << endl; //pitäisi olla 270
cout << GetAngle(0,0,1,-1) << endl; //pitäisi olla 315
En sitten tiedä millaiset arvot noille kulmille haluat, jos tuo ei käy.
EDIT:Näköjään coolbasicin GetAngle käyttää outoa koordinaatistoa, jossa y-akseli kasvaa alaspäin. Jos todellakin haluat käyttää tuollaista epästandardia käppyrää, senkun vain kutsut funktiota y-arvojen vastaluvuille, eli et kutsukaan GetAngle(x1,y1,x2,y2), vaan kutsut GetAngle(x1,-y1,x2,-y2). Suosittelisin kyllä käyttämään koordinaatistoa, jossa y kasvaa ylospäin mentäessä