Aktív témák

  • _az

    senior tag

    Üdv.
    Azért nyitottam új topicot, mert a régiekkel má senki se törődik...
    Szal animációt kéne gyártanom. Pl. rajzolok egy kockát és mozgatni szeretném ide-oda...
    Ezt hogyan tehetem meg??? Milyen parancsokkal???
    A tudásom ilyen téren 0, a tankönyvem meg mellőzi ennek a bemutatását, órán meg egy szót se szóltak róla... :(

    HELP!!!! :F

    az

  • BaLinux

    tag

    Helló!

    Mi konkrétan a célod ezzel a programmal? Valami beadandó feladat, vagy ''csak'' érdekel és tanulni akarsz? Vágod annyira a c-t hogy kevés magyarázattal megérts, átláss egyszerű programokat?
    Ha az ilyen 3d, anim, stb komolyan érdekel, a DOSos fordítókat el lehet felejteni; a 3dhez (kocka) valami alapvető lineáris algebra tudás kellene meg talán opengl...
    szívesen segítek, csak konkretizáld mennyire akarsz belemenni.

  • _az

    senior tag

    Naná, hogy beadandó feladat! :DDD Csak elfelejtették leadni az anyagot, hál Istennek haladékot kaptunk.
    Szal felülről kell grafikusan a közlekedést modellezni. Tehát jön a kisautó, pirosnál megáll, kanyarodik, félreáll, ilyenek.
    Gondoltam először a télleges algoritmusra kéne rájönnöm, utána jöhat poligonáradat... 2D Vga 16 színnel már túzottan is jó! Ha lehet, akkor egy kis magyarázatot is fűzzél a dolgokhoz, mert amik nekem vannak példaprogramok, azok kissé átláthatatlanok, én meg ebben totál kezdő vagyok, csak tudok poligont, meg ilyeneket rajzolni.
    Előre is kösz!

    az

  • BaLinux

    tag

    válasz _az #3 üzenetére

    jajó :D
    Akkor ehhez nem kell háromdé, ha felülnézetből kell mutatni. A leírásod alapján gondolom _nem_ a szimuláció részéhez kérsz segítséget, hanem a megjelenítéshez?
    Akkor 1 autó modellét elég ha megfelelő structban eltárolod: milyen nagy téglalap az autó (méretek), hol van éppen (koordinátái), meg milyen szögben áll (radián), és az egyéb szükséges dolgok amik a szimulációhoz kellenek. Feltételezem, hogy az autó szigorúan téglalap. :)
    Aztán ebben a structban lévő adatokat módosítgatva szimulálod a mozgást, és minden ciklus végén kirajzolod az aktuális állapotot.
    A rajzolás során egyetlen ''nehézség'' az autó téglalapjának elforgatott koordinátáit kiszámolni, ami pontonként 2-2 sin/cos, és kész. (Ha mátrixszal csinálod a forgatást/eltolást, akkor még szép is lehet a megoldás ;])

  • _az

    senior tag

    válasz BaLinux #4 üzenetére

    no várjá...
    hogyan tudom a ''téglalapom''(majd dizájnolok később valami fasirt autót) összefűzni egy xy koordinátapárossal, meg a radiánnal? Mer ezek szerint pl egy for ciklussal változtatom v.melyik értéket(irány) és a sebességet meg delayel adom meg és mindezt a végén kirajzoltatom, ugye? Matrix nekem még egy csöppet magas...

    Ezekszerint ehhez nem szükségeltetik valami spec. függvény: tehát nem kell szívóznom ilyen setactivepage vagy mi a fenével, ugye?

    Azér egy rövid példát be tudnál rakni? pl. 1 kocka elmegy a kép bal széléről a jobbra...
    THX



    (Szerk: álljunk csak meg! a téglalap 4 szélének koordinátáit változtatom és már el is mozdul, mi????? Hú, megyek is kisérletezgetni!!!)

    [Szerkesztve]

    az

  • BaLinux

    tag

    válasz _az #5 üzenetére

    Na ez a jó hozzáállás :)
    A setactivepage-gel szívózni kell, mert úgy lesz jó, de én a DOSos jellegű megjelenítésre már nem igazán emléxem. :)

    Egy téglalapot tehát pl. úgy írhatsz le hogy:
    struct Teglalap {float x,y; float szelesseg, magassag; float szog;};

    És az én értelmezésemben az x,y lehetne mondjuk a téglalap közepe, mert akkor könnyebb kezelni a szog elfordulást. A 0 fokot általában a a vízszintes jobbra mutató vektor jelenti, és óramutató járásával ellentétesen nő, tehát PI/2 az a fel, PI a balra, 3/2*PI a le, és 2*PI-nél visszaértél.

    A téglalap 4 pontjának koordinátái (ahova kirajzolod) minden transzformáció nélküli (0,0 helyzetben és elforgatatlanul lévő) téglalapkoordinátára:
    forgatott_es_eltolt_x = x_eredeti*cos(szog)-y_eredeti*sin(szog) + x_eltolas
    forgatott_es_eltolt_y = -x_eredeti*sin(szog)+y_eredeti*cos(szog) + y_eltolas
    Asszem ennyi kell neked.
    Azért leírom hogy az (x_eredeti; y_eredeti) a következő pontok:
    P1(-szelesseg/2; magassag/2), P2(-szelesseg/2; -magassag/2); P3(szelesseg/2; magassag/2); P4(szelesseg/2; -magassag/2).

    Természetesen ezzel a módszerrel csak addig lehet majd pontokat transzformálnod, amíg valamilyen poligont rajzolsz. Ha képet teszel a helyére, más a helyzet, mert akkor képet kell hasonlóan elforgatni, ami bonyibb!

    Még valami, vigyázz azzal, hogy a képernyő koordinátarendszerének y tengelye a descartes-félének a fordítottja! Tehát rajzolásnál még plusz negálást is számolhatsz.
    Remélem segítettem...

  • _az

    senior tag

    JAJA!!! KÖSSZIKEEEE!!!!!! :C

    Már sikerült is csinálnom egy primitív, de mozgó kockát!!!

    az

  • taltos

    senior tag

    Üdv!

    Én még egyelőre nem tudok segíteni, de aktív figyelője leszek ennek a topicnak! Hajrá!!!
    Ha kellek valamire, elértek! :)

  • BaLinux

    tag

    válasz _az #7 üzenetére

    Na, láttam egy vicces filmet :)

    Szívesen segítek ilyen kezdeti nehézségeken. Bármi értelmes kérdésed van c, c++, java, prolog, sml, sql, php nyelvekről vagy opengl meg ilyesmi libek használatáról, esetleg ezek matek alapjáról, grafikáról, ötlet kell vagy ilymi, csak szóljál :B

Aktív témák