pyörivä suorakaide/pcx (c)

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ä..
5252
Äänestä

Muut lukivat myös

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

Äänestä
  • 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.. :)

    Äänestä

  • maitovalas kirjoitti:

    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

    Äänestä

  • Punikki & 7 hyypiötä kirjoitti:

    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ä..(?) :)

    Äänestä

  • maitovalas kirjoitti:

    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 ;)

    Äänestä

Kommentoi aloitusta


maitovalas kirjoitti:

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ä..

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu