170 likes | 385 Vues
VisNow – struktury danych. Krzysztof S. Nowiński visnow@icm.edu.pl. Dane. Wizualizacja danych a wizualizacja informacji Dane: Struktura zadana a priori Geometria zwykle w przestrzeni fizykalnej Wartości głównie liczbowe Informacja Strukturę dopiero tworzymy
E N D
VisNow – struktury danych • Krzysztof S. Nowiński • visnow@icm.edu.pl
Dane Wizualizacja danych a wizualizacja informacji • Dane: • Struktura zadana a priori • Geometria zwykle w przestrzeni fizykalnej • Wartości głównie liczbowe • Informacja • Strukturę dopiero tworzymy • Geometria dopiero do ustalenia • Wartości często tekstowe lub obiektowe
Dane – geometria i struktura • Geometria: • Współrzędnepunktów w przestrzeni n-wymiarowej (n=1,2,3,4,...) • Zadane w sposóbnaturalnylubobliczone ne podstawiestrukturyczywartości • Podaneexplicitelubłatwe do wyliczenia w miarępotrzeby • Struktura • Określalogicznepowiązaniamiędzypunktami • Zazwyczajokreślazakresmożliwejinterpolacji • Zależna od problemu: • Miasta w Polsce – • Punkty (demografia) • Węzły grafu (komunikacja) • Wierzchołki triangulacji (obserwacje meteo)
Dane -Struktura • Logikapowiązań • Przykłady: • Wiązaniawyznaczającestrukturęcząsteczki • Połączenialotnicze • Połączeniatelekomunikacyjne • PołączenialogiczneodsyłaczyWWW • Interpolacja • Jeżeliskończonyzbiórdanych jest wynikiemeksperymentalnegolubnumerycznegopróbkowania continuum • Możemyinterpolowaćwedługregułwyznaczonychprzezstrukturę • Struktura regularna – tablica 1- 2- lub 3-wymiarowa • Struktura nieregularna – powiązania opisywane explicite
Struktura • Opisformalny - komórki • Zerowymiarowa • punkt • Jednowymiarowa • odcinek • Dwuwymiarowe • trójkąt, czworokąt • Trójwymiarowe • czworościan, piramida, pryzmat (graniastosłuptrójkątny), sześciościan • Zadanelistąwierzchołków 0 1 2 3 4 7 6 5
Siatka - struktura+geometria • Siatkaregularnarównoległościenna • Strukturatablicy 1- 2- lub 3-wymiarowej (komórkisąodpowiednioodcinkami, czworokątamilubsześciościanami) • Opisstruktury: • {intndim; int dims[ndim]} • Geometria: siatkazłożona z odcinków, równoległoboków lub równoległościanów • Opisgeometrii: • {intnspace; float affine[4][nspace]} • affine[3] – początek układu • affine[0], affine[1],… - wektory krawędzi komórki • Współrzędneilistakomórekniemusząbyćpamiętane
Siatka - struktura+geometria • Siatkaregularnaze współrzędnymi • Strukturatablicy 1- 2- lub 3-wymiarowej (komórkisąodpowiednioodcinkami, czworokątamilubsześciościanami) • Opisstruktury: • {intndim; int dims[ndim]} • Geometria: punktyumieszczonedowolnie w przestrzeni • Opisgeometrii: • {intnspace; float coords[N * nspace]} • (nspace≥ndims, N – liczbapunktów (iloczynwymiarówsiatki) • Listakomórekniemusibyćpamiętana
Struktura • Siatkanieregularna • Wektor zbiorów komórek (CellSet) • CellSet: • Tablica cellArrays[8][] • cellArrays[i] – tablica węzłów komórek typu i, np. cellArrays[2] ma długość 3*nTriangles • Automatycznie tworzone boundaryCellArrays[4][] • Listykomórekmusząbyćpamiętane • Geometria: punktyumieszczonedowolnie w przestrzeni • Opisgeometrii: • {intnspace; float coords[N * nspace]} • (nspace≥ndims, N – liczbapunktów (iloczynwymiarówsiatki) 0 1 2 3 4 7 6 5
Pole:siatka + wartości • Wartości są przechowywane w strukturach (klasach) pochodnych odDataArray • DataArray: • name – nazwa używana przy wyborze komponenty • type – typ danych w tablicy - od DataArray.BOOLEAN do DataArray.DOUBLEi DataArray.STRING • veclen – 1 gdy dane skalarne, >1 gdy wektorowe • nData– liczba elementów danych • Dane w tablicy o długości veclen * nData • Mogą być określone (typowo) dla punktów (node data) lub dla komórek w przypadku siatek nieregularnych (cell data) – każdy CellSet może mieć własny zestaw danych
Pole:siatka + wartości • Pole może zawierać dowolną liczbę danych dowolnych typów, skalarnych lub wektorowych • Dodatkowo, pole może zawierać maskę – tablicę danych typu booleanwskazującą, które punkty zawierają dane istotne – przykładowo, model falowania Bałtyku jest liczony na siatce prostokątnej, należy więc użyć maski równej falsedla punktów wewnątrz lądu. • Wszystkie tablice danych, współrzędne i maska mogą zależeć od czasu: • Timestep(krok czasowy) to para {floattime, <type>[] data} • Dla zadanego momentu t dostępna jest interpolacja kawałkami liniowa na chwilę t • Różne tablice danych mogą mieć różne szeregi chwil i odpowiadających im danych
Klasy danych i ich API • Field – klasa abstrakcyjna • Nazwa (String name) • Liczba punktów (intnNodes) • Wymiar przestrzeni (intnSpace) – zwykle 3 • Współrzędne (float[] coords) Płaska tablica {(x,y,z)0, (x,y,z)1,…} – może być null dla pola regularnego • Opcjonalna maska (boolean[] mask) • Wektor obiektów wartości (Vector<DataArray> data) • Rozmiary (float[][] extents) Zakres i-tej współrzędnej od extents[0][i] do extents[1][i] ustalany automatycznie (z możliwością nadpisania) • Podklasy • RegularField • IrregularField
Podklasy Field • RegularField – siatka regularna • Wymiary (int[] dims) nNodes= dims[0]*dims[1]… ustawiane automatycznie nSpace ≥dims.length • Punkt początkowy i wektory komórki elementarnej (float[][] affine): affine[3] – punkt początkowy odp. Indeksom 0 affine[0], affine[1], affine[2] – wektory komórki • Opcjonalnie współrzędne (float[] coords) Kolejność punktów jak pikseli w obrazie MxN (N wierszy po M znaków zapisywanych wierszami Reguła obowiązuje we wszystkich obiektach danych
Podklasy Field • IrregularField– siatka nieregularna • Współrzędne (float[] coords) - obowiązkowe • Zbiory komórek (ArrayList<CellSets> cellSets) • CellSet • Liczba komórek (intnCells) – generowana automatycznie • Liczba wartości danych (intnDataValues) liczba elementów tablic CellData – może być różna od nCells • Tablice komórek (CellArray[] cellArrays) – 8 tablic opisujących komórki różnych typów (point, segment, triangle, quad, tetra, pyramid, prism, hex) • Tablice komórek brzegowych (CellArray[] boundaryCellArrays) – generowane półautomatycznie tablice ścian komórek trójwymiarowych • Wektor obiektów wartości (ArrayList<DataArray> data)
Tablice wartości • Abstrakcyjna klasa DataArray • Nazwa (String name) • Jednostka fizyczna (String unit) – używana w opisie osi, legendy barw etc. • Typ danych (int type)– jedna ze stałych DataArray.FIELD_DATA_BYTE … _DOUBLE • Długość wektora (intveclen) – rozmiar pojedynczego elementu danych – domyślnie 1 (dane skalarne) • Minimumdanych (float minv) używane do ustalenia zakresu suwaków, mapy kolorów etc., zwykle ustawiane na rzeczywiste minimum.; dla danych wektorowych ustawiane na 0 • Maksimum danych (float maxv) – jak wyżej • Liczba danych (intnData) • Podklasy <Type>DataArray • Tablica danych (<type>[] data)
Field API Klonowanie: cloneBase() – tylko wymiary, geometria i maska – przez referencje clone() – jw. + DataArrays cloneDeep()– jak clone, ale poszczególne pola są klonowane Standardowe akcesory do pól (nie ma setNNodes) Akcesory do tablic danych: getData() setData(ArrayList<DataArray> data) clearData() getData(String s) getData(int i) addData(DataArraydataArray)
RegularField API Konstruktory: RegularField(int[] dims) RegularField(int[] dims, float[][] pts) Klonowanie: cloneBase() – tylko wymiary, geometria i maska – przez referencje clone() – jw. + DataArrays CloneDeep()– jak clone, ale poszczególne pola są klonowane Standardowe akcesory do pól (nie ma setDims) Dodatkowo: getInvAffine() getCoordsFromAffine() - niezalecane
Dziękuję za uwagę! • visnow@icm.edu.pl