MODELOWA, ebooks, ebooks komputerowe, Game Programming, Other, Game Design, 3D, A6, WINDOWS, Pulpit, Games Design ...

[ Pobierz całość w formacie PDF ]
Turbo PascalTr˘jwymiarowe modelowanie powierzchniMicha FaberWiele program˘w graficznych suľĄcych do modelowania obiekt˘wma opcj©, kt˘rĄ najog˘lniej moľna by okreli† sowem "Smooth"(wygadzanie). Obiekt poddany operacji wygadzania staje si© bardziejefektowny, gdyľ wszelkie kanty zostajĄ zaokrĄglone, nier˘wnoci powierzchniwyr˘wnane. Cz©sto wygadzanie polega na wstawieniu nowych punkt˘w mi©dzy punktyobiektu (interpolacja), kt˘re tworzĄ agodnezakrzywienia i zaokrĄglenia (rys. 1).W tym celu stosuje si© tzw. krzywe skadane typu Catmull-Rom. Krzyw©skadanĄ tworzĄ poĄczone ze sobĄ segmenty. Kaľdy z nich to fragmentkrzywej mi©dzy dwoma kolejnymi punktami interpolacyjnymi (rys. 1). Doutworzenia segmentu potrzebne sĄ cztery punkty, gdyľ dwa z nich majĄistotny wpyw na jego ksztat, dlatego teľ kaľde dwa sĄsiadujĄcesegmenty majĄ trzy punkty wsp˘lne.Przykad:segment 1 : 5,5,12,23 - krzywa mi©dzy punktami 5 i 12segment 2 : 5,12,23,30 - krzywa mi©dzy punktami 12 i 23segment 3 : 12,23,30,41 - krzywa mi©dzy punktami 23 i 30segment 4 : 23,30,41,41 - krzywa mi©dzy punktami 30 i 41Jak wida† w pierwszym segmencie zosta powt˘rzony pierwszypunkt : 5,5,... a w ostatnim : ...,41,41. Jest to konieczne, abypunkty te wĄczy† do sekwencji interpolacji. Pora teraz przytoczy†wz˘r do tworzenia segmentu krzywej skadanej :P = t^3*(-0.5*P1) + t^3*(1.5*P2) + t^3*(-1.5*P3) + t^3*(0.5*P4)+ t^2*P1 + t^2*(-2.5*P2) + t^2*(2*P3) + t^2*(-0.5*P4) + t*(-0.5*P1) +t*(0.5*P3) + P2gdzie P jest interpolowanym punktem dla danej wartoci t (0<=t<=1)(patrz procedura MakeSpline), P1,P2,P3,P4 to kolejne punkty segmentu.Zaprezentowany program tworzy za pomocĄ krzywych skadanychtr˘jwymiarowĄ powierzchni© na podstawie kilkunastuokrelonych w przestrzeni punkt˘w, po czym wywietla jĄ na ekranieoraz zapisuje do pliku SURF.DXF, kt˘ry moľna przetwarza† w wielu"renderach" lub programach typu CAD.Owa powierzchnia nazywana jest dalej siatkĄ interpolacyjnĄ, a punktyprzeci©cia jej lini - w©zami. Siatk© t© w programie reprezentujedwuwymiarowa tablica "Grid", kt˘rej liczba kolumn i wierszy (liczbaw©z˘w wzduľ osi X i osi Y) okrelona jest w staych GridNumX iGridNumY. Kaľdy element tej tablicy (w©ze siatki) zawiera informacj©o wysokoci Z w przestrzeni i pomocniczĄ zmiennĄ ID przyjmujĄcĄwartoci od 1 do GridNumX lub od 1 do GridNumY.W pierwszym kroku program przypisuje wsp˘rz©dnĄ Z kaľdego punktuuľytkownika (z tablicy "Points") odpowiednim w©zom siatkiinterpolacyjnej. W©zy te otrzymujĄ r˘wnieľ (w zmiennej ID) numerwiersza, w kt˘rym si© znajdujĄ. Jest to konieczne, aby p˘«niej moľnabyo okreli†, z kt˘rego miejsca w siatce pochodzi dany w©ze, a takľeodr˘ľni† go od tych, kt˘rym wsp˘rz©dnej Z nie przypisano (ich zmiennaID r˘wna si© 0).W kolejnym kroku siatka zostaje podzielona na sektory (staa Section).Wszystkie w©zy, kt˘rych ID w ramach danego sektora (rys. 2) jestmniejsze lub wi©ksze od 0, zostajĄ przesuni©te na rodkowĄ jegokolumn© (rys. 3). Pozostaje teraz tylko wyznaczy† drogĄ interpolacjikrzywymi skadanymi wysoko† Z pozostaych w©z˘w. W pierwszejkolejnoci sprawdzana jest kaľda kolumna siatki. Jeli zostanieznaleziony w niej co najmniej jeden w©ze, kt˘remu przypisanowsp˘rz©dnĄ Z, to obliczana jest krzywa skadana wzduľ caej kolumny,przy czym interpolowane zostajĄ znalezione w©zy. Uzyskane nowe punktysĄ przypisywane kolejnym wierszom siatki interpolacyjnej (w ramachbieľĄcej kolumny). W przypadku gdy kolumna nie b©dzie zawieraaľadnego w©za z okrelonĄ wsp˘rz©dnĄ Z, program przechodzi doprzeszukiwania nast©pnej. W identyczny spos˘b sprawdzane sĄ wiersze. Wkaľdym znajduje si© co najmniej jeden w©ze z przypisanĄ w poprzednimkroku (kiedy powstay krzywe skadane wzduľ caych kolumn)wsp˘rz©dnĄ Z. W ten spos˘b kaľdy w©ze otrzymuje wsp˘rz©dnĄ Z -powierzchnia zostaje utworzona. Trzeba zauwaľy†, ľe w powyľszychobliczeniach nie pojawiajĄ si© nader waľne wsp˘rz©dne X i Y. Jest tospowodowane tym, ľe moľna je wyliczy† majĄc dane: numerkolumny,wiersza i odlego† mi©dzy w©zami (DistanceX,DistanceY).Po wywietleniu siatki na ekranie moľna zapisa† jako zbi˘r SURF.DXF.Format DXF (Drawing eXchange Format) jest akceptowany przez programydo renderingu, np. 3Dstudio, oraz typu CAD. Format ten jest bardzoprzejrzysty - dane zapisane sĄ w kodzie ASCII. Na poczĄtku znajdujesi© nag˘wek zawierajĄcy informacje dotyczĄce np. rodzaju linii,ekstremalnych wartoci, punktu obserwatora itp. Dalej znajduje si© juľwaciwy opis obiekt˘w. Program tworzy zbi˘r SURF.DXF z pomini©ciemnag˘wka, co i tak zapewnia poprawno† pliku. Na poczĄtku znajduje si©tzw. sekcja obiekt˘w:SECTION2ENTITIESNast©pnie jest opis obiekt˘w. Powierzchnia zapisana jest wformie serii czworobok˘w. Kaľdy z nich okrelony jest przez czterypunkty (wierzchoki) w nast©pujĄcy spos˘b:3DFACE8W10x120y130z1drugi wierzchoek :11x221y231z2i tak dalej..."W" to numer warstwy, do kt˘rej naleľy obiekt, "x1,y1,z1,x2,y2,..."to wsp˘rz©dne kolejnych wierzchok˘w czworoboku. Na koäcu musi si©znale«† sekcja koäca danych:ENDSECEOFZaprezentowana przeze mnie metoda nie jest precyzyjna,chociaľby ze wzgl©du na przybliľenia powstae przez podzia nasektory, dlatego teľ nie powinna by† stosowana do geodezyjnegomodelowania powierzchni terenu, gdzie waľna jest dokadno†, natomiastz powodzeniem moľna jĄ stosowa† w tworzeniu abstrakcyjnych obraz˘w np.w 3DStudio. Oczywicie, aby uzyska† jak najwi©kszĄ precyzj©,poczĄtkowe punkty muszĄ by† w miar© r˘wno od siebie oddalone. Wartoteľ poeksperymentowa† z liczbĄ sektor˘w (staa Section), pami©tajĄc,ľe im b©dzie ona mniejsza, tym wi©ksza stanie si© niedokadno†interpolacji, a za duľa spowoduje powstanie nieciekawych row˘w. Nakoniec przedstawi© jeszcze r˘wnanie potrzebne do utworzenia krzywejskadanej typu B, kt˘ra nigdy nie przechodzi przez punkty poczĄtkowe,przez co jest krzywĄ przybliľonĄ .P = (-P1*t^3 + 3*P2*t^3 - 3*P3*t^3 + P4*t^3 +3*P1*t^2 - 6*P2*t^2 + 3*P3*t^2 + -3*P1*t + 3*P3*t + P1 + 4*P2 + P3) / 6Literatura:"Grafika PC bez tajemnic", Intersoftland 1995 [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • annablack.xlx.pl