Praca dyplomowa magisterska

Wielkość: px
Rozpocząć pokaz od strony:

Download "Praca dyplomowa magisterska"

Transkrypt

1 POLITECHNIKA ŚLĄSKA WYDZIAŁ AUTOMATYKI, ELEKTRONIKI i INFORMATYKI KIERUNEK INFORMATYKA Praca dyplomowa magisterska Udostępnianie wielorozdzielczych trójkątnych siatek powierzchni modeli trójwymiarowych w sieci Internet. Autor: Kierujący pracą: dr inż. Agnieszka Szczęsna Gliwice, październik 2012r.

2

3 Spis treści 1 Wstęp Cel pracy Układ pracy Usługi internetowe Podstawy grafiki trójwymiarowej Reprezentacje obiektów trójwymiarowych Wyświetlanie siatek trójkątnych Algorytmy upraszczające Algorytm Melaxa Algorytm QEM Algorytm zachłanny z prostą funkcją oceny Siatki progresywne Podsumowanie Transmisja Progresywna Aplikacja badawcza Specyfikacja zewnętrzna Projekt DesktopClient Specyfikacja wewnętrzna Architektura systemu Projekt MultiresolutionService Projekt Multiresolutioning Implementacja Interfejsy Klasy elementarne Kolekcje Algorytmy Klasy złożone Parsery i formaty plików Uwagi dotyczące wyświetlania modelu po stronie klienta Część badawcza Wyniki badań... 50

4 4 Podsumowanie Realizacja celów Możliwości rozwoju projektu Wnioski Bibliografia Spis ilustracji Spis tabel Załączniki... 74

5 1 Wstęp W pierwszych etapach powstania Internetu, sieć ta była wykorzystywana w celu przesyłania informacji. Przez wiele lat silnie rozwijana sieć, osiągnęła skalę światową, a wymiana informacji stała się tylko jednym z wielu zastosowań. Za sprawą powstania i nieustannego rozwijania aplikacji takich jak przeglądarki, podświadomość użytkowników została skierowana na myśl, iż Internet nie tylko jest przydatny przy wymianie informacji czy komunikacji, ale jest on niezastąpionym źródłem danych. Dochodzące od producentów przeglądarek informacje, dotyczące wprowadzenia wsparcia kart graficznych przy wyświetlaniu grafiki w produkowanych przez nich aplikacjach, dają nowe możliwości w tematyce grafiki trójwymiarowej. Zaawansowane aplikacje mogą być implementowane z myślą o przeglądarkach, dla których system operacyjny nie stanowi żadnej bariery, przez co dystrybucja odbywać się może niższym kosztem. Pomysły tworzenia wirtualnych, interaktywnych przewodników po różnego rodzaju obiektach, a także map zawierających trójwymiarowe, cyfrowe odzwierciedlenia całych miast opierają się przede wszystkim na modelach. Te zaś należy przetransmitować użytkownikowi, by mógł on obejrzeć udostępniany zasób. Ponieważ najczęściej zasoby takie charakteryzują się dużym rozmiarem, wymagane jest opracowanie efektywnego sposobu na dostarczenie go, co stanowi temat niniejszej pracy. 1.1 Cel pracy Celem pracy jest opracowanie usługi internetowej udostępniającej siatki powierzchni modeli trójwymiarowych. Jej zadaniem jest budowa wielorozdzielczych modeli 1 z wejściowych siatek 2, znajdujących się po stronie serwera. Modele te tworzone są przy wykorzystaniu jednego z algorytmów upraszczania siatki. Tak skonstruowane siatki zapisywane będą na dysku po stronie serwera i udostępniane na żądanie. 1 Model, którego struktura pozwala na prezentację modelu, z którego został utworzony, w dowolnej rozdzielczości (mniejszej od siatki oryginalnej). 2 Zwane również siatkami oryginalnymi. Są to modele będące wzorem dla siatek prostszych, które są ich przybliżeniem. 1

6 Serwis umożliwia generowania odpowiedniej siatki, na podstawie sparametryzowanego zapytania dostarczonego z aplikacji klienckiej. Kolejną wymaganą funkcjonalnością jest zastosowanie transmisji progresywnej, do przesyłania uprzednio utworzonej siatki. Dla stworzonej usługi zostanie zaimplementowana aplikacja kliencka umożliwiająca generowanie odpowiednich zapytań, które decydować będą o wynikowej siatce powierzchni. Bardzo przydatnym elementem tej części projektu będzie wyposażenie aplikacji klienta w interaktywny panel, prezentujący pobierane dane na bieżąco, w postaci wyświetlanego modelu trójwymiarowego. Obie części projektu powinny być skonstruowane w taki sposób by umożliwić dalszą rozbudowę i modyfikacje. Preferowaną technologią serwera oraz klienta jest platforma.net. W ramach tej pracy został zaproponowany został algorytm upraszczania siatek, który posłuży porównaniu z innymi. Badanie algorytmów upraszczających zostały poddane ocenie, która bierze pod uwagę takie cechy aspekty jak: wydajność, jakość wygenerowanej siatki, wrażliwość na specyficzną charakterystykę modeli. Po przeprowadzeniu badań tej części, rozpatrzone zostaną zalety oraz wady siatek przeznaczonych do transmisji progresywnej, oraz samej metody przesyłania danych. Zbadany został wpływ tej metody na: ilość przesyłanych danych w jednostce czasu, zdolności obsługi dużej liczby zapytań. 1.2 Układ pracy Niniejsza praca składa się z części teoretycznej, projektowej oraz badawczej. Część teoretyczna rozpoczynająca się od rozdziału 1.3 opisuje podstawowe pojęcia z zakresu usług internetowych, grafiki trójwymiarowej, algorytmów upraszczających siatki i transmisji progresywnej. 2

7 Część projektowa rozpoczyna rozdział 2. Omawia architekturę stworzonego systemu oraz przybliża ideę powstałych elementów. Badawcza część rozpoczynająca się rozdziałem 3. Zawiera ona opisy przeprowadzonych badań, wyniki oraz ich analizę. Na podstawie tych rozdziałów przedstawione zostały wnioski oraz dalsze możliwości rozwoju systemu. 1.3 Usługi internetowe Globalna sieć komputerów jaką jest Internet stworzona została na potrzeby wymiany danych. Na przestrzeni lat sposoby transmisji danych oraz ich generowania ewoluowały wraz z postępującymi wymaganiami i zmieniającą się specyfiką powstających aplikacji. Od udostępniania i przesyłania całkowicie statycznych treści Internet rozwinął się do bardzo złożonych aplikacji. Zasilane są one danymi pochodzącymi z bardzo wydajnych serwerów lub ich farm 3. Maszyny te po otrzymaniu żądania, odczytują, przetwarzają i odsyłają odpowiednie dane uzależnione od zapytania w ułamkach sekund. Dzisiejsze czasy bardzo silnie zaszczepiły wyobrażenie o globalnej sieci jako o treściach dostępnych poprzez przeglądarkę internetową, które prezentowane są poprzez bogate grafiki wspomagane językami skryptowymi, wypełnione nie tylko treścią, ale także muzyką lub filmami wideo. Ogromny wpływ na rozwój aplikacji opartych o sieć Internet miało zaprezentowanie technologii usługi internetowej (ang. web service). Usługi te przedstawiają odmienne podejście do korzystania z sieci Internet. Ich ideą jest skupianie się na przetwarzaniu i odsyłaniu danych, które są ściśle związane z zapytaniem. Oczywistym jest, że dane mogą być zarówno treścią, grafiką, czy też filmem, jednak najważniejszym aspektem jest to, że odesłane dane są dokładnie zdefiniowane i związane tylko z funkcjonalnością, która jest oczekiwana. Aby przybliżyć różnice podejścia klasycznego i uwzględniającego usługi, można wyobrazić sobie stronę internetową wymagającą autoryzacji z tabelą wypełnioną danymi. Klasycznym sposobem obsługi żądania wyświetlenia strony byłby serwer posiadający dane potrzebne do wypełnienia tabeli, dane użytkowników wraz z możliwością wygenerowania kodu HTML i odesłania go do klienta. Gdy jednak do podanego przykładu użyte zostaną usługi internetowe obsługa zapytania rozwiązana może być w inny sposób. Serwer po otrzymaniu zapytania w celu uzyskania 3 Zbiór powiązanych ze sobą serwerów, współpracujących w celu realizacji jednego zadania (1). 3

8 danych generuje zapytanie do serwisu posiadającego dane autoryzacyjne, gdy ten zezwoli na pobranie danych wysyłane jest kolejne zapytanie do usługi, która te dane posiada. Po pobraniu przez serwer danych jest on w stanie wygenerować kod HTML i odesłać do klienta. Oba rozwiązania zwracają dokładnie tę samą stronę. Warto więc zastanowić się nad ich charakterystykami: Podejście klasyczne wiąże się z silnym scentralizowaniem zasobów oraz wymogiem wysokiej wydajności serwera. Obsługa wielu zapytań w krótkich odstępach czasu wymagała będzie znaczącej mocy obliczeniowej, a przechowywanie całej bazy danych na jednym serwerze zwiększy zapotrzebowanie na wydajną przestrzeń dyskową. Warto zdać sobie też sprawę, że w przypadku awarii tracona jest cała funkcjonalność i w szczególnych przypadkach wszystkie dane; Zastosowanie usług internetowych w sposób naturalny pozwoliło na bardzo łatwe rozproszenie zarówno zapotrzebowania na moc obliczeniową, jak i na przestrzeń dyskową. Jednocześnie oddelegowywanie zadań do dedykowanych serwerów, zabezpiecza w przypadku awarii, która wcale nie musi całkowicie uniemożliwić korzystania ze strony, lecz zawęzić jej funkcjonalność. Przypadkowa utrata danych także będzie miała ograniczony zasięg. Pewną niedogodnością jest potrzeba łączenia się z usługami, co może spowodować powstanie opóźnień, które nie miały by miejsca w przypadku rozwiązania klasycznego. Niemniej jednak zaprojektowanie sieci usług internetowych znajdujących się w jednej sieci lokalnej pozwala na zniwelowanie narzutu związanego z czasem potrzebnym na nawiązanie połączenia. Jak już zostało zaznaczone, usługi internetowe są dokładnie zdefiniowane. Znaczy to, że używając serwisu dokładnie znana jest informacja o konstrukcji zapytania dla niego przeznaczonego, oraz protokół, struktura i format danych, które usługa będzie zwracała. Rozwiązaniem definiującym te własności jest oparty o XML i opracowany przez Microsoft oraz IBM język WSDL (ang. Web Services Description Language). 4

9 Sposób przedstawienia struktury oraz formatu danych zależy od protokołu. Najbardziej znanymi są: SOAP (ang. Simple Object Access Protocol) powstały z XML-RPC, które opierają się o strukturę dokumentów XML, JSON (ang. JavaScript Object Notation), który jest formatem tekstowym będącym podzbiorem języka JavaScript. Ponieważ jest on naturalnym formatem dla tego języka, jest on bardzo prosty w użyciu i jest podstawą do technologii AJAX (ang. Asynchronous JavaScript And XML). Zależność klienta oraz usługi od dokumentu WSDL przedstawia rysunek 1. Rysunek 1. Dokument WSDL dla klienta i usługi Na rysunku 2 przedstawione zostały dla porównania podejście klasyczne oraz wykorzystujące usługi internetowe. 5

10 Rysunek 2. Komunikacja a) klasyczna, b) z użyciem usług internetowych Na rysunku 2 można zauważyć, iż usługi nie są dostępne tylko dla serwera. Kolejnym aspektem z tym związanym, który nie został poruszony w tym rozdziale jest właśnie niezależność usług od platformy i implementacji. Kiedy usługa zostanie utworzona, a jej funkcjonalność zostanie udostępniona to tak naprawdę nie jest istotne przez, jaką aplikację zostanie ona użyta. Na rysunku 2 klientami mogą być strony internetowe (uruchamiane poprzez przeglądarkę), aplikacje desktopowe lub mobilne. Usługi dostarczają interfejs, który przy odpowiednim rozproszeniu i przemyśleniu, znacząco ułatwia tworzenie wieloplatformowych systemów. Oczywiście na rysunku, każdy z klientów mógłby mieć bezpośrednie połączenie z każdą z usług niezależnie, jednak by nie zaciemniać schematu, przedstawiona została jedynie idea tego podejścia. Wszystkie opisane w tym rozdziale cechy usług internetowych znacząco wpłynęły na ich wykorzystanie. Planując wielkie projekty, których rozwijanie może trwać bardzo długi okres czasu, użycie usług jest bardzo kuszącym pomysłem. Dzieje się tak ponieważ postęp techniki, języków lub środowisk uruchomieniowych całkowicie uniezależnia implementowane funkcjonalności od zastosowanych w przyszłości rozwiązań. 6

11 1.4 Podstawy grafiki trójwymiarowej Ponieważ niniejsza praca porusza w dużym stopniu temat trójwymiarowej grafiki komputerowej, rozdział ten poświęcony został opisaniu podstaw związanych z jej generowaniem oraz wyświetlaniem. Dzisiejsze komputery, posiadające wyświetlacze mają zdolność przedstawienia obrazów dwuwymiarowych. w przypadku chęci przedstawienia obiektów trójwymiarowych potrzebny jest dodatkowy etap, który zapewni odpowiednie rzutowanie przestrzeni na jego dwuwymiarową reprezentację. Należy nadmienić, iż wszelkie obiekty, które tworzą grupę zaaranżowaną do powstania obrazu, nazywamy sceną. w jej skład wchodzą nie tylko obiekty przeznaczone do wizualizacji, ale także kamery (obserwatorzy), oświetlenie, obiekty pomocnicze na przykład emitujące cząsteczki lub wspomagające animację Reprezentacje obiektów trójwymiarowych Wszystkie obiekty znajdujące się na scenie trójwymiarowej muszą posiadać jakąś reprezentację. Wzorując się na przyrodzie i przyglądając się podstawowemu budulcowi materii jakim jest atom, można dojść do wniosku, że idealnym rozwiązaniem byłaby maksymalna możliwa granulacja obiektów. Choć współczesne komputery mają ogromną moc obliczeniową, podjęcie próby zamodelowania obiektów przestrzennych wzorując się tym wnioskiem, szybko zaczęłoby brakować zasobów do obsługi tego typu reprezentacji. Prostym potwierdzeniem tej tezy jest już sam fakt występowania potrzeby rzutowania, która jak wiadomo dokonuje przekształceń dla każdego punktu osadzonego w przestrzeni. Duże liczby punktów obiektu mogą sklasyfikować ten proces jako nieosiągalny w sensownym czasie. Znając ograniczenia stawiane przez obecną technologię stosuje się reprezentacje uproszczone, kładące szczególny nacisk na liczbę elementów mających na celu przybliżenie kształtu obiektów trójwymiarowych. Do najczęściej stosowanych reprezentacji obiektów rzeczywistych można zaliczyć: siatki wielokątów ich podstawowym budulcem są wielokąty, które mają wspólne wierzchołki (punkty) oraz krawędzie. Najczęściej spotykane są siatki trójkątne oraz czworokątne. Ponieważ każdą płaszczyznę można opisać za pomocą trzech 7

12 punktów w przestrzeni siatki trójkątne zdecydowanie dominują w reprezentacjach obiektów nad innymi wielokątami. Dla potwierdzenia tej tezy można dodać, iż każdy czworokąt można zastąpić dwoma trójkątami przylegającymi do siebie jedną krawędzią. Technika ta zakłada, że przy pomocy tych prostych figur możliwe jest przybliżenie każdego trójwymiarowego obiektu. Ponieważ niniejsza praca dotyczy siatek trójkątnych sposób ich wyświetlania zostanie przedstawiony w treści obecnego rozdziału. Reprezentacje na rysunku 3 ukazują przykłady siatek trójkątnych oraz czworokątnych. Rysunek 3. Siatki wielokątów a) siatka trójkątna (1), b) siatka czworokątna (2) opis matematyczny każdy obiekt określany jest poprzez równania. Metoda ta potrafi opisać proste modele takie jak: kula, płaszczyzna, płaszczyzny parametryczne (powierzchnie Béziera, Hermite'a czy NURBS). Należy zaznaczyć, że modele te są idealnie dokładne, jednak oczywistym jest, iż złożone obiekty są bardzo trudne lub niemożliwe do zaprezentowania w postaci matematycznej. Często reprezentacja ta używana jest przy generowaniu grafiki przy pomocy tak zwanego śledzenia promieni (ang. ray-tracing). Ponieważ wszelkie dane odnośnie charakterystyki obiektu przechowuje funkcja matematyczna, reprezentacja taka zajmuje bardzo małą ilość pamięci. Niestety niskie zużycie pamięci powoduje, że modele te są bardzo kosztowne podczas wyświetlania, które wymaga dokonania wielu obliczeń przez procesor. Rysunek 4 przedstawia przykłady reprezentacji matematycznej obiektów. 8

13 Rysunek 4. Reprezentacja matematyczna w technice śledzenia promieni (1) woksele (Voxel ang. volumetric element) jest techniką opartą na użyciu przestrzennych pikseli (geneza nazwy), które mają kształt sześcianu. Elementy te są podstawowym budulcem przestrzennych obiektów. Konstrukcja takich struktur przypomina nieco budowle z klocków, ponieważ stworzone modele składają się wyłącznie z sześcianów. Powoduje to, że modele te są mało dokładne nawet duża liczba wokseli nie zapewnia dobrej jakości odwzorowania. z tego typu reprezentacją można spotkać się przy analizie medycznych lub naukowych danych (1). Jednak prostym przykładem użycia tego typu odwzorowania jest gra komputerowa Minecraft, której grafika oparta jest w całości o tę reprezentację, zapewniając generyczność prezentowanego w niej świata. Rysunek 5 przedstawia grafikę opartą o woksele. Rysunek 5. Reprezentacja przy użyciu wokseli (3) 9

14 1.4.2 Wyświetlanie siatek trójkątnych Przedstawianie danych cyfrowych zawartych w dokumencie elektronicznym, czy jest to tekst wyświetlany na ekran lub drukowany na drukarce, czy jest to scena trójwymiarowa, która poddawana jest rzutowaniu na płaszczyznę ekranu, nazywamy renderowaniem (ang. rendering) lub obrazowaniem. Ponieważ praca ta dotyczy trójkątnych siatek modeli trójwymiarowych, rozdział ten opisuje najważniejsze informacje dotyczące wyświetlania tej reprezentacji. Elementem konstrukcyjnym komputera, który odpowiedzialny jest za wyświetlanie obrazu na ekranie monitora jest karta graficzna. Aby proces ten był płynny i szybki urządzenie to posiada własny procesor (lub kilka) oraz pamięć podręczną, co zapewnia swobodniejsze użycie pozostałych komponentów komputera do innych zadań. Jak już zostało napisane w podrozdziale siatki wielokątów składają się z wierzchołków połączonych krawędziami. Ponieważ na scenie może znajdować się wiele wierzchołków, które wymagają znaczącej ilości obliczeń, prezentacja grafik przy użyciu tej reprezentacji posiada szereg optymalizacji, mających na celu przyspieszenie tego procesu. Pierwszą optymalizacją jest usunięcie wszelkich danych z przetwarzania, które nie są włączone do obecnego widoku. Widokiem nazwiemy wszelkie elementy sceny znajdujące się wewnątrz ostrosłupa ściętego (ang. frustrum) opisanego poprzez właściwości kamery. Wszystkie ściany tego ostrosłupa nazywane są płaszczyznami odcięcia, ponieważ wszystko, co znajduje się za nimi zostanie wyłączone z dalszych obliczeń. Rysunek 6. Płaszczyzny odcięcia (4) Rysunek 6 przedstawia w prosty sposób konstrukcję widoku. Można bardzo łatwo zauważyć, że kamera znajdująca się pośrodku sceny wypełnionej modelami 10

15 trójwymiarowymi w bardzo znaczący sposób zawęża ilość danych wymagających przetwarzania na potrzeby prezentacji. Wyselekcjonowane dane, zanim zostaną wyświetlone, mogą zostać odrzucone poprzez proces usuwania trójkątów będących tyłem do obserwatora (ang. culling). Informacje dotyczące rysowanych trójkątów zapisane są w postaci kolejnych wierzchołków, na których wielokąt jest oparty. Rozpatrując przedstawiony na rysunku 7 fragment siatki zauważyć można, że jeśli kolejność wierzchołków w potoku rysującym jest następująca: Dla dolnego trójkąta: W3 -> W4 -> W2 Dla górnego trójkąta: W3 -> W2 -> W1 to oba trójkąty rysowane są w tę samą stronę. Rysunek 7. Fragment siatki trójkątów Jeśli obserwator przemieściłby się za fragment siatki z rysunku 7, patrząc na trójkąty nie byłby w stanie ich zobaczyć, ponieważ ta perspektywa powodowałaby przeciwny kierunek rysowania, przez co wielokąty zostały wyłączone z obrazowania. Oczywistym jest, że celem tego algorytmu nie jest usuwanie widocznych elementów lecz tych, które w bryłach powinny znajdować się za ścianą widoczną dla obserwatora. Dzięki temu możliwe jest usunięcie średnio połowy wielokątów z prezentowanej sceny zapewniając oczywistą optymalizację. W większości interfejsów programistycznych, siatki rysowane są przy wykorzystaniu bufora wierzchołków, który jest zwykłą tablicą zawierającą wierzchołki. Gdy zostaje on wypełniony, można przystąpić do rysowania prymitywów. Zależnie od dokonanego wyboru 11

16 dane z buforu wierzchołków będą wykorzystywane w sposób zdefiniowany osobno dla każdego typu prymitywów, które przedstawione są na rysunku 8. Rysunek 8. Podstawowe typy prymitywów (5) Do podstawowych typów prymitywów zalicza się: LineList kolejne pary wierzchołków interpretowane będą jako odcinki; LineStrip pomiędzy dwoma następującymi wierzchołkami rysowany będzie odcinek; PointList lista pojedynczych punktów; TriangleFan zbiór trójkątów współdzielących pierwszy wierzchołek buforu; TriangleList kolejne trójki wierzchołków składają się na trójkąty; TriangleStrip pierwsze trzy wierzchołki stanowią trójkąt, następne trójkąty powstają z dwóch ostatnio użytych punktów i jednego nowego, wyciągniętego z bufora. Nie korzystając z prymitywu TriangleStrip fragment z rysunku 7 wymaga powtórnego umieszczeniu w buforze wierzchołków W2 i W3 ponieważ używane one są przez oba trójkąty. Powoduje to nieoptymalne wykorzystanie pamięci, które można rozwiązać poprzez zastosowanie bufora indeksów. Jego użycie pozwala na jednokrotne zapisanie w buforze wierzchołków każdego punktu siatki oraz zaindeksowanie ich, na potrzeby rysowania odpowiednich prymitywów. Współdziałanie bufora indeksów z buforem wierzchołków prezentuje rysunek 9. 12

17 Rysunek 9. Mapowanie indeks wierzchołek Przystępując do rysowania prymitywów pobierane będą dane z bufora indeksów by wybrać odpowiedni wierzchołek. Warto zauważyć iż tak zmapowana siatka wykorzystuje mniej przestrzeni w pamięci, ponieważ każdy wierzchołek, który ma współrzędne typu float wymaga 12 bajtów do jego przechowania, podczas gdy indeks typu int zajmuje jedynie 4 bajty. Kolejny sposób optymalizacji polega na kontroli poziomu szczegółów siatek w zależności od odległości od obiektu, czy też jego widoczności (ang. LOD Level of detail). Jego stosowanie, oraz motywacje opisane są w następnym rozdziale. 1.5 Algorytmy upraszczające Modele trójwymiarowe, by jak najdokładniej odzwierciedlać rzeczywistość, mogą zawierać bardzo dużą liczbę wierzchołków. Ich liczba jest szczególnie powiązana z charakterystyką samego modelowanego obiektu, jak i informacjami na temat jego przeznaczenia, znanymi już na etapie konstrukcji. Dobrym przykładem może być informacja o tym, że model, który w momencie ustawienia na scenie, będzie dla użytkownika docelowego widoczny tylko z jednej strony. Ta wiedza daje projektantowi możliwość pominięcia modelowania tylnej części obiektu lub uproszczenie go w maksymalnym stopniu. Charakterystyka modelowanego obiektu przede wszystkim odnosi się do jego kształtu. Przedmioty płaskie, zawierające wiele ostrych krawędzi, charakteryzują się małym zapotrzebowaniem na wierzchołki określające jego kształt. w przypadku, gdy obiekt ma wiele zaokrąglonych ścian i elementów, chęć dokładnego odwzorowania pociąga za sobą 13

18 potrzebę utworzenia wielu punktów, by uzyskać wrażenie, że zakrzywienia są gładkie. Trywialnym przedstawieniem obu przypadków mogą być modele kuli oraz sześcianu. Rysunek 10. Modele kuli i sześcianu Na rysunku 10 przedstawione zostały modele kuli oraz sześcianu. Można zauważyć, że bryła przypominjąca kostkę została zamodelowana poprzez osiem wierzchołków, które w zupełności wystarczają do bezbłędnego odzwierciedlenia obiektu. Inną sytuację prezentuje sfera choć jej rozmiar nie ujawnia błędów odwzorowania, to zbliżenie się do obiektu pozwoliłoby na wyraźne zaobserwowanie występujących krawędzi. Zageszczanie siatki kolejnymi wierzchołkami, zwiększy jej dokładność, jedanakże idealne zamodelowanie krzywizn jest niemożliwe, przy założeniu, że liczba wierzchołków jest liczbą skończoną. Posiadając powyższe informacje należy podkreślić zależność istniejącą pomiędzy liczbą wierzchołków oraz dokładnością modelu. Rosnąca liczba wierzchołków przekłada się na wzrost dokładności modelu. Dobrym przykładem może być model przedstawiony na rysunku 11, który złożony jest z trójkątów opartych na wierzchołkach. Dlatego koniecznym jest zastanowienie się nad celem upraszczania modeli oraz tworzenia algorytmów upraszczających. 14

19 Rysunek 11. Przykład dokładnego modelu Ponieważ znany jest fakt, że zbliżanie się obserwatora do obiektu powoduje ujawnienie błędów modelu, dlatego też oddalanie się obserwatora musi powodować efekt odwrotny (błędy są mniej widoczne). Dzięki zaobserwowaniu tej prawidłowości możliwym jest zmniejszanie rozdzielczości siatki modelu, który znajduje się na tyle daleko od obserwatora, że zastosowane w nim uproszenia nie będą zauważalne. Istnieje więc przypadek, w którym prezentacja uproszczonych modeli ma sens. Warto zastanowić się, nad zyskiem płynącym z tego typu transformacji. Motywującymi do upraszczania siatek są uzyskiwane optymalizacje: pamięciowa - aplikacji używającej modelu, wydajnościowa- podczas wyświetlania modelu, zmniejszenie przestrzeni dyskowej potrzebnej do magazynowania modeli, zmniejszenie ilości danych potrzebnych w przypadku transmisji modelu. Zaoszczędzona przestrzeń pamięciowa i transferowa, wynika bezpośrednio z danych usuwanych podczas procesu upraszczania. Zwiększona wydajność przy prezentacji modelu została wyczerpująco opisana w rozdziale poświęconym reprezentacji modelu. 15

20 Do realizacji zadania polegającego na zmniejszaniu poziomu skomplikowania siatki, stosowane są różne algorytmy. Trzy z nich przedstawione zostaną w dalszej części tego rozdziału Algorytm Melaxa Stan Melax jest osobą od wielu lat zajmującą się grafiką komputerową. Znany jest ze współpracy z firmami BioWare oraz Intel. w listopadzie 1998 roku opublikował na łamach serwisu dokument (6) dotyczący opracowanej przez niego metody upraszczania modeli. Motywacją dla stworzenia algorytmu była aplikacja umożliwiająca niszczenie obiektów znajdujących się na scenie. Autor zauważył, że podczas eliminacji części modeli powstaje bardzo duża liczba trójkątów, które nie wzbogacają prezentowanej sceny, więc są zbędnym obciążeniem podczas wyświetlania sceny. Dlatego postanowił upraszczać siatkę modelu w trakcie działania programu, co wiązało się potrzebą szybkiego działania algorytmu. Sam autor uzasadniał stworzenie własnego algorytmu, zamiast używania gotowych rozwiązań następującymi argumentami: Algorytm stworzony przez siebie można dostosować dokładnie do własnych potrzeb; Nie każde narzędzie upraszczające daje możliwość zapisywania specyficznych danych w celu uzyskania efektu morfingu (ang. morphing); Automatyzację prac produkcyjnych projektant tworzy tylko jeden model, a aplikacja sama wykonuje resztę zadania. Rozwiązanie Stana Melaxa opiera się na iteracyjnej modyfikacji modelu. Algorytm składa się z następujących kroków: 1. Inicjalizacja modelu wymaganymi danymi (wektory normalne dla każdego trójkąta). 2. Liczenie minimalnego kosztu łączenia poprzez kolapsację (ang. collapse) dla każdego wierzchołka. 3. Wybór minimalnego kosztu łączenia spośród wszystkich wierzchołków. 4. Wykonanie połączenia wybranych wierzchołków. 16

21 5. Aktualizacja kosztów wierzchołków sąsiadujących z punktami połączonymi w obecnej iteracji. 6. Powtórzenie kroków od punktu 3. Aby przybliżyć zasadę działania tego algorytmu, każdy z punktów zostanie opisany poniżej. Inicjalizacja modelu wymaganymi danymi. Danymi wymaganymi do przejścia do następnego kroku są wektory normalne wyliczone dla każdego trójkąta siatki. Można zauważyć w tym podejściu dopasowanie specyfikacji algorytmu do wymagań autora. Polega one na tym, że aplikacja wyświetlająca oświetloną scenę trójwymiarową, do poprawnego cieniowania, wymaga wektorów normalnych. Dlatego pierwszy etap można pominąć w przypadku potrzeb aplikacji Stana Melaxa. Liczenie minimalnego kosztu łączenia poprzez kolapsację. Jest to pierwszy z dwóch najistotniejszych elementów tej metody upraszczania modelu., = max min 1!!# 2&' Wzór 1. Funkcja kosztu dla alrotymu Stana Melaxa Funkcja kosztu przedstawia wzór 1. Gdzie T u są wielokątami opartymi na wierzchołku u, T uv są wielokątami opartymi na wierzchołkach u i v, (! wektory normalne. Po analizie wyrażenia jasnym jest, że wynikiem będzie iloczyn odległości pomiędzy rozpatrywanymi punktami z iloczynem wektorów normalnych, które ze zbiorów najbardziej są wobec siebie odchylone. Funkcja daje więc informację o błędzie wobec pierwotnej siatki, który powstanie po połączeniu punktów u i v. Koszt wyliczamy dla każdego wierzchołka u w siatce z jego sąsiadem v. Dzięki takiemu postępowaniu wyliczony zostanie koszt operacji dla wszystkich sąsiednich par punktów w obu kierunkach (wyjaśnienie łączenia poprzez kolapsację opisane zostanie w dalszej części tego rozdziału). Ponieważ każdy wierzchołek posiada kilku sąsiadów funkcja kosztu liczona będzie dla każdego z nich, a najlepszy wynik (ten o najmniejszym koszcie operacji) przypisany będzie do wierzchołka 17

22 u wraz z informacją dotyczącą docelowego wierzchołka, z którym dana operacja tworzy wyliczony koszt. Wybór minimalnego kosztu łączenia spośród wszystkich wierzchołków. Spośród wyników poprzedniego kroku raz na iterację wybierana zostaje wartość najmniejsza, co zapewnia wykonywanie kolejnych iteracji z możliwie najmniejszym błędem wobec oryginalnej siatki. Wykonanie połączenia wybranych wierzchołków. Jest to drugi z elementów które charakteryzują ten algorytm. Zasada działania łączenia wierzchołków przez kolapsację polega na tym, że jeden z łączonych wierzchołków przejmuje właściwości drugiego (np.: współrzędne, sąsiedztwo), który jest usuwany z siatki. Spoglądając ponownie na sposób liczenia kosztu wykonania tej operacji można uznać, że algorytm dokonuje wyboru, który z pary dwóch wierzchołków usunąć, tylko na podstawie wyliczeń dla dwóch przypadków. Nie jest więc rozpatrywane łączenie w żadnym innym miejscu, przez co pewnym jest, że operacja nie wybiera rozwiązania o minimalnym możliwym błędzie. Rysunek 12. Sekwencja łączenia wierzchołków przez kolapsację Rysunek 12 przedstawia sekwencję czterech operacji łączenia wierzchołków. Wyraźnie można zauważyć zastępowanie dwóch punktów jednym, który podtrzymuje konstrukcje siatki. 18

23 Aktualizacja kosztów. Podczas etapu połączenia punktów w lokalnym otoczeniu dochodzi do znaczących zmian. Wszystkie wielokąty oparte na usuniętym wierzchołku zmieniają swój kształt przez co zmienia się ich wektor normalny. Jak wiadomo ze wzoru 1 wektory normalne wykorzystywane są do wyliczenia funkcji kosztu, dlatego wektory te należy ponownie obliczyć dla wszystkich trójkątów które zmieniły swój kształt. Uaktualnione wartości powodują potrzebę ponownego wyliczenia kosztów dla wszystkich wierzchołków, na których oparte są modyfikowane trójkąty. Po tej operacji iteracja zostaje zakończona i można rozpocząć wykonywanie kolejnej Algorytm QEM Upraszczanie siatek metodą metryki błędu kwadryk (ang. quadric error metrics w skrócie QEM) została opracowana przez Michaela Garlanda i Paul S. Heckberta i opublikowana w sierpniu roku Podstawowymi zaletami algorytmu zawartymi w publikacji były: szybkość działania, jakość upraszczanych modeli, uniwersalność. Metoda charakteryzuje się podejściem wykorzystującym do rozwiązania problemu większą liczba zagadnień z dziedziny matematyki w porównaniu z algorytmem Stana Melaxa. Proces upraszczania ma iteracyjny przebieg, który w każdej iteracji pozbywa się jednego wierzchołka z siatki. Całość algorytmu można rozpisać na poniższe kroki: 1. Inicjalizacja modelu wymaganymi danymi (równania płaszczyzn, tworzenie kwadryk). 2. Wybór poprawnych par wierzchołków. 3. Liczenie optymalnego miejsca złączenia wierzchołków poprzez kontrakcje (ang. contraction) dla każdego wierzchołka. 4. Wybór minimalnego kosztu łączenia spośród wszystkich wierzchołków. 5. Wykonanie połączenia wybranych wierzchołków. 19

24 6. Aktualizacja kosztów wierzchołków sąsiadujących z punktami połączonymi w obecnej iteracji. 7. Powtórzenie kroków od punktu 4. Poniżej opisane są poszczególne etapy tego algorytmu, aby poznać zasadę jego działania. Inicjalizacja modelu wymaganymi danymi. Wymaganymi danymi w każdej iteracji tego algorytmu są kwadryki przypisane do każdego wierzchołka siatki. Jednak by zainicjalizować pierwsze dane wymagane jest wyliczenie równań płaszczyzny dla każdego wielokąta modelu. Wynika to z funkcji błędu ściśle powiązaną z odległością punktu od płaszczyzny. Jak wiadomo kwadrat odległości (w tym przypadku błąd) punktu od płaszczyzny wyliczany jest ze wzoru 2. ) = ) *+, -. 1/ 0 = 1 2 Wzór 2. Kwadrat odległość punktu od płaszczyzny Gdzie: 1 = [4 5 6 )] zdefiniowanych przez równanie płaszczyzny: : ) = 0 Gdzie: = 1 Autor opierając się na publikacji Ronfarda i Rossignaca (7) traktuje wierzchołek jako miejsce przecięcia wszystkich płaszczyzn trójkątów, które oparte są na danym punkcie taki punkt jest więc ich rozwiązaniem przecięcia się tych płaszczyzn (8). Oczywistym jest, że miejsce przecięcia, czyli sam wierzchołek należący do modelu, będzie miał wobec wszystkich płaszczyzn na nim opartych błąd równy zeru. Dlatego autor proponuje funkcję błędu (wzór 3) oprzeć na sumie odległości punktu od wszystkich sąsiadujących płaszczyzn. = *+, -. 1/ 0 = =1 2 >? Wzór 3. Błąd względem sąsiadujących płaszczyzn Gdzie: P jest zbiorem płaszczyzn w pobliżu punktu v. 20

25 Forma błędu podana we wzorze 3 może zostać przekształcona co formy kwadrycznej: = = 11 >? = = 11 >? A? B >? ) Gdzie: A? = C ) D 6) 4) 5) 6) ) 2 Wzór 4. Przekształcenie do formy kwadrycznej Użyty we wzorze 4 symbol K P zwany jest kwadryką błędu podstawowego. Może ona posłużyć do obliczania kwadratu odległości dowolnego punktu w przestrzeni względem płaszczyzny, której kwadryka jest użyta. Ostatnim krokiem inicjalizacji jest wyliczenie kwadryk dla wierzchołków siatki ze wzoru 5. E A? B >? F Wzór 5. Kwardyka wierzchołka Gdzie: P v jest zbiorem trójkątów opartych na wierzchołku v. Po wykonanych obliczeniach uzyskano kwadrykę, dzięki której można obliczać błąd wobec zbioru wielokątów, wykorzystując przy tym tylko jedną macierz. Wybór poprawnych par wierzchołków. Opis algorytmu przytacza pewną zmianę w rozumieniu par wierzchołków pretendujących do połączenia. Prócz punktów, które są bezpośrednio ze sobą połączone za pomocą krawędzi, łączyć mogą się też te, które nie są swoimi sąsiadami. Istnieje możliwość podania parametru, którego zadaniem jest wyznaczenie granicy zasięgu takiego łączenia. Należy ten parametr dobierać bardzo ostrożnie ponieważ w przypadku zasięgu zbyt dużego, możliwe 21

26 Udostępnianie wielorozdzielczych trójkątnych siatek powierzchni modeli trójwymiarowych w sieci Internet jest utworzenie n 2 par gdzie n jest liczbą wszystkich wierzchołków w modelu. Taki błąd może spowodować łączenie grup wierzchołków bardzo od siebie oddalonych, nie pomijając również faktu znacznego spowolnienia działania algorytmu. Liczenie optymalnego miejsca złączenia wierzchołków poprzez kontrakcje. Kontrakcją nazywamy łączenie dwóch wierzchołków, którego wynikiem jest wierzchołek mogący znajdować się w jakimkolwiek miejscu w przestrzeni. w przypadku algorytmu QEM miejsce złączenia nie jest oczywiście przypadkowe. Nie bez powodu inicjalizacja była dość złożoną operacją. Posiadanie obliczonych kwadryk dla każdego wierzchołka bardzo ułatwia obliczenie wyniku kontrakcji. Rozpatrując połączenie punktów v 1, v 2, których kwadryki oznaczone będą Q 1 i Q 2 potrzebne będzie obliczenie wspólnego kwadryka, która jest ich sumą: EG = E H + E 2. Kolejnym krokiem jest użycie wzoru 3, który odpowiada za błąd. Zadaniem tego etapu jest dobranie miejsca łączenia, który będzie obarczony najmniejszym błędem. w tym przypadku znalezienie minimum jest problemem liniowym. Tak więc otrzymujemy poprzez obliczenie J = J = J = 0, co daje: J, J- J. L HH L H2 L HM L HN 0 L K 2H L 22 L 2M L 2N 0 O = C D L MH L M2 L MM L MN Ostatni wiersz jest pusty ponieważ wektor jest jednorodny. Zakładając, że macierz jest odwracalna, ostateczny wzór otrzymuje postać ze wzoru 6. L HH L H2 L HM L HN L = K 2H L MH L 22 L M2 L 2M L MM L 2N O L MN PH 0 0 C D 0 1 Wzór 6. Miejsce optymalnego łączenia (kontrakcji) Równanie 6 wymaga by zmodyfikowana macierz kwadryki była macierzą odwracalną. Jeśli jednak operacja odwracania nie jest możliwa źródło podaje, by wybrać optymalne pozycję wzdłuż odcinka v 1 v 2. Kiedy i to się nie powiedzie, należy wybrać za miejsce kontrakcji punkt v 1 lub v 2, lub punkt położone dokładnie pomiędzy nimi. 22

27 Otrzymany w ten sposób punkt w przestrzeni jest obarczony najmniejszym błędem, dlatego zostaje tylko wykorzystanie wzoru 4 aby obliczyć ile dokładnie on wynosi. Wybór minimalnego kosztu łączenia spośród wszystkich wierzchołków. Poprzedni krok musi zostać wykonany dla każdego wierzchołka, przez co otrzymamy kolekcję kosztów dla każdej możliwej operacji kontrakcji. Spośród tych wyników raz na iterację wybierana zostaje wartość najmniejsza, przez co aproksymacja modelu jest dokładniejsza. Wykonanie połączenia wybranych wierzchołków. Z poprzednich etapów algorytmu otrzymano najbardziej optymalne miejsce złączenia wierzchołków. Kiedy wybrana zostanie spośród wszystkich możliwych kontrakcji ta obarczona najmniejszym błędem należy przystąpić do jej wykonania. Rysunek 13 przedstawia sposób działania takiej operacji. Rysunek 13. Operacja łączenia poprzez kontrakcję W przypadku rysunku 13 a) łączone są ze sobą wierzchołki będące swoimi sąsiadami, zaś cześć b) prezentuje połączenie punktów, które znalazły się w zasięgu łączenia, ale nie posiadają wspólnej krawędzi. Wszystkie informacje (dotyczące struktury sąsiadującej z miejscem wykonanej operacji) zostaną przypisane do nowo powstałego wierzchołka. Po takiej operacji funkcje obu wierzchołków v 1 i v 2 zastępuje wierzchołek. Warto zaznaczyć, iż kwadryka dla nowego wierzchołka jest wartością EG obliczoną w kroku trzecim. 23

28 Aktualizacja kosztów. Lokalna struktura siatki po kontrakcji ulega zmianie dlatego też koszty kolejnych łączeń zmieni się w tym otoczeniu. Koszty należy zaktualizować w każdym wierzchołku sąsiadującym z wynikiem połączonych wierzchołków. Wartym zwrócenia uwagi jest fakt, że aktualizujemy koszty tylko na podstawie utworzonych kwadryk ponowne ich wyliczanie jest zbędne. Po aktualizacji można przystąpić do kolejnej iteracji algorytmu Algorytm zachłanny z prostą funkcją oceny Algorytm ten został stworzony na potrzebę tej pracy. w dużej mierze opiera się on na publikacji Stana Melaxa (6). Metoda ta ma posłużyć jako wzorzec minimalnej ilości obliczeń, która jest wymagana do wykonania operacji upraszczania siatek trójwymiarowych. Metoda opiera się na poniższych krokach: 1. Liczenie minimalnego kosztu łączenia poprzez kolapsację (ang. collapse) dla każdego wierzchołka. 2. Wybór minimalnego kosztu łączenia spośród wszystkich wierzchołków. 3. Wykonanie połączenia wybranych wierzchołków. 4. Aktualizacja kosztów wierzchołków sąsiadujących z punktami połączonymi w obecnej iteracji. 5. Powtórzenie kroków od punktu 2. Wybrano do tej metody elementy, które zostały uznane za najbardziej optymalne z jednoznacznym pominięciem oceny jakości generowanych uproszczeń. Poniżej opisane zostały ważniejsze kroki, ich modyfikacje oraz argumentacja dlaczego zostały wybrane. Liczenie minimalnego kosztu. Koszt połączenia sąsiadujących ze sobą wierzchołków w tej metodzie, jest równy odległości miedzy parami punktów. Może to być przyczyną znacznie gorszej jakości przybliżeń, ale jednocześnie nie wymaga dość kosztownego wyliczania krzywizny w lokalnym otoczeniu. Dzięki przyjęciu tak minimalistycznej funkcji błędu, dokonano modyfikacji, którą jest brak jakichkolwiek inicjalizacji potrzebnych do policzenia kosztu względem każdej pary wierzchołków. 24

29 Wykonanie połączenia wybranych wierzchołków. Łączenie wierzchołków odbywa się poprzez metodę kolapsacji, która zapewnia nam brak dodatkowych obliczeń związanych z decyzją o położeniu wyniku połączonych punktów. Aktualizacja kosztów wierzchołków. Ten krok także dzięki prostej funkcji kosztu należy do bardzo wydajnych. Aktualizacji podlegają jedynie koszty łączenia wierzchołków, które były w sąsiedztwie z wierzchołkiem który w wyniku łączenia przez kolapsację został usunięty z siatki. Żadne dodatkowe wartości takie jak wektory normalne nie muszą być wyliczane Siatki progresywne W poprzednich podrozdziałach opisane zostały powody upraszczania siatek oraz algorytmy stosowane w tym celu. Dzięki nim uzyskujemy możliwość utworzenia siatek o dowolnej rozdzielczości. Projektant jest zdolny w takim przypadku z utworzonego złożonego modelu utworzenie serii jego aproksymacji, które odpowiednio podmieniane podczas wyświetlania na scenie, znacznie usprawni działanie aplikacji. Trzeba jednak zdać sobie sprawę, że jeśli liczba modeli, która odzwierciedla oryginał jest zbyt mała, podmiany tych modeli w czasie działania są szczególnie widoczne przez obserwatora. Gdy modele różnią się wieloma szczegółami, a podmiana modelu wykonywana jest zbyt blisko obserwatora uzyskany zostanie niekorzystny efekt wyskakiwania (ang. popping). Należy więc dopilnować by uproszczonych siatek była odpowiednia liczba. Niestety może okazać się, iż wyeliminowanie widoczności podmiany modeli będzie wymagało tak dużej ich liczby, że zajętość przestrzeni dyskowej będzie zdecydowanie niesatysfakcjonująca. Takie rozważanie może doprowadzić do pomysłu użycia algorytmu upraszczającego dopiero podczas działającej aplikacji oddalanie modelu od obserwatora powodowałoby kolejne operacje uproszczeń na siatce, przez co zmiany były by płynne. Jednak rodzi to kolejny problem. Algorytmy przytoczone łącząc parę wierzchołków usuwają dane, które nie są już potrzebne, przez co przywracanie wierzchołków staje się niemożliwe. Na pomysł przechowywania danych usuwanych podczas procesu upraszczania siatek wpadł Hoppe w roku 1996 i opisał go w swojej publikacji (9). Nowo powstała struktura danych uzyskała nazwę siatki progresywnej (ang. progressive mesh). Autor zwrócił uwagę na to, że 25

30 efekt pracy algorytmu upraszczającego, jego autorstwa, zaprezentowanego w (10) jest całkowicie odwracalny przy odpowiednio zapisywanych danych. Rysunek 14 przedstawia ideę parę operacji łączenia oraz rozdzielenia. Wyraźnie można za pomocą tego przykładu zauważyć, które dane są usuwane i zarazem wymagane do odtworzenia stanu siatki sprzed wykonania operacji. w przedstawionym przypadku operacja łączenia usuwa wierzchołek v t, zaś v s uzyskuje nową pozycję. Usunięte zostają trójkąty (v t v r v s ), (v s v l v t ), a punkty mające wspólną krawędź z punktem v t modyfikują ją, by ich sąsiadem był v s. Rysunek 14. Idea operacji dzielenia wierzchołków Jeśli oryginalny model oznaczymy przez M, a n będzie liczbą przewidzianych operacji łączenia, gdzie po każdej iteracji n będzie dekrementowane, po zakończonym upraszczaniu modelu otrzymamy model bazowy. Doskonale ukazuje to rysunek 15. Dokonując sekwencji uproszczeń otrzymywane były nowe modele o innej rozdzielczości, by wynikiem była oczekiwana siatka. Rysunek 15. Sekwencja łączeń 26

31 Zastosowanie zapisywania dokonanych przekształceń pozwoli uzyskać powiększającą się macierz zawierającą informacje potrzebne do operacji dzielenia. Dzięki temu możliwa jest sekwencja prowadząca od M 0 poprzez dowolny M i, aż do uzyskania M n Podsumowanie Opisane powyżej algorytmy bardzo dobrze reprezentują różne podejścia do tematyki upraszczania modeli. Poczynając na metodzie Melaxa, która jest bardzo intuicyjna i prosta do wyobrażenia, kończąc na algorytmie QEM, którego matematyczne podłoże wydaje się być bardzo złożone. Tak bardzo zróżnicowane podejście do modyfikacji siatek może zaskoczyć tym bardziej, iż obaj autorzy czerpali wiedzę i inspirację z prac H. Hoppe (10) oraz (9). Wskazują oni jednak na funkcję energii, której wydajność była dla nich niezadowalająca. Dodatkowo ciekawym okazuje się wybrany sposób łączenia wierzchołków, ponieważ Hoppe w swych pracach zaprezentował oraz używał wszystkich metod jednocześnie (kolapsację, kontrakcja oraz zamiana krawędzi) natomiast każdy z wzorujących się autorów wybrał tylko jedną z nich. Ciekawą informacją jest iż Hoppe zainteresował się metodą Garlanda i w roku 1999 przedstawił ulepszony algorytm (11), który prócz błędu położenia wierzchołków, uwzględniał tez błędy atrybutów. Warto nadmienić, że autorzy metod wyznaczyli pewne elementy, które są w pewnym sensie opcjonalnym wyborem dla osoby implementującej dane rozwiązanie. Przykładem takiego elementu jest zaznaczenie przez autorów, że ich metody na etapie upraszczania nie są wrażliwe na efekt odwracanych wielokątów. Jest to efekt, który powoduje obrót trójkątów tyłem do obserwatora, co powoduje uzyskanie niejednolitej ściany modelu. Jednym ze sposobów najczęściej zapożyczanych z publikacji Ronfarda i Rossignaca (7) jest śledzenie wektora normalnego danej powierzchni przed i po operacji. Jeśli zwrot zmieni się o wartość w przybliżeniu równą Q operacja ta jest wycofywana, a jej koszt obarczany dodatkową karą. 27

32 1.6 Transmisja Progresywna Doświadczenia osób przeglądających różne treści dzięki sieci Internet są często podyktowane czasem oczekiwania na możliwość przeczytania, obejrzenia lub odsłuchania danego zasobu. Kiedy czas ten jest zbyt długi, z bardzo dużym prawdopodobieństwem ten sam użytkownik nie będzie próbował ponownie uzyskać dostępu do treści, lecz będzie starał się szukać innego źródła. Wiele treści nie stanowi prostych dokumentów. Coraz częściej pobierane są kompletne treści książek, obrazy w wysokiej rozdzielczości, długie utwory muzyczne lub wideo wysokiej jakości, których rozmiar zdecydowanie przekracza dziesiątki, a nawet setki megabajtów. Zależnie od szybkości połączenia pliki takie mogą być pobierane nawet przez kilka dni. Gdyby transmisja takich treści nie była przemyślana, możliwość ich obejrzenia byłaby możliwa tylko i wyłącznie po pobraniu całego zasobu, co z punktu widzenia przeciętnego użytkownika jest niedopuszczalne. z tego powodu stosuje się transmisję progresywną dla tego typu danych, polegającą na tym by przesyłać treść w taki sposób by odbiorca mógł ją przeglądać podczas jej ładowania. Większość z wymienionych przykładów da się przesyłać w sposób naturalny, przykładowo książkę można przesyłać strona po stronie, muzykę próbkę po próbce wypełniając kolejne sekundy utworu, wideo klatka po klatce. Innej metody wymagają obrazy w ich przypadku transmisja kolejnych pikseli tak naprawdę nie jest dobrą metodą, ponieważ użytkownik przez większą część czasu widzi fragment przesyłanego obrazu i nie jest w stanie nawet domyśleć się, co prezentuje. Dlatego dla obrazów stosuje się technikę przesyłania najpierw odwzorowania gorszej jakości, która odzwierciedla zarys jego zawartości, po czym przesyłane są kolejne dane służące do polepszania jakości wyświetlonego obrazu. Przykład takiej operacji przedstawia rysunek 16. Rysunek 16. Transmisja progresywna obrazu (4) 28

33 Analogiczne podejście stosowane jest przy przesyłaniu siatek modeli trójwymiarowych, ponieważ przesyłanie fragmentów modelu nie będzie dostarczało wystarczających informacji odbiorcy przez większość czasu transmisji. Technikę progresywnego transmitowania siatek opisał w swojej publikacji Hoppe (9), który zaznaczył, że siatki progresywne są idealną strukturą do zastosowania przy operacjach ich transmisji. Rysunek 17 przedstawia ideę transmisji odpowiednich danych podczas transmisji progresywnej. Rysunek 17. Transmisja progresywna siatki trójkątów Wnioskując z rysunku 17 pierwsze przesłane dane są bazą siatki progresywnej, czyli jak wiadomo z rozdziału jest to kompletny model trójwymiarowy po dokonanych uproszczeniach. Dzięki temu zaraz po przesłaniu pierwszych danych odbiorca może obejrzeć zarys przesyłanej siatki. Następnie w sposób iteracyjny przesyłane są kolejne dane dotyczące operacji dzielenia wierzchołków, które zagęszczają siatkę w sposób płynny. Oczywistym jest, że nie jest wymagane przesyłanie pojedynczych danych vspl, ponieważ lepszym rozwiązaniem jest przesyłanie pewnego rodzaju paczek zawierających większą ilość danych. Takie podejście zmniejszy znaczenie czasu potrzebnego na uzyskanie połączenia. 29

34 2 Aplikacja badawcza W celu przeprowadzenia badań, zaimplementowano aplikację, której celem jest umożliwienie przeprowadzenia badań przedstawionych w rozdziale 1.1. Choć projekt zakłada szerszą architekturę, zdolność zaprezentowania jego funkcjonalności możliwa jest wyłącznie dzięki odpowiednio przygotowanemu programowi dającemu użytkownikowi możliwość interakcji z serwerową częścią systemu. Aby lepiej zobrazować wymagania postawione w celach projektu, skonstruowano diagram przypadków użycia. Rysunek 18. Diagram przypadków użycia Rysunek 18 przedstawia skonstruowany w oparciu o część wymagań diagram przypadków użycia. Choć prezentuje on możliwe akcje dokonane przez użytkownika na aplikacji klienckiej, w dużej mierze jest on też dobrym przedstawieniem diagramu przypadków użycia aplikacji klienckiej na usłudze internetowej. Dzieje się tak ponieważ aplikacja po stronie klienta służy jedynie w celu wywoływania odpowiednich usług. Zaś sama usługa internetowa w sposób naturalny implementuje wzorzec projektowy fasada, którego diagram klas UML przedstawia rysunek

35 Rysunek 19. Diagram klas UML dla wzorca projektowego Fasada (1) Stosowanie tego wzorca przeważnie służy zapewnieniu uproszczenia dostępu do złożonego systemu, czym w przypadku niniejszej pracy jest część serwerowa. 2.1 Specyfikacja zewnętrzna Projekt DesktopClient Projekt ten reprezentuje oraz obsługuje końcówkę kliencką, dzięki której użytkownik ma możliwość interakcji z serwerem. Jej interfejs opracowany został w oparciu o aplikacje przeznaczone dla rodziny systemów operacyjnych Windows, który zaprezentowany został na rysunku 20. Rysunek 20. Interfejs użytkownika aplikacji klienckiej 31

36 Jak można zauważyć, aplikacja posiada zrównoważoną liczbę opcji, które zostały odpowiednio posegregowane. Zdecydowanie największy obszar okna zajmuje lewa część okna, która służy prezentowaniu trójwymiarowego widoku aktualnego stanu siatki jaką w procesie transmisji progresywnej została przekazana. Prawa strona posiada trzy odrębne części. Górną część zajmuje panel odpowiedzialny za transmisję oraz generowanie siatek. Dolny lewy panel obsługuje szereg przełączników służących do modyfikowania sposobu prezentacji w panelu widoku. Zaś panel umieszczony w prawym dolnym rogu umożliwia zapis oraz wczytywanie siatki z plików lokalnych. Dodatkowym elementem interfejsu jest dolna belka odpowiedzialna za wyświetlania statusu aplikacji (przy połączeniach z usługami) oraz wyników w postaci czasu wykonania ostatniej operacji 2.2 Specyfikacja wewnętrzna Architektura systemu Projekt został zaimplementowany w zintegrowanym środowisku programistycznym (ang. Integrated Development Environment IDE) Visual Studio 2010, co wymusza nazewnictwo projektu jako solucji, w ramach której implementowane są projekty. w celu wygodnej implementacji systemu, solucja została podzielona na trzy projekty. Każdy z nich odpowiedzialny jest za inną część systemu. Rysunek 21. Elementy solucji Rysunek 21 przedstawia schemat solucji, która zawiera projekty realizujące wyspecjalizowane zadania dla rozwiązania problemu. Taka konstrukcja zapewnia porządek w implementacji, dzięki czemu zarządzanie takim kodem jest łatwiejsze, a praca z projektem jest bardziej intuicyjna. Dokładniejszy opis wymienionych projektów znajduje się w następnych podrozdziałach. 32

37 2.2.2 Projekt MultiresolutionService Jak sama nazwa wskazuje, jest to projekt implementujący usługi internetowe oraz ich zachowanie. Kilka funkcji, które powinna udostępniać fasada można by umieścić w jednej usłudze, jednak myśląc o skalowalności systemu warto w odpowiedni sposób rozdzielić funkcje do kilku usług, grupując je według charakterystyki dokonywanych przez nie operacji. Podczas implementacji tej części opracowano podział zaprezentowany na rysunku 22. Rysunek 22. Struktura usług internetowych w systemie Dopóki serwer nie będzie bardzo obciążany każdy podział, a nawet jego brak jest rozwiązaniem poprawnym. Jednak przewidując odpowiednio dużą liczbę zapytań taki podział pozwoli na oddelegowanie tych zadań do wyspecjalizowanych serwerów. Dla przykładu: Usługa generowania siatek wielorozdzielczych wymaga dużej mocy obliczeniowej, ponieważ podczas dokonywanych uproszczeń występuje wiele operacji dokonywanych na wektorach liczb typu zmiennoprzecinkowego. Dlatego umieszczenie jej na jednostce uposażonej w wydajny wielordzeniowy procesor wystarczająco przygotuje ją do obsługi wielu zapytań. Ponieważ wszystkie modele wejściowe jak i utworzone modele wielorozdzielcze zapisane są w plikach na dysku, usługa transmisji siatek dokonuje wielu operacji odczytu plików znajdujących się na nim. Dlatego warto umieścić ją na komputerze posiadającą macierz dysków wykonanych w technologii SSD. Taka strategia 33

38 zapewni, że odczyt nie będzie wąskim gardłem systemu przy dużej liczbie zapytań. Usługa udostępniająca informacje o danych nie ma zbyt wielkich wymagań, niemniej jednak liczba zapytań będzie rosła proporcjonalnie do poprzednich usług, przez co największą zasługą umieszczenia tej usługi na innej maszynie niż wymienione wcześniej, będzie odciążenie wyspecjalizowanej części systemu od zadań, dla których nie zostały przewidziane. Na rysunku 22 wyraźnie zauważyć można, że aplikacja kliencka ma bezpośredni dostęp do wszystkich udostępnionych przez serwer usług. Ta cecha oraz możliwość pracy wielowątkowej po stronie serwera umożliwia wysyłanie zapytań asynchronicznych, dzięki czemu czekając na wynik jednej z usług, użytkownik swobodnie może operować na innych udostępnionych funkcjach. w celu ukazania możliwości wysyłania zapytań w czasie przygotowany został diagram sekwencji (rysunek 23) dla zwykłych zapytań. 34

39 Rysunek 23. Diagram sekwencji komunikacja Dokonywane operacje przedstawiają zapytania do wszystkich usług zapytania kierowane są o informacje o danych, transmisje oraz generowanie siatek progresywnych. Wyraźnie można zauważyć jak podejście to w pewien sposób umożliwia delegowanie wykonywania 35

40 pewnych zadań na serwerze, przez co mogą one być wykonywane równolegle nie obciążając przy tym komputera użytkownika Projekt Multiresolutioning Projekt Multiresolutioning jest najważniejszym elementem systemu. Wynikiem zbudowania tego projektu jest biblioteka dll zawierająca wszystkie struktury, kolekcje, algorytmy oraz parsery używane przy operacjach na trójkątnych siatkach modeli trójwymiarowych. Ogromną zaletą takiego podejścia jest to, że biblioteka w takiej postaci jest całkowicie niezależna można ją użyć do stworzenia oprogramowania każdego typu. Biblioteka taka może być wykorzystana w ten sam sposób w aplikacji konsolowej, okienkowej, usługach internetowych, stronach internetowych. W solucji przygotowanej na potrzeby tej pracy, biblioteki tej używa zarówno strona serwerowa jaki i strona kliencka, jednak w innym zakresie. Choć rozłączenie biblioteki mogłoby się okazać rozwiązaniem bardziej eleganckim, zdecydowano o utrzymaniu jej w takiej postaci, by dzięki uporządkowanej strukturze solucji implementacja była ułatwiona. Elementy oraz przyjęte rozwiązania składające się na ten projekt opisane zostały dokładniej w rozdziale poświęconym implementacji (rozdział 2.2.4) Implementacja Biblioteka będąca najważniejszym elementem systemu złożona jest z wielu składników. w celu przybliżenia roli jaką pełnią w systemie zostały pogrupowane oraz opisane w ramach tegoż rozdziału Interfejsy Interfejsy definiując abstrakcyjne typy umożliwiają hermetyzację oraz poszerzenie uniwersalności klas. Druga z wymienionych cech objawia się w momencie gdy klasy w swoim ciele posiadają pole o typie interfejsu, które ma zdolność do przechowywania referencji do innych klas go implementujących. w systemie utworzone zostały interfejsy, które zostały przedstawione na diagramie w rysunku

41 Rysunek 24. Interfejsy Interfejs ICostable definiuje jakie właściwości (ang. properties) powinien posiadać obiekt, przechowujący koszt operacji. Interfejs ICollectionable definiuje występowanie właściwości dla obiektów mających znaleźć się w odpowiedniej kolekcji. Interfejs ISimplifier determinuje na klasie go implementującej zdefiniowanie metody odpowiedzialnej za upraszczanie siatek trójwymiarowych. Klasy implementujące dwa pierwsze interfejsy opisane zostały w następnym rozdziale, zaś użycie ostatniego ukazuje podrozdział Klasy elementarne Do tej grupy zaliczone zostały klasy, które nie są bardzo złożone jeśli chodzi o ich strukturę. Posiadają one w głównej mierze pola, a metody najczęściej są tylko implementacją interfejsów. Dwie pierwsze klasy znajdują się na rysunku 25. Rysunek 25. Klasy kosztów 37

42 Obie te klasy implementują interfejs ICostable, dzięki czemu od strony części kodu używającego referencji do tych obiektów, nie jest istotnym czy typem jest CollapseCost czy ContractionCost. Kolejne klasy przedstawia rysunek 26. Rysunek 26. Klasy elementarne Klasy te mają większy związek z tematyką grafiki trójwymiarowej dlatego wymagają dokładniejszego opisu. Vertex klasa wierzchołka implementująca interfejs ICollectionable oraz wbudowany w.net IComparable. Idea pierwszego interfejsu wyjaśniona została w dalszej części rozdziału, zaś IComparable definiuje sposób w jaki obiekty implementujące ten interfejs są ze sobą porównywane. Warto zwrócić uwagę, że pojedynczy obiekt przechowuje kolekcje trójkątów, w których jest obecny oraz sąsiadujących wierzchołków. Choć podejście to jest kosztowne pamięciowo, musiano przyjąć taką strukturę, by móc wydajnie operować na grafie siatki. Face klasa reprezentująca trójkąt w siatce modelu. Należy i w tym przypadku zwrócić uwagę na to, iż obiekt tej klasy przechowuje tablicę trójelementową zawierającą wskaźniki 38

43 na wierzchołki, na których dany wielokąt się opiera. Motywacją jest tu oczywiście wydajność tak, jak w przypadku struktury wierzchołka. Split z kolei ta klasa nie dotyczy bezpośrednio modelu trójwymiarowego, lecz siatki progresywnej. Reprezentuje ona obiekty przechowujące informacje dotyczące operacji dzielenia przedstawionej na rysunku 14 umieszczonym w teoretycznej części niniejszej pracy. Przyglądając się tej strukturze oraz publikacji Hoppea (9) można zwrócić uwagę, iż zastosowana konstrukcja nie implementuje pomysłu tego autora. Głównym powodem takiego podejścia jest wydajność. Zarówno Hoppe jak i inni autorzy duży nacisk kładli na kompresję danych, prześcigając się w algorytmach mających na celu rozkodowanie zapisanej informacji o operacji dzielenia. Oczywiście musi się to wiązać z pewnym narzutem czasowym, co w przypadku planowania stworzenia klienta dla przeglądarki internetowej, mogłoby być bardzo kłopotliwe kiedy do dyspozycji ma się jedynie język skryptowy. Ostatnią klasą przydzieloną do tej grupy jest klasa FaceSmall przedstawiona na rysunku 27. Rysunek 27. Klasa FaceSmall Jest ona jedynie pomocniczym reprezentantem klasy Face. Konieczność jej powstania powstała podczas transmisji danych. Środowisko uruchomieniowe.net podczas wysyłania danych konwertuje wszelkie obiekty na zdefiniowany format (SOAP, JSON). Podczas tej operacji odwiedza kolejne pola serializując je. Problem pojawia się w grafowej charakterystyce połączeń między obiektami, co powoduje występowanie nieskończonych cykli serializacji. Przeniesienie tylko potrzebnych danych nie będących referencjami do obiektów znajdujących się w siatce umożliwiło poprawny proces serializacji. 39

44 Kolekcje Choć środowisko uruchomieniowe.net posiada wiele wbudowanych i wydajnych kolekcji, konieczne było implementowanie dodatkowych, dostosowanych do specyficznych wymagań projektowych. Stworzone klasy tworzące nowe typy kolekcji przedstawia rysunek 28. Rysunek 28. Kolekcje Przedstawione kolekcje nie są stałymi elementami żadnych innych klas. Są one wykorzystywane na zasadzie klas pomocniczych. Ich sposób działania polega na powiązaniu istniejącej już kolekcji (w postaci tablicy) i utworzeniu dla niej interfejsu zarządzającego. z jego pomocą utworzono w pewnym sensie opakowanie nadające kolekcji inne cechy i zachowanie. Kolekcja Heap implementuje strukturę kopca, jednak posiada ona pewną modyfikację. Mianowicie choć jest to klasa generyczna to została ona przewidziana tylko dla obiektów implementujących interfejsy ICollectionable oraz IComparable. Dzięki temu pierwszemu każdy z elementów, który znajduje się w kolekcji posiada świadomość swojej obecności w kolekcji oraz zna swoje położenie w niej. 40

45 Kolekcja SortedVertexList działa w większości tak samo jak zwykła lista obecna w.net, jednak i tu elementami są obiekty klasy Vertex, która jak wiadomo implementują wspomniane przy opisie menadżera kopca interfejsy. Dzięki temu i tu obiekty posiadają informację o dokładnym położeniu w kolekcji. Klasa zarządzająca zapewnia, że elementy w kolekcji są posortowane dodatkowo dając możliwość dodawania kolejnych i wyszukiwania w sposób binarny. Zastosowanie powyższych kolekcji zostało opisane w rozwinięciu rozdziału o klasach złożonych. Opis zawiera także zalety użycia oraz podejścia do tych struktur danych Algorytmy Algorytmy przedstawione w rozdziale 1.5 zostały zaimplementowane w postaci klas posiadających szereg metod potrzebnych do wykonania operacji związanych z danym sposobem upraszczania siatki. Diagram tych klas przedstawia rysunek 29. Rysunek 29. Klasy algorytmów Wszystkie te klasy implementują interfejs ISimplifier, przez co klasy te zobowiązane są do zdefiniowania ciała metody odpowiedzialnej za operację upraszczania. Cel jaki osiągnięto dzięki zastosowaniu interfejsu w przypadku tych klas został przedstawiony w następnym rozdziale Klasy złożone Rozdział ten przedstawia klasy, które w dużym stopniu korzystają lub enkapsulują elementy opisane wcześniej. z tego powodu w tej pracy nazwano je złożonymi. Elementy te są tak 41

46 naprawdę miejscem, w którym wszystkie mniejsze klasy otrzymują wszelkie potrzebne dane by móc wypełnić swą rolę. w projekcie znajdują się dwie takie klasy zostały one przedstawione na rysunku 30. Rysunek 30. Złożone klasy w projekcie Choć mogą wydawać się złożonymi lub przeładowanymi klasami okazuje się, że ich struktura jest bardzo intuicyjna, dzięki czemu tworzenie kodu operującego na nich nie jest zadaniem trudnym. Klasa MeshData reprezentuje kompletny trójwymiarowy obiekt siatki trójkątów. w tym celu przechowuje ona listę wierzchołków (obiektów klasy Vertex) oraz listę trójkątów (obiektów klasy Face). Istotną informacją jest to, że każdy wierzchołek i trójkąt są pojedynczym, niezdublowanym obiektem. Dzięki temu wierzchołki wskazują na sąsiadów i trójkąty, a trójkąty na wierzchołki znajdujące się w tych listach. Powstaje w ten sposób bardzo mocna sieć powiązań pomiędzy obiektami i ich kolekcjami. Klasa ProgressiveMesh reprezentuje siatkę progresywną. w tym celu enkapsuluje ona klasę MeshData, która w tym przypadku jest odzwierciedleniem aktualnej macierzy danych M i. Klasa ta ma zdolność do wykorzystania jednego z algorytmów upraszczających siatki jednocześnie umieszczając informacje o kolejnych operacjach dzielenia w liście obiektów 42

47 typu Split. w tym celu klasa ProgressiveMesh używa prawie wszystkich wcześniej przedstawionych elementów. Ponieważ jednym z założeń projektu jest osiągnięcie takiej implementacji, która umożliwia łatwe rozszerzanie biblioteki o kolejne algorytmy, jego wybór odbywa się poprzez odpowiednie wskazanie obiektu implementującego interfejs ISimplifier. Jest to pomysł zaczerpnięty wprost z wzorca projektowego zwanego strategią. Diagram klas tego wzorca przedstawia rysunek 31. Rysunek 31. Diagram klas UML dla wzorca projektowego Strategia (1) Zastosowanie go umożliwiło pewną dodatkową funkcję. Mianowicie dzięki luźnemu powiązaniu algorytmu z obiektem siatki progresywnej, możliwa jest dowolna zmiana metody upraszczającej nawet już po wykonaniu tych operacji przez inny algorytm. Dlatego nic nie stoi na przeszkodzie, by usunąć połowę wierzchołków modelu metodą QEM, a drugą połowę algorytmem Melaxa. Wszystkie powyżej opisane powiązania zaprezentuje diagram na rysunku

48 Rysunek 32. Diagram UML złożonych klas w systemie 44

49 Tak zbudowana hierarchia daje możliwość upraszczania oraz rekonstruowania modeli. w celu wykonania tych operacji należy wypełnioną strukturę MeshData umieścić w obiekcie klasy ProgressiveMesh. Ostatnim krokiem jest utworzenie obiektu implementującego interfejs ISimplifier i połączenie go z wcześniej utworzonym obiektem ProgressiveMesh. Na tak zainicjalizowanym obiekcie można wywołać metodę Simplify, która jako argument przyjmuje żądaną liczbę iteracji algorytmu (czyli liczbę wierzchołków do usunięcia). Podczas wykonywania tych operacji samoczynnie wypełniana jest kolekcja listy obiektów typu Split w obiekcie ProgressiveMesh. Lista ta z kolei wykorzystywana jest w momencie użycia metody DoSplit także przyjmująca jako parametr liczbę pętli przywracających jeden wierzchołek na iterację. Jednym z bardziej istotnych kroków każdego z wymienionych w części teoretycznej algorytmów, jest wybór pary wierzchołków, których operacja łączenia ma najmniejszy koszt. Użyta została tu kolekcja Heap, dzięki której po znalezieniu najmniejszej wartości kosztu, dokonaniu modyfikacji w strukturze siatki, możliwe jest szybkie uaktualnienie wartości kosztu wierzchołków w sąsiedztwie. Zadanie to jest znacznie ułatwione dzięki temu, że elementy w kolekcji implementują interfejs ICollectionable, więc znalezienie i umiejscowienie go we właściwym miejscu, używając sortowania metodą kopcowania, jest operacją bardzo szybką. Kiedy dochodzi do wywołania operacji dzielenia, przekazywany jest obiekt typu Split. Ponieważ obiekty tej klasy zaprojektowane zostały do przesyłania poprzez sieć, ich struktura zawiera jedynie typy proste. Dlatego wyszukiwanie wierzchołka, który ma zostać rozdzielony odbywa się przy pomocy wyszukiwania, jakim jest przypisany wierzchołkowi numer identyfikacyjny. Do tego celu służy kolekcja SortedVertexList dająca możliwość wyszukiwania i wstawiania elementów binarnie Parsery i formaty plików Złożone obiekty z poprzedniego podrozdziału muszą zostać wypełnione danymi aby jakiekolwiek operacje miały sens. Oczywistym jest, że dane te opisują modele siatek trójkątnych. w celu nadania tym danym trwałości zapisywane są one do plików umieszczonych na nośnikach danych. Odczytanie tych danych zostało powierzone przedstawionym na rysunku 33 klasom. 45

50 Rysunek 33. Diagram klas obsługujących operacje związane z plikami Obie przedstawione na diagramie klasy są klasami statycznymi i prócz możliwości odczytu potrafią także zapisać zawartość klasy MeshData lub ProgressiveMesh do pliku, by dane te utrwalić i odczytać, gdy zajdzie taka potrzeba. Klasa PLYMeshFile odpowiedzialna jest za odczyt oraz zapis plików w formacie PLY. Jest to otwarty format używany przez repozytorium Uniwersytetu Stanforda, który udostępnia wyniki skanowań obiektów właśnie w tym formacie. Ponieważ jest on ustandaryzowany oraz szeroko udokumentowany (11), niniejsza praca nie zawiera jego opisu. Statyczna klasa ProgressiveMeshFile implementuje szereg metod ułatwiających dostęp do danych zawartych w plikach z rozszerzeniem pmo oraz pms, które przygotowane zostały dla siatek wielorozdzielczych. Znajdujący się w nich format danych został skonstruowany na potrzeby tego projektu. Plik pmo przechowuje dane dotyczące siatki podstawowej, tej która po zastosowaniu uproszczeń przyjmuje minimalną liczbę wierzchołków. Małą część danych zawartych w tym pliku przedstawia kod źródłowy 1. 46

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W ELBLĄGU INSTYTUT INFORMATYKI STOSOWANEJ Sprawozdanie z Seminarium Dyplomowego Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Bardziej szczegółowo

Politechnika Warszawska Wydział Mechatroniki Instytut Automatyki i Robotyki

Politechnika Warszawska Wydział Mechatroniki Instytut Automatyki i Robotyki Politechnika Warszawska Wydział Mechatroniki Instytut Automatyki i Robotyki Ćwiczenie laboratoryjne 2 Temat: Modelowanie powierzchni swobodnych 3D przy użyciu programu Autodesk Inventor Spis treści 1.

Bardziej szczegółowo

Webowy generator wykresów wykorzystujący program gnuplot

Webowy generator wykresów wykorzystujący program gnuplot Uniwersytet Mikołaja Kopernika Wydział Fizyki, Astronomii i Informatyki Stosowanej Marcin Nowak nr albumu: 254118 Praca inżynierska na kierunku informatyka stosowana Webowy generator wykresów wykorzystujący

Bardziej szczegółowo

Oświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy cieniowania.

Oświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy cieniowania. Oświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy cieniowania. Chcąc osiągnąć realizm renderowanego obrazu, należy rozwiązać problem świetlenia. Barwy, faktury i inne właściwości przedmiotów postrzegamy

Bardziej szczegółowo

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV Piotr Jarosik, Kamil Jaworski, Dominik Olędzki, Anna Stępień Dokumentacja wstępna TIN Rozproszone repozytorium oparte o WebDAV 1. Wstęp Celem projektu jest zaimplementowanie rozproszonego repozytorium

Bardziej szczegółowo

Transformacja współrzędnych geodezyjnych mapy w programie GEOPLAN

Transformacja współrzędnych geodezyjnych mapy w programie GEOPLAN Transformacja współrzędnych geodezyjnych mapy w programie GEOPLAN Program GEOPLAN umożliwia zmianę układu współrzędnych geodezyjnych mapy. Można tego dokonać przy udziale oprogramowania przeliczającego

Bardziej szczegółowo

World Wide Web? rkijanka

World Wide Web? rkijanka World Wide Web? rkijanka World Wide Web? globalny, interaktywny, dynamiczny, wieloplatformowy, rozproszony, graficzny, hipertekstowy - system informacyjny, działający na bazie Internetu. 1.Sieć WWW jest

Bardziej szczegółowo

Tom 6 Opis oprogramowania

Tom 6 Opis oprogramowania Część 4 Narzędzie do wyliczania wielkości oraz wartości parametrów stanu Diagnostyka stanu nawierzchni - DSN Generalna Dyrekcja Dróg Krajowych i Autostrad Warszawa, 30 maja 2012 Historia dokumentu Nazwa

Bardziej szczegółowo

Plan wykładu. Akcelerator 3D Potok graficzny

Plan wykładu. Akcelerator 3D Potok graficzny Plan wykładu Akcelerator 3D Potok graficzny Akcelerator 3D W 1996 r. opracowana została specjalna karta rozszerzeń o nazwie marketingowej Voodoo, którą z racji wspomagania procesu generowania grafiki 3D

Bardziej szczegółowo

Instrukcja obsługi programu PowRek

Instrukcja obsługi programu PowRek Instrukcja obsługi programu PowRek środa, 21 grudnia 2011 Spis treści Przeznaczenie programu... 4 Prezentacja programu... 5 Okno główne programu... 5 Opis poszczególnych elementów ekranu... 5 Nowy projekt...

Bardziej szczegółowo

Spis treści. Dzień 1. I Wprowadzenie (wersja 0906) II Dostęp do danych bieżących specyfikacja OPC Data Access (wersja 0906) Kurs OPC S7

Spis treści. Dzień 1. I Wprowadzenie (wersja 0906) II Dostęp do danych bieżących specyfikacja OPC Data Access (wersja 0906) Kurs OPC S7 I Wprowadzenie (wersja 0906) Kurs OPC S7 Spis treści Dzień 1 I-3 O czym będziemy mówić? I-4 Typowe sytuacje I-5 Klasyczne podejście do komunikacji z urządzeniami automatyki I-6 Cechy podejścia dedykowanego

Bardziej szczegółowo

Specyfikacja implementacyjna aplikacji serwerowej

Specyfikacja implementacyjna aplikacji serwerowej Projekt: System wspomagania osób studiujących Strona: 1 / 7 Opracowali: Zatwierdzili: Spis treści Damian Głuchowski Krzysztof Krajewski Krzysztof Krajewski dr inż. Sławomir Skoneczny Spis treści... 1 1.

Bardziej szczegółowo

Julia 4D - raytracing

Julia 4D - raytracing i przykładowa implementacja w asemblerze Politechnika Śląska Instytut Informatyki 27 sierpnia 2009 A teraz... 1 Fraktale Julia Przykłady Wstęp teoretyczny Rendering za pomocą śledzenia promieni 2 Implementacja

Bardziej szczegółowo

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC Akademia MetaPack Uniwersytet Zielonogórski Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC Krzysztof Blacha Microsoft Certified Professional Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC Agenda:

Bardziej szczegółowo

Wykorzystanie standardów serii ISO 19100 oraz OGC dla potrzeb budowy infrastruktury danych przestrzennych

Wykorzystanie standardów serii ISO 19100 oraz OGC dla potrzeb budowy infrastruktury danych przestrzennych Wykorzystanie standardów serii ISO 19100 oraz OGC dla potrzeb budowy infrastruktury danych przestrzennych dr inż. Adam Iwaniak Infrastruktura Danych Przestrzennych w Polsce i Europie Seminarium, AR Wrocław

Bardziej szczegółowo

Część II Wyświetlanie obrazów

Część II Wyświetlanie obrazów Tło fragmentu ABA-X Display jest wyposażony w mechanizm automatycznego tworzenia tła fragmentu. Najprościej można to wykonać za pomocą skryptu tlo.sh: Składnia: tlo.sh numer oznacza numer

Bardziej szczegółowo

Voicer. SPIKON Aplikacja Voicer V100

Voicer. SPIKON Aplikacja Voicer V100 Voicer SPIKON Aplikacja Voicer V100 SPIKON Voicer Aplikacja Voicer w platformie SPIKON dedykowana jest przede wszystkim konsultantom kampanii wirtualnego Call Center. Dając łatwy dostęp do najważniejszych

Bardziej szczegółowo

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Instalacja SQL Server Express. Logowanie na stronie Microsoftu Instalacja SQL Server Express Logowanie na stronie Microsoftu Wybór wersji do pobrania Pobieranie startuje, przechodzimy do strony z poradami. Wypakowujemy pobrany plik. Otwiera się okno instalacji. Wybieramy

Bardziej szczegółowo

Tom 6 Opis oprogramowania

Tom 6 Opis oprogramowania Część 9 Narzędzie do wyliczania wskaźników statystycznych Diagnostyka Stanu Nawierzchni - DSN Generalna Dyrekcja Dróg Krajowych i Autostrad Warszawa, 31 maja 2012 Historia dokumentu Nazwa dokumentu Nazwa

Bardziej szczegółowo

Usługi analityczne budowa kostki analitycznej Część pierwsza.

Usługi analityczne budowa kostki analitycznej Część pierwsza. Usługi analityczne budowa kostki analitycznej Część pierwsza. Wprowadzenie W wielu dziedzinach działalności człowieka analiza zebranych danych jest jednym z najważniejszych mechanizmów podejmowania decyzji.

Bardziej szczegółowo

Jak przygotować pliki gotowe do publikacji w sieci za pomocą DigitLabu?

Jak przygotować pliki gotowe do publikacji w sieci za pomocą DigitLabu? Jak przygotować pliki gotowe do publikacji w sieci za pomocą DigitLabu? Po zainstalowaniu DigitLabu na komputerze otrzymujemy pakiet programów niezbędnych do przygotowania cyfrowych wersji obiektów tekstowych.

Bardziej szczegółowo

Sieciowe Technologie Mobilne. Laboratorium 4

Sieciowe Technologie Mobilne. Laboratorium 4 Sieciowe Technologie Mobilne Laboratorium 4 Tworzenie wieloplatformowych aplikacji mobilnych przy użyciu biblioteki PhoneGap. Łukasz Kamiński Laboratorium 4 Urozmaicone zostaną animacje potworów, aby odpowiadały

Bardziej szczegółowo

Tom 6 Opis oprogramowania Część 8 Narzędzie do kontroli danych elementarnych, danych wynikowych oraz kontroli obmiaru do celów fakturowania

Tom 6 Opis oprogramowania Część 8 Narzędzie do kontroli danych elementarnych, danych wynikowych oraz kontroli obmiaru do celów fakturowania Część 8 Narzędzie do kontroli danych elementarnych, danych wynikowych oraz kontroli Diagnostyka stanu nawierzchni - DSN Generalna Dyrekcja Dróg Krajowych i Autostrad Warszawa, 21 maja 2012 Historia dokumentu

Bardziej szczegółowo

Tworzenie prezentacji w MS PowerPoint

Tworzenie prezentacji w MS PowerPoint Tworzenie prezentacji w MS PowerPoint Program PowerPoint dostarczany jest w pakiecie Office i daje nam możliwość stworzenia prezentacji oraz uatrakcyjnienia materiału, który chcemy przedstawić. Prezentacje

Bardziej szczegółowo

Plan wynikowy klasa 3

Plan wynikowy klasa 3 Plan wynikowy klasa 3 Przedmiot: matematyka Klasa 3 liceum (technikum) Rok szkolny:........................ Nauczyciel:........................ zakres podstawowy: 28 tyg. 3 h = 84 h (78 h + 6 h do dyspozycji

Bardziej szczegółowo

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD Dr inż. Jacek WARCHULSKI Dr inż. Marcin WARCHULSKI Mgr inż. Witold BUŻANTOWICZ Wojskowa Akademia Techniczna SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD Streszczenie: W referacie przedstawiono możliwości

Bardziej szczegółowo

Procesowa specyfikacja systemów IT

Procesowa specyfikacja systemów IT Procesowa specyfikacja systemów IT BOC Group BOC Information Technologies Consulting Sp. z o.o. e-mail: boc@boc-pl.com Tel.: (+48 22) 628 00 15, 696 69 26 Fax: (+48 22) 621 66 88 BOC Management Office

Bardziej szczegółowo

Modelowanie diagramów klas w języku UML. Łukasz Gorzel 244631@stud.umk.pl 7 marca 2014

Modelowanie diagramów klas w języku UML. Łukasz Gorzel 244631@stud.umk.pl 7 marca 2014 Modelowanie diagramów klas w języku UML Łukasz Gorzel 244631@stud.umk.pl 7 marca 2014 Czym jest UML - Unified Modeling Language - Rodzina języków modelowania graficznego - Powstanie na przełomie lat 80

Bardziej szczegółowo

Wprowadzenie do projektu QualitySpy

Wprowadzenie do projektu QualitySpy Wprowadzenie do projektu QualitySpy Na podstawie instrukcji implementacji prostej funkcjonalności. 1. Wstęp Celem tego poradnika jest wprowadzić programistę do projektu QualitySpy. Będziemy implementować

Bardziej szczegółowo

Wymagania edukacyjne z matematyki w klasie III gimnazjum

Wymagania edukacyjne z matematyki w klasie III gimnazjum Wymagania edukacyjne z matematyki w klasie III gimnazjum - nie potrafi konstrukcyjnie podzielić odcinka - nie potrafi konstruować figur jednokładnych - nie zna pojęcia skali - nie rozpoznaje figur jednokładnych

Bardziej szczegółowo

Notacja Denavita-Hartenberga

Notacja Denavita-Hartenberga Notacja DenavitaHartenberga Materiały do ćwiczeń z Podstaw Robotyki Artur Gmerek Umiejętność rozwiązywania prostego zagadnienia kinematycznego jest najbardziej bazową umiejętność zakresu Robotyki. Wyznaczyć

Bardziej szczegółowo

Podstawy 3D Studio MAX

Podstawy 3D Studio MAX Podstawy 3D Studio MAX 7 grudnia 2001 roku 1 Charakterystyka programu 3D Studio MAX jest zintegrowanym środowiskiem modelowania i animacji obiektów trójwymiarowych. Doświadczonemu użytkownikowi pozwala

Bardziej szczegółowo

Wymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej.

Wymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej. Wymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej. Dział Zagadnienia Wymagania podstawowe Wymagania ponadpodstawowe Arkusz kalkulacyjny (Microsoft Excel i OpenOffice) Uruchomienie

Bardziej szczegółowo

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class

Bardziej szczegółowo

Modele symulacyjne PyroSim/FDS z wykorzystaniem rysunków CAD

Modele symulacyjne PyroSim/FDS z wykorzystaniem rysunków CAD Modele symulacyjne PyroSim/FDS z wykorzystaniem rysunków CAD Wstęp Obecnie praktycznie każdy z projektów budowlanych, jak i instalacyjnych, jest tworzony z wykorzystaniem rysunków wspomaganych komputerowo.

Bardziej szczegółowo

REFERAT O PRACY DYPLOMOWEJ

REFERAT O PRACY DYPLOMOWEJ REFERAT O PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja elektronicznego dziennika ocen ucznia Autor: Grzegorz Dudek wykonanego w technologii ASP.NET We współczesnym modelu edukacji, coraz powszechniejsze

Bardziej szczegółowo

Załącznik techniczny przedmiotu zamówienia komponentu

Załącznik techniczny przedmiotu zamówienia komponentu Załącznik nr 1 mapowego dla portalu WWW Załącznik techniczny przedmiotu zamówienia komponentu 1.1 Komponent mapowy Zleceniodawcy pozostawia się wolną rękę w wyborze technologii w jakiej zostanie stworzony

Bardziej szczegółowo

Grafika 2D. Animacja Zmiany Kształtu. opracowanie: Jacek Kęsik

Grafika 2D. Animacja Zmiany Kształtu. opracowanie: Jacek Kęsik Grafika 2D Animacja Zmiany Kształtu opracowanie: Jacek Kęsik Wykład przedstawia podstawy animacji zmiany kształtu - morfingu Animacja zmiany kształtu Podstawowe pojęcia Zlewanie (Dissolving / cross-dissolving)

Bardziej szczegółowo

ROZWIĄZYWANIE UKŁADÓW RÓWNAŃ NIELINIOWYCH PRZY POMOCY DODATKU SOLVER PROGRAMU MICROSOFT EXCEL. sin x2 (1)

ROZWIĄZYWANIE UKŁADÓW RÓWNAŃ NIELINIOWYCH PRZY POMOCY DODATKU SOLVER PROGRAMU MICROSOFT EXCEL. sin x2 (1) ROZWIĄZYWANIE UKŁADÓW RÓWNAŃ NIELINIOWYCH PRZY POMOCY DODATKU SOLVER PROGRAMU MICROSOFT EXCEL 1. Problem Rozważmy układ dwóch równań z dwiema niewiadomymi (x 1, x 2 ): 1 x1 sin x2 x2 cos x1 (1) Nie jest

Bardziej szczegółowo

Platforma e-learningowa

Platforma e-learningowa Platforma e-learningowa skrócona instrukcja obsługi. Aby uruchomić platformę e-learningową, należy otworzyć przeglądarkę internetową, a następnie wpisać adres http://aok.learnway.eu/ - wyświetlony zostanie

Bardziej szczegółowo

6. Organizacja dostępu do danych przestrzennych

6. Organizacja dostępu do danych przestrzennych 6. Organizacja dostępu do danych przestrzennych Duża liczba danych przestrzennych oraz ich specyficzny charakter sprawiają, że do sprawnego funkcjonowania systemu, przetwarzania zgromadzonych w nim danych,

Bardziej szczegółowo

Aplikacja projektu Program wycinki drzew i krzewów dla RZGW we Wrocławiu

Aplikacja projektu Program wycinki drzew i krzewów dla RZGW we Wrocławiu Aplikacja projektu Program wycinki drzew i krzewów dla RZGW we Wrocławiu Instrukcja obsługi Aplikacja wizualizuje obszar projektu tj. Dorzecze Środkowej Odry będące w administracji Regionalnego Zarządu

Bardziej szczegółowo

Dodatkowo planowane jest przeprowadzenie oceny algorytmów w praktycznym wykorzystaniu przez kilku niezależnych użytkowników ukończonej aplikacji.

Dodatkowo planowane jest przeprowadzenie oceny algorytmów w praktycznym wykorzystaniu przez kilku niezależnych użytkowników ukończonej aplikacji. Spis Treści 1. Wprowadzenie... 2 1.1 Wstęp... 2 1.2 Cel pracy... 2 1.3 Zakres pracy... 2 1.4 Użyte technologie... 2 1.4.1 Unity 3D... 3 2. Sztuczna inteligencja w grach komputerowych... 4 2.1 Zadanie sztucznej

Bardziej szczegółowo

Część I Rozpoczęcie pracy z usługami Reporting Services

Część I Rozpoczęcie pracy z usługami Reporting Services Spis treści Podziękowania... xi Wprowadzenie... xiii Część I Rozpoczęcie pracy z usługami Reporting Services 1 Wprowadzenie do usług Reporting Services... 3 Platforma raportowania... 3 Cykl życia raportu...

Bardziej szczegółowo

Tematy lekcji zajęć komputerowych klasa 5b grupa 1 i grupa 2

Tematy lekcji zajęć komputerowych klasa 5b grupa 1 i grupa 2 Tematy lekcji zajęć komputerowych klasa 5b grupa 1 i grupa 2 1 Program nauczania. Przedmiotowy system oceniania. Regulamin pracowni komputerowej. - 7 punktów regulaminu potrafi powiedzieć, czego się będzie

Bardziej szczegółowo

4 Web Forms i ASP.NET...149 Web Forms...150 Programowanie Web Forms...150 Możliwości Web Forms...151 Przetwarzanie Web Forms...152

4 Web Forms i ASP.NET...149 Web Forms...150 Programowanie Web Forms...150 Możliwości Web Forms...151 Przetwarzanie Web Forms...152 Wstęp...xv 1 Rozpoczynamy...1 Co to jest ASP.NET?...3 W jaki sposób ASP.NET pasuje do.net Framework...4 Co to jest.net Framework?...4 Czym są Active Server Pages (ASP)?...5 Ustawienia dla ASP.NET...7 Systemy

Bardziej szczegółowo

Aplikacje webowe wspomagające działalność przedsiębiorstwa na przykładzie przychodni stomatologicznej

Aplikacje webowe wspomagające działalność przedsiębiorstwa na przykładzie przychodni stomatologicznej Aplikacje webowe wspomagające działalność przedsiębiorstwa na przykładzie przychodni stomatologicznej Małgorzata Barańska Wydział Informatyki i Zarządzania, Politechnika Wrocławska Beata Laszkiewicz Wydział

Bardziej szczegółowo

Systemy wirtualnej rzeczywistości. Komponenty i serwisy

Systemy wirtualnej rzeczywistości. Komponenty i serwisy Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Systemy wirtualnej rzeczywistości Laboratorium Komponenty i serwisy Wstęp: W trzeciej części przedstawione zostaną podstawowe techniki

Bardziej szczegółowo

Jak rozpocząć pracę? Mapa

Jak rozpocząć pracę? Mapa Jak rozpocząć pracę? SWDE Manager jest aplikacją służącą do przeglądania graficznych i opisowych danych ewidencji gruntów i budynków zapisanych w formacie SWDE (.swd,.swg,.swde). Pracując w SWDE Managerze,

Bardziej szczegółowo

Rozdział ten zawiera informacje o sposobie konfiguracji i działania Modułu OPC.

Rozdział ten zawiera informacje o sposobie konfiguracji i działania Modułu OPC. 1 Moduł OPC Moduł OPC pozwala na komunikację z serwerami OPC pracującymi w oparciu o model DA (Data Access). Dzięki niemu można odczytać stan obiektów OPC (zmiennych zdefiniowanych w programie PLC), a

Bardziej szczegółowo

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa SCENARIUSZ LEKCJI OPRACOWANY W RAMACH PROJEKTU: INFORMATYKA MÓJ SPOSÓB NA POZNANIE I OPISANIE ŚWIATA. PROGRAM NAUCZANIA INFORMATYKI Z ELEMENTAMI PRZEDMIOTÓW MATEMATYCZNO-PRZYRODNICZYCH Autorzy scenariusza:

Bardziej szczegółowo

Sieciowe Technologie Mobilne. Laboratorium 2

Sieciowe Technologie Mobilne. Laboratorium 2 Sieciowe Technologie Mobilne Laboratorium 2 Tworzenie wieloplatformowych aplikacji mobilnych przy użyciu biblioteki PhoneGap. Łukasz Kamiński Laboratorium 2 Na dzisiejszym laboratorium skupimy się na implementacji

Bardziej szczegółowo

Instrukcja wczytywania i przekazywania zbiorów centralnych w Centralnej Aplikacji Statystycznej (CAS) przez użytkowników podobszaru PS

Instrukcja wczytywania i przekazywania zbiorów centralnych w Centralnej Aplikacji Statystycznej (CAS) przez użytkowników podobszaru PS Instrukcja wczytywania i przekazywania zbiorów centralnych w Centralnej Aplikacji Statystycznej (CAS) przez użytkowników podobszaru PS Uwaga! Opisane w niniejszej instrukcji funkcje Centralnej Aplikacji

Bardziej szczegółowo

Instrukcja obsługi Zaplecza epk w zakresie zarządzania tłumaczeniami opisów procedur, publikacji oraz poradników przedsiębiorcy

Instrukcja obsługi Zaplecza epk w zakresie zarządzania tłumaczeniami opisów procedur, publikacji oraz poradników przedsiębiorcy Instrukcja obsługi Zaplecza epk w zakresie zarządzania tłumaczeniami opisów procedur, publikacji oraz poradników przedsiębiorcy Spis treści: 1 WSTĘP... 3 2 DOSTĘP DO SYSTEMU... 3 3 OPIS OGÓLNY SEKCJI TŁUMACZENIA...

Bardziej szczegółowo

Wymagania edukacyjne na ocenę z informatyki KLASA III

Wymagania edukacyjne na ocenę z informatyki KLASA III Wymagania edukacyjne na ocenę z informatyki KLASA III 0. Logo [6 godz.] PODSTAWA PROGRAMOWA: Rozwiązywanie problemów i podejmowanie decyzji z wykorzystaniem komputera, stosowanie podejścia algorytmicznego.

Bardziej szczegółowo

Wszystko na temat wzoru dokumentu elektronicznego

Wszystko na temat wzoru dokumentu elektronicznego Stowarzyszenie PEMI Wszystko na temat wzoru dokumentu elektronicznego Czym jest, kto go tworzy, kto publikuje, kto może z niego skorzystać? Mirosław Januszewski, Tomasz Rakoczy, Andrzej Matejko 2007-07-25

Bardziej szczegółowo

Zacznijmy więc pracę z repozytorium. Pierwsza konieczna rzecz do rozpoczęcia pracy z repozytorium, to zalogowanie się w serwisie:

Zacznijmy więc pracę z repozytorium. Pierwsza konieczna rzecz do rozpoczęcia pracy z repozytorium, to zalogowanie się w serwisie: Repozytorium służy do przechowywania plików powstających przy pracy nad projektami we w miarę usystematyzowany sposób. Sam mechanizm repozytorium jest zbliżony do działania systemu plików, czyli składa

Bardziej szczegółowo

z dnia... 2015 r. w sprawie bazy danych obiektów topograficznych oraz mapy zasadniczej

z dnia... 2015 r. w sprawie bazy danych obiektów topograficznych oraz mapy zasadniczej ROZPORZĄDZENIE Projekt z dnia 18.06.15 r. MINISTRA ADMINISTRACJI I CYFRYZACJI 1) z dnia... 2015 r. w sprawie bazy danych obiektów topograficznych oraz mapy zasadniczej Na podstawie art. 19 ust. 1 pkt 7

Bardziej szczegółowo

Podstawy grafiki komputerowej

Podstawy grafiki komputerowej Podstawy grafiki komputerowej Krzysztof Gracki K.Gracki@ii.pw.edu.pl tel. (22) 6605031 Instytut Informatyki Politechniki Warszawskiej 2 Sprawy organizacyjne Krzysztof Gracki k.gracki@ii.pw.edu.pl tel.

Bardziej szczegółowo

9. Podstawowe narzędzia matematyczne analiz przestrzennych

9. Podstawowe narzędzia matematyczne analiz przestrzennych Waldemar Izdebski - Wykłady z przedmiotu SIT 75 9. odstawowe narzędzia matematyczne analiz przestrzennych Niniejszy rozdział służy ogólnemu przedstawieniu metod matematycznych wykorzystywanych w zagadnieniu

Bardziej szczegółowo

Notowania Mobilne wersja BlackBerry. Instrukcja obsługi programu

Notowania Mobilne wersja BlackBerry. Instrukcja obsługi programu Notowania Mobilne wersja BlackBerry Instrukcja obsługi programu Notowania Mobilne to aplikacja, która pozwala na dostęp do notowań giełdowych w czasie rzeczywistym z każdego miejsca na świecie, gdzie tylko

Bardziej szczegółowo

UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI

UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI LABORATORIUM TECHNOLOGIA SYSTEMÓW INFORMATYCZNYCH W BIOTECHNOLOGII Aplikacja bazodanowa: Cz. II Rzeszów, 2010 Strona 1 z 11 APLIKACJA BAZODANOWA MICROSOFT ACCESS

Bardziej szczegółowo

SCENARIUSZ LEKCJI. TEMAT LEKCJI: Zastosowanie średnich w statystyce i matematyce. Podstawowe pojęcia statystyczne. Streszczenie.

SCENARIUSZ LEKCJI. TEMAT LEKCJI: Zastosowanie średnich w statystyce i matematyce. Podstawowe pojęcia statystyczne. Streszczenie. SCENARIUSZ LEKCJI OPRACOWANY W RAMACH PROJEKTU: INFORMATYKA MÓJ SPOSÓB NA POZNANIE I OPISANIE ŚWIATA. PROGRAM NAUCZANIA INFORMATYKI Z ELEMENTAMI PRZEDMIOTÓW MATEMATYCZNO-PRZYRODNICZYCH Autorzy scenariusza:

Bardziej szczegółowo

PL 198457 B1. ABB Sp. z o.o.,warszawa,pl 17.12.2001 BUP 26/01. Michał Orkisz,Kraków,PL Mirosław Bistroń,Jarosław,PL 30.06.

PL 198457 B1. ABB Sp. z o.o.,warszawa,pl 17.12.2001 BUP 26/01. Michał Orkisz,Kraków,PL Mirosław Bistroń,Jarosław,PL 30.06. RZECZPOSPOLITA POLSKA (12) OPIS PATENTOWY (19) PL (11) 198457 (13) B1 (21) Numer zgłoszenia: 340813 (51) Int.Cl. G06F 17/21 (2006.01) G06Q 10/00 (2006.01) Urząd Patentowy Rzeczypospolitej Polskiej (22)

Bardziej szczegółowo

System zarządzający grami programistycznymi Meridius

System zarządzający grami programistycznymi Meridius System zarządzający grami programistycznymi Meridius Instytut Informatyki, Uniwersytet Wrocławski 20 września 2011 Promotor: prof. Krzysztof Loryś Gry komputerowe a programistyczne Gry komputerowe Z punktu

Bardziej szczegółowo

Przewodnik Szybki start

Przewodnik Szybki start Przewodnik Szybki start Program Microsoft Access 2013 wygląda inaczej niż wcześniejsze wersje, dlatego przygotowaliśmy ten przewodnik, aby skrócić czas nauki jego obsługi. Zmienianie rozmiaru ekranu lub

Bardziej szczegółowo

Wymagania edukacyjne z matematyki dla klasy II gimnazjum wg programu Matematyka z plusem

Wymagania edukacyjne z matematyki dla klasy II gimnazjum wg programu Matematyka z plusem Wymagania edukacyjne z matematyki dla klasy II gimnazjum wg programu Matematyka z plusem pojęcie potęgi o wykładniku naturalnym wzór na mnożenie i dzielenie potęg o tych samych podstawach wzór na potęgowanie

Bardziej szczegółowo

System zarządzania firmą specyfikacja techniczna.

System zarządzania firmą specyfikacja techniczna. System zarządzania firmą specyfikacja techniczna. 1. Zakres funkcjonalności Funkcjonalność aplikacji została podzielona na 3 grupy: Zbiór podstawowych danych dane kontrahentów, typy dokumentów, magazynów,

Bardziej szczegółowo

Korzystanie z aplikacji P-touch Transfer Manager

Korzystanie z aplikacji P-touch Transfer Manager Korzystanie z aplikacji P-touch Transfer Manager Wersja 0 POL Wprowadzenie Ważna uwaga Treść niniejszego dokumentu i dane techniczne produktu mogą ulegać zmianom bez powiadomienia. Firma Brother zastrzega

Bardziej szczegółowo

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka 1. Kompilacja aplikacji konsolowych w środowisku programistycznym Microsoft Visual Basic. Odszukaj w menu startowym systemu

Bardziej szczegółowo

Kurs walut. Specyfikacja projektu. Marek Zając 2013-12-16

Kurs walut. Specyfikacja projektu. Marek Zając 2013-12-16 Kurs walut Specyfikacja projektu Marek Zając 2013-12-16 Spis treści 1. Podsumowanie... 2 1.1 Wstęp... 2 1.2 Projekt interfejsu... 2 1.2.1 Rozmiar głównego okna... 2 2. Słownik pojęć... 2 2.1 Definicja

Bardziej szczegółowo

Podręcznik użytkownika Publikujący aplikacji Wykaz2

Podręcznik użytkownika Publikujący aplikacji Wykaz2 Podręcznik użytkownika Publikujący aplikacji Wykaz2 TiMSI Sp z o o ul Czapli 63, 02-781 Warszawa tel : +48 22 644 86 76, fax: +48 22 644 78 52 NIP: 951-19-39-800 Sąd Rejonowy dla mst Warszawy w Warszawie,

Bardziej szczegółowo

Spis treści. 1 Moduł Mapy 2

Spis treści. 1 Moduł Mapy 2 Spis treści 1 Moduł Mapy 2 1.1 Elementy planu............................. 2 1.1.1 Interfejs widoku......................... 3 1.1.1.1 Panel sterujacy.................... 3 1.1.1.2 Suwak regulujacy przybliżenie...........

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.

Bardziej szczegółowo

Laboratorium grafiki komputerowej i animacji. Ćwiczenie V - Biblioteka OpenGL - oświetlenie sceny

Laboratorium grafiki komputerowej i animacji. Ćwiczenie V - Biblioteka OpenGL - oświetlenie sceny Laboratorium grafiki komputerowej i animacji Ćwiczenie V - Biblioteka OpenGL - oświetlenie sceny Przygotowanie do ćwiczenia: 1. Zapoznać się ze zdefiniowanymi w OpenGL modelami światła i właściwości materiałów.

Bardziej szczegółowo

Maskowanie i selekcja

Maskowanie i selekcja Maskowanie i selekcja Maska prostokątna Grafika bitmapowa - Corel PHOTO-PAINT Pozwala definiować prostokątne obszary edytowalne. Kiedy chcemy wykonać operacje nie na całym obrazku, lecz na jego części,

Bardziej szczegółowo

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE WINDOWS 1 SO i SK/WIN 006 Wydajność systemu 2 SO i SK/WIN Najprostszym sposobem na poprawienie wydajności systemu, jeżeli dysponujemy zbyt małą ilością pamięci RAM

Bardziej szczegółowo

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl Narzędzia i aplikacje Java EE Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl Niniejsze opracowanie wprowadza w technologię usług sieciowych i implementację usługi na platformie Java EE (JAX-WS) z

Bardziej szczegółowo

WYMAGANIA EDUKACYJN KRYTERIA OCENY Z MATEMATYKI W KLASIE II GIMNAZJUM

WYMAGANIA EDUKACYJN KRYTERIA OCENY Z MATEMATYKI W KLASIE II GIMNAZJUM Na ocenę dopuszczającą uczeń umie : WYMAGANIA EDUKACYJN KRYTERIA OCENY Z MATEMATYKI W KLASIE II GIMNAZJUM stosować cztery podstawowe działania na liczbach wymiernych, zna kolejność wykonywania działań

Bardziej szczegółowo

Katalog wymagań programowych na poszczególne stopnie szkolne. Matematyka. Poznać, zrozumieć

Katalog wymagań programowych na poszczególne stopnie szkolne. Matematyka. Poznać, zrozumieć Katalog wymagań programowych na poszczególne stopnie szkolne Matematyka. Poznać, zrozumieć Kształcenie w zakresie podstawowym. Klasa 3 Poniżej podajemy umiejętności, jakie powinien zdobyć uczeń z każdego

Bardziej szczegółowo

Aplikacje WWW. Laboratorium z przedmiotu Aplikacje WWW - zestaw 01

Aplikacje WWW. Laboratorium z przedmiotu Aplikacje WWW - zestaw 01 Laboratorium z przedmiotu Aplikacje WWW - zestaw 01 Cel zajęć. Celem zajęć jest zapoznanie z technologią ASP.NET Web Forms. Wprowadzenie teoretyczne. 1. Komunikacja klient-serwer poprzez połączenie internetowe

Bardziej szczegółowo

WYMAGANIE EDUKACYJNE Z MATEMATYKI W KLASIE II GIMNAZJUM. dopuszczającą dostateczną dobrą bardzo dobrą celującą

WYMAGANIE EDUKACYJNE Z MATEMATYKI W KLASIE II GIMNAZJUM. dopuszczającą dostateczną dobrą bardzo dobrą celującą 1. Statystyka odczytać informacje z tabeli odczytać informacje z diagramu 2. Mnożenie i dzielenie potęg o tych samych podstawach 3. Mnożenie i dzielenie potęg o tych samych wykładnikach 4. Potęga o wykładniku

Bardziej szczegółowo

CENTRUM PROJEKTÓW INFORMATYCZNYCH MINISTERSTWA SPRAW WEWNĘTRZNYCH I ADMINISTRACJI

CENTRUM PROJEKTÓW INFORMATYCZNYCH MINISTERSTWA SPRAW WEWNĘTRZNYCH I ADMINISTRACJI CENTRUM PROJEKTÓW INFORMATYCZNYCH MINISTERSTWA SPRAW WEWNĘTRZNYCH I ADMINISTRACJI Instrukcja użytkownika Narzędzie do modelowania procesów BPEL Warszawa, lipiec 2009 r. UNIA EUROPEJSKA EUROPEJSKI FUNDUSZ

Bardziej szczegółowo

DesignCAD 3D Max 24.0 PL

DesignCAD 3D Max 24.0 PL DesignCAD 3D Max 24.0 PL Październik 2014 DesignCAD 3D Max 24.0 PL zawiera następujące ulepszenia i poprawki: Nowe funkcje: Tryb RedSDK jest teraz dostępny w widoku 3D i jest w pełni obsługiwany przez

Bardziej szczegółowo

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller Dokumentacja systemu NTP rekrut Autor: Sławomir Miller 1 Spis treści: 1. Wstęp 1.1 Wprowadzenie 1.2 Zakres dokumentu 2. Instalacja 2.1 Wymagania systemowe 2.2 Początek 2.3 Prawa dostępu 2.4 Etapy instalacji

Bardziej szczegółowo

Kurs logiki rozmytej - pomoc. Wojciech Szybisty

Kurs logiki rozmytej - pomoc. Wojciech Szybisty Kurs logiki rozmytej - pomoc Wojciech Szybisty 2009 Spis treści 1 Wymagania 3 2 Zawartość strony internetowej 3 3 Obsługa apletów 6 3.1 Aplet Rodzaje funkcji przynależności...................... 6 3.2

Bardziej szczegółowo

Notowania Mobilne wersja Java

Notowania Mobilne wersja Java Notowania Mobilne wersja Java Instrukcja obsługi programu Notowania Mobilne to aplikacja, która pozwala na dostęp do notowań giełdowych w czasie rzeczywistym z każdego miejsca na świecie, gdzie tylko możliwe

Bardziej szczegółowo

Wprowadzenie do rysowania w 3D. Praca w środowisku 3D

Wprowadzenie do rysowania w 3D. Praca w środowisku 3D Wprowadzenie do rysowania w 3D 13 Praca w środowisku 3D Pierwszym krokiem niezbędnym do rozpoczęcia pracy w środowisku 3D programu AutoCad 2010 jest wybór odpowiedniego obszaru roboczego. Można tego dokonać

Bardziej szczegółowo

Forex PitCalculator INSTRUKCJA UŻYTKOWNIKA

Forex PitCalculator INSTRUKCJA UŻYTKOWNIKA Forex PitCalculator Forex PitCalculator jest aplikacją służącą do obliczania podatku należnego z tytułu osiągniętych na rynku walutowym zysków. Jest to pierwsze tego typu oprogramowanie na polskim rynku.

Bardziej szczegółowo

Inventor 2016 co nowego?

Inventor 2016 co nowego? Inventor 2016 co nowego? OGÓLNE 1. Udoskonalenia wizualizacji, grafiki i programu Studio Nowa obsługa oświetlenia opartego na obrazie (IBL, Image Based Lighting) Wszystkie style oświetlenia w programie

Bardziej szczegółowo

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu. Technologie cyfrowe Artur Kalinowski Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.pl Semestr letni 2014/2015 Usługi internetowe usługa internetowa (ang.

Bardziej szczegółowo

Serwis jest dostępny w internecie pod adresem www.solidnyserwis.pl. Rysunek 1: Strona startowa solidnego serwisu

Serwis jest dostępny w internecie pod adresem www.solidnyserwis.pl. Rysunek 1: Strona startowa solidnego serwisu Spis treści 1. Zgłoszenia serwisowe wstęp... 2 2. Obsługa konta w solidnym serwisie... 2 Rejestracja w serwisie...3 Logowanie się do serwisu...4 Zmiana danych...5 3. Zakładanie i podgląd zgłoszenia...

Bardziej szczegółowo

WYMAGANIA EDUKACYJNE Z ZAJĘĆ KOMPUTEROWYCH DLA KLASY SZÓSTEJ W ZAKRESIE WIADOMOŚCI I UMIEJĘTNOŚCI UCZNIÓW

WYMAGANIA EDUKACYJNE Z ZAJĘĆ KOMPUTEROWYCH DLA KLASY SZÓSTEJ W ZAKRESIE WIADOMOŚCI I UMIEJĘTNOŚCI UCZNIÓW EDUKACYJNE Z ZAJĘĆ KOMPUTEROWYCH DLA KLASY SZÓSTEJ W ZAKRESIE I UCZNIÓW Ocena celujący bardzo dobry dobry dostateczny dopuszczający Zakres wiadomości wykraczający dopełniający rozszerzający podstawowy

Bardziej szczegółowo

OpenOfficePL. Zestaw szablonów magazynowych. Instrukcja obsługi

OpenOfficePL. Zestaw szablonów magazynowych. Instrukcja obsługi OpenOfficePL Zestaw szablonów magazynowych Instrukcja obsługi Spis treści : 1. Informacje ogólne 2. Instalacja zestawu a) konfiguracja połączenia z bazą danych b) import danych z poprzedniej wersji faktur

Bardziej szczegółowo

Definicja bazy danych TECHNOLOGIE BAZ DANYCH. System zarządzania bazą danych (SZBD) Oczekiwania wobec SZBD. Oczekiwania wobec SZBD c.d.

Definicja bazy danych TECHNOLOGIE BAZ DANYCH. System zarządzania bazą danych (SZBD) Oczekiwania wobec SZBD. Oczekiwania wobec SZBD c.d. TECHNOLOGIE BAZ DANYCH WYKŁAD 1 Wprowadzenie do baz danych. Normalizacja. (Wybrane materiały) Dr inż. E. Busłowska Definicja bazy danych Uporządkowany zbiór informacji, posiadający własną strukturę i wartość.

Bardziej szczegółowo

Międzyplatformowy interfejs systemu FOLANessus wykonany przy użyciu biblioteki Qt4

Międzyplatformowy interfejs systemu FOLANessus wykonany przy użyciu biblioteki Qt4 Uniwersytet Mikołaja Kopernika w Toruniu Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej Agnieszka Holka Nr albumu: 187396 Praca magisterska na kierunku Informatyka

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

Spis treści. Konwencje zastosowane w książce...5. Dodawanie stylów do dokumentów HTML oraz XHTML...6. Struktura reguł...9. Pierwszeństwo stylów...

Spis treści. Konwencje zastosowane w książce...5. Dodawanie stylów do dokumentów HTML oraz XHTML...6. Struktura reguł...9. Pierwszeństwo stylów... Spis treści Konwencje zastosowane w książce...5 Dodawanie stylów do dokumentów HTML oraz XHTML...6 Struktura reguł...9 Pierwszeństwo stylów... 10 Klasyfikacja elementów... 13 Sposoby wyświetlania elementów...

Bardziej szczegółowo

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS UNIWERSYTET ZIELONOGÓRSKI INSTYTUT INFORMATYKI I ELEKTROTECHNIKI ZAKŁAD INŻYNIERII KOMPUTEROWEJ Przygotowali: mgr inż. Arkadiusz Bukowiec mgr inż. Remigiusz Wiśniewski LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

Bardziej szczegółowo