ei kellään sattuisi olemaan valmista funktiota, joka piirtää tietyn kokoisen suorakaiteen tietyssä kulmassa.. ..olisi autopelin kehittelyssä ihan kätevä.. ja olisi muuten sellainen pcx:n pyöritysfunktiokin ihan kätevä..
pyörivä suorakaide/pcx (c)
maitovalas
5252
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 5
Vanhimmat
käytä funktioita sin ja cos.
x=cos(kulma_asteina/180*PII)*säde x_keskipiste
y=sin(kulma_asteina/180*PII)*säde y_keskipiste
ed. laskee pisteen (x,y) SÄDE-säteisen ympyrän kehälle, ympyrän kp (x_keskipiste,y_keskipiste)
Jos haluat nopeuttaa kiertorutiiniasi niin älä käytä liukulukufunktioita sin ja cos vaan luo taulukko, johon olet laskenut valmiiksi asteen välein funktioiden arvot.
esim.
float SIN[360];
float COS[360];
for (i=0;i
on jo nuo taulukot tehty, 255-asteiselle ympyrälle.. minulla on jo sellainen funktiokin, jonka pitäisi pyöräyttää pcx:ää, se vain ei toiminut.. sotki jotain ihan ihmeellistä muilla paitsi 0-asteella.. jostain syystä..(?) ajattelin vain, jos joku jaksaisi copypastettaa sellaisen toimivan tänne.. jatuota.. se pyörivä suorakaide.. siinäkin olisi kiva joku valmis funktio, kun vähän laiskottaa.. :)
ei jaksa vääntää koodia...no, suorakaide about noin pauttiarallaa...
for (i=0;i
joo.. sen suorakaiteen väänsin tänään päivällä.. joskin se vaatii 4 temppitietoa (pituus ja leveys: x ja y).. muttatuota.. mitä tuo prosentti tekee? siis esim tuossa if( i8 )? jatuota.. tuo kp_x:n ja kp_y:n merkitys jäi vähän epäselväksi? ja muutenkaan ei oikein kolahtanut, jotta mitä ja miten tuossa tehdään.. :)
muttajoo.. itse tein sen näin "yksinkertaisesti"..
/* lisäillään toiseen kulmaan 1/4 ja
muutetaan se välille 0-255 (oma
funktionsa) */
za = z 64;
za = trangle( za );
/* määritetään auton pisteet */
px=(int)(sintab[z]*l); /* pit */
py=(int)(costab[z]*l); /* pit */
lx=(int)(sintab[za]*(w/2)); /* lev */
ly=(int)(costab[za]*(w/2)); /* lev */
/* piirretään auto */
d_line( x-lx, y-ly, x px-lx, y py-ly, c );
d_line( x lx, y ly, x px lx, y py ly, c );
d_line( x-lx, y-ly, x lx, y ly, c );
d_line( x-lx px, y-ly py, x px lx, y py ly, c );
jotta sillälailla.. ..olisi sen kait voinut helpomminkin tehdä..(?) :)
% on jakojäännos eli modulo
10%3=1 eli 10=1 (mod 3)
if (i%128) -> jos i/128 ei mene tasan niin ...
elikkä kun sulla oli kulmat 0-255, niin
0%128=0 (epätosi)
64%128=64 (tosi)
128%128=0 (epätosi)
192%128=64 (tosi)
kp_x=keskipisteen x-koordinaatti, kp_y vast. y-koord.
Älä välitä jos ei kolahtanut, tein sen mututuntumalla ilman testausta ;)