XLib programozas -transparent pixmap

Kezdőlap Fórumok Programozás XLib programozas -transparent pixmap

10 bejegyzés megtekintése - 11-20 / 23
  • Szerző
    Bejegyzés
  • #1911507
    admin
    Adminisztrátor

      Hali Gabaman!

      Kiprobaltam az interpolaciokat.Most lehet hogy hulyeseg amit mondok, de szerintem ezek
      ebben az esetben nemigen hasznalhatoak, vagy egyszeruen nem jottem ra.
      A helyzet az hogy ezek az interpolacios eljarasok az f(x)=y oszefuggesen alapulnak,magyaran fuggvenyek.
      De itt a turistavonalak rajzolasanal ez nem alkalmazhato!Hiszen egy x ertekhez akar tobb y is tartozhat(maguk a pontok ugye,milyen gorbe lesz mondjuk ha x tengely a vizszintes,a (0,0) (1,1) meg a (0,2) pontokbol?)
      Paraszti nyelven megfogalmazva , ha a turistaut „visszafordul” , akkor a gorbe szepen torni fog
      hiszen az eljaras adott y2 y3 gorbeszakasz kiszamitasa eseten nem veszi figyelembe semelyik x koordinatat semelyik yhoz.

      #1911508
      gabaman
      Felhasználó

        Hello!

        Kiprobaltam az interpolaciokat.Most lehet hogy hulyeseg amit mondok, de szerintem ezek ebben az esetben nemigen hasznalhatoak, vagy egyszeruen nem jottem ra.

        Nem hülyeség, csak ha nem látod át, akkor nem nagyon tudsz mit kezdeni vele. Ne add fel, már nagyon közel vagy a megoldáshoz. Szándékosan ajánlottam a koszinusz-interpolációt, mert a pontosabb Coons-Hermite interpolációhoz sokkal komolyabb matematikai (fõleg analízis) ismeret szükséges.

        A helyzet az hogy ezek az interpolacios eljarasok az f(x)=y oszefuggesen alapulnak,magyaran fuggvenyek.

        Valóban az f(x)=y összefüggésen alapulnak, de nem a „hagyományos” értelemben vett függvények. Az interpolálás mindíg szakaszokat jelent, és nem folytonos (végtelen) vonalat. Az interpoláló függvénynek van egy f(x)=y alakú bázisfüggvénye, mely általában csak 0 és 1 között kerül kiértékelésre.

        Hiszen egy x ertekhez akar tobb y is tartozhat(maguk a pontok ugye,milyen gorbe lesz mondjuk ha x tengely a vizszintes,a (0,0) (1,1) meg a (0,2) pontokbol?)  

        Igen, pontosan ezért kerül szakaszonként kiértékelésre. Elsõ szakasz: (0,0) és (1,1), második: (1,1) és (0,2). Függvényekkel ez nem megvalósítható, mert ott az x_(n) < x_(n+1) feltételnek mindíg teljesülnie kell. Tehát a koszinusz interpoláció
        bázisfüggvénye: f(x) = (1 – cos(mu*PI)) / 2
        interpoláló függvénye: f(y1, y2, dx) = y1*(1-((1-cos(dx*PI))/2)) + y2*((1-cos(dx*PI))/2), ahol y1 és y2 a P(n) és P(n+1) pontok y értékei, és dx az szakaszolási együttható (hogy hányadik x részt számítjuk ki)
        interpoláló algoritmusa (egységnyi mintevételezés esetén, x_(n+1)-x_(n) = 1):

        Code:
        struct Koord {

         float x;

         float y;

        };

        float bazis (float x)

        {

         return (1.0-cos(x*PI)) / 2.0;

        }

        float interpolcio (float y1, float y2, float dx)

        {

         return y1 * (1.0-bazis(dx)) + y2 * bazis(dx);

        }

        void interpolalo_algoritmus ()

        {

         float y_interp;

         Koord pontok[MAX_PONTOK];

         (…)

         for (int i=0;i

        Természetesen lehet változó x_(n+1)-x_(n) értékû, vagy egyenlõ ívhosszas algoritmust is használni. A fenti a legegyszerûbb, hogy jobban meg lehessen érteni.

        Részletesebb infó (bár 3D-s):
        http://www.prog.hu/article.php?title=3D%20grafika

        #1911509
        PAZO
        Felhasználó

          Egyébiránt pont azt az embert találtad meg szabola, aki segíteni tud neked… Gabaman, hogy halad a 3D tervezõprogramod? Screenshot-okat láttam…

          #1911510
          gabaman
          Felhasználó

            Hát, az eredményességét többféleképpen lehet értelmezni. Részemrõl siker, mert a szerkezetét tekintve a Blendernél messze fejlettebb, és a kitûzött céljaim többségét elértem, ráadásul nagyon sokat tanultam a programozás során, így mindenképpen megérte elkezdenem. A másik oldalról kudarc, mert az érdeklõdés a nullát közelíti, senki sem akar fejlesztõként csatlakozni, és teljesen használhatatlan. Ez utóbbi az elõbbiek következménye, ha ilyen alacsony az érdeklõdés, akkor nem fogom használható tartalommal feltölteni. Ráadásul pár biztató szó kivételével általában negatív, helyenként gúnyos megnyilvánulásokat kaptam cserébe, amiktõl elment a kedvem a további publikus fejlesztéstõl. Ahhoz meg egyedül rettentõen kevés vagyok, hogy egy valahogyan megálló kereskedelmi terméket hozzak ki belõle. Eredetileg a 3D grafika iránti érdeklõdés és a programozási kedv indított el, és végigkísérte az egész projectet. A jövõt illetõen folytatódni fog a fejlesztés, csak nem a korábbi utat fogom követni, és más programozási nyelvre fogok áttérni.

            #1911511
            PAZO
            Felhasználó

              … épp eszembe jutott Orwell 1984-e, igaz pont más témával kapcsolatban. Kis összefüggés, ami arra késztet hogy leírjam ezt a pár szót talán annyi, hogy a lelkét gyötrik ki a fõszereplõnek, hogy ismét munkába állhasson.

              Egyébiránt Rebol az új programnyelv?

              #1911512
              admin
              Adminisztrátor

                Hello Gabaman!

                Szoval te ilyen nagy guru vagy ebben a temaban, akkor csak kozos nevezore fogunk jutni.. 😀
                Eloszor en is a cosinusot probaltam, mert az tenyleg csak ket ponttol fugg.
                Tudom hogy szakaszokat kell venni az interpolacioban,mindent ugy csinaltam ahogy leirtal, csak maskent kodoltam a dolgot.

                cospol1.jpg

                Ezen a kis abran lathato:
                A(x1,y1) B(x2,y2) C(x3,y3) C1(x4,y4)
                megcsinaljuk a gorbeket az AB es AC szakaszokon, semmi gond, nagyon szepen mukodik a dolog, de en a B pontbol a C1-be akarok menni, es nem a g1 gorben hanem a g2-n,hiszen
                ha a g1-n megyek olyan csucs lesz benne mint a Himalaja.Es mivel a cosinusos interpolacionak, ahogy neztem,az actx koordintajara (marmint a kis szakaszoke) ervenyes a kov osszefugges (ha mondjuk BC1 szakaszt nezzuk): x4<=actx<=x2
                Az viszont egyertelmuen latszik a g2 gorbebol hogy g2 pontjainak x koordinataira ez a feltetel nem fog teljesulni.

                Ezert probaltam atmenni a negyzetes interpolaciora ahol ugye nemcsak B es C1 pontokat kell figyelembe vennunk, hanem a szamitasba be kell vonnunk a B elotti azaz A pontot illetve a C1 utani pontot mely most nincs abrazolva.De a negyzetes interpolacios eljarasnal sem fog mukodni ez a dolog a „visszahajlas” miatt, hiszen az interpolacios algoriitmus nem veszi
                figyelembe sem az A sem a C1 utani pont x koordinatajat.
                Tehat azt hiszem most mar teljesen vilagos a dolog, hogy mi is a gondom….

                #1911513
                admin
                Adminisztrátor

                  Bocs a kepert! Ugy nezem nem mindig jelenik meg
                  ugyhogy itt a cime
                  http://www.angeltowns.com/members/szabola/cospol1.jpg 👿

                  #1911514
                  PAZO
                  Felhasználó

                    De a negyzetes interpolacios eljarasnal sem fog mukodni ez a dolog a „visszahajlas” miatt, hiszen az interpolacios algoriitmus nem veszi  
                    figyelembe sem az A sem a C1 utani pont x koordinatajat.
                    Tehat azt hiszem most mar teljesen vilagos a dolog, hogy mi is a gondom….

                    Most lehet butaságot fogok kérdezni, de olyant nem lehet, hogy több részre osztod a kirajzolást?

                    #1911515
                    gabaman
                    Felhasználó

                      Ezen a kis abran lathato:
                      A(x1,y1) B(x2,y2) C(x3,y3) C1(x4,y4)
                      megcsinaljuk a gorbeket az AB es AC szakaszokon, semmi gond, nagyon szepen mukodik a dolog, de en a B pontbol a C1-be akarok menni, es nem a g1 gorben hanem a g2-n,hiszen
                      ha a g1-n megyek olyan csucs lesz benne mint a Himalaja.Es mivel a cosinusos interpolacionak, ahogy neztem,az actx koordintajara (marmint a kis szakaszoke) ervenyes a kov osszefugges (ha mondjuk BC1 szakaszt nezzuk): x4<=actx<=x2
                      Az viszont egyertelmuen latszik a g2 gorbebol hogy g2 pontjainak x koordinataira ez a feltetel nem fog teljesulni.

                      így igaz, viszont ha ezt ilyen jól megfogalmaztad, akkor nem tejlesen értem miért nem egyértelmû, hogy az interpolált szakasz is rendelkezik a bázisfüggvény minden pozitív és minden negatív tulajdonságával, nevezetesen:
                      – mindíg van pontosan egy inflexiós pontja két vezérlõpont között (kivéve ha x_n = x_(n+1) vagy y_n = y_(n+1), mert akkor a görbe egyenes)
                      – az interpolált görbe nem nyúlik túl a vezérlõpontok által leírt téglalapon
                      – mindegyik vezérlõpontra igaz, hogy az interpolált körbe érintõje (1, 0) vagy (-1, 0) vektor, ami az x tengellyel 0 vagy 180 fokot zár be
                      Itt fõleg az utolsó kettõvel van gond, mert a g1 görbe benne van a B és C1 által leírt téglalapban, míg a g2 nincs, és esély sincs az utolsó pont miatt bármilyen korrekcióra. Ezt az árat kell fizetni az egyszerûségért. Ha túl drága, akkor emelni kell a tétet.

                      Ezert probaltam atmenni a negyzetes interpolaciora ahol ugye nemcsak B es C1 pontokat kell figyelembe vennunk, hanem a szamitasba be kell vonnunk a B elotti azaz A pontot illetve a C1 utani pontot mely most nincs abrazolva.De a negyzetes interpolacios eljarasnal sem fog mukodni ez a dolog a „visszahajlas” miatt, hiszen az interpolacios algoriitmus nem veszi figyelembe sem az A sem a C1 utani pont x koordinatajat.

                      Hát, nem is lehet úgy láncot alkotni, hogy mindenki csak a mögötte levõ kezét fogja. Ezért kell másodfokú helyett harmadfokú polinomot alkalmazni. De ennek meg „túl nagy a hullámossága”, mert a bázisfüggvény kezdõ és végpontban vett érintõje nem lesz nagyobb +-90 foknál. Ezzel már nem törik meg a görbe, de még mindíg nem közel ideáis megoldás. Arra ott van a már említett Coons-Hermite interpoláció, ahol tetszõleges érintõk (0-360 fok) által meghatározott görbéket lehet leírni. Sohasem törik meg, és nagyon jól követi a pontok vonalvezetését.

                      #1911516
                      gabaman
                      Felhasználó

                        De a negyzetes interpolacios eljarasnal sem fog mukodni ez a dolog a „visszahajlas” miatt, hiszen az interpolacios algoriitmus nem veszi  
                        figyelembe sem az A sem a C1 utani pont x koordinatajat.
                        Tehat azt hiszem most mar teljesen vilagos a dolog, hogy mi is a gondom….

                        Most lehet butaságot fogok kérdezni, de olyant nem lehet, hogy több részre osztod a kirajzolást?

                        Itt a gond az, hogy az AB(C1) esetén a B pontban a görbe érintõje (deriváltja) nem létezik, mert az AB szakasz felõl 0 fok, míg az B(C1) felõl 180 fok. Akkor nem törik meg a görbe, ha mind a két oldalról azonosak. Ez elméleti „hiba”, nem megvalósítási.

                      10 bejegyzés megtekintése - 11-20 / 23
                      • Be kell jelentkezni a hozzászóláshoz.