Siatka (grafika 3D)

Przykładowy obiekt opisywany siatką wielokątów

Siatka, siatka wielokątów – dwa lub więcej wielokątów połączonych ze sobą krawędziami. Zwykle takie siatki tworzone są z najprostszych figur geometrycznych jak trójkąty czy czworokąty wypukłe.

W ten sposób można opisywać proste bryły, albo – jeśli siatka jest dostatecznie gęsta – dobrze przybliżać skomplikowane obiekty. Obiekty trójwymiarowe reprezentowane przez siatkę wielokątów pozwalają w łatwy sposób na ich poddawanie różnym modyfikacjom i deformacjom.

Reprezentacje siatek[edytuj | edytuj kod]

Siatka może być reprezentowana na kilka sposobów:

  • Tablica wielokątów — każdy wielokąt przechowuje współrzędne swoich wierzchołków.
  • Tablica wielokątów ze wskaźnikami na wierzchołki — obiekt jest reprezentowany przez dwie tablice: wielokątów i wierzchołków. Każdy wielokąt przechowuje listę indeksów do tablicy wierzchołków, natomiast tablica wierzchołków zawiera współrzędne. Dzięki temu można łatwo stwierdzić, które wielokąty mają wspólne wierzchołki, także przekształcenia obiektu są szybsze, ponieważ wspólne wierzchołki są przekształcane tylko jeden raz. Reprezentacja ta pozwala na znaczne oszczędzenie pamięci wymaganej do zapamiętania siatki, ponieważ najczęściej jeden wierzchołek jest wspólny dla wielu wielokątów.
  • Tablica wielokątów ze wskaźnikami na krawędzie — obiekt jest reprezentowany przez trzy tablice: wielokątów, krawędzi i wierzchołków. Każdy wielokąt przechowuje listę indeksów do tablicy krawędzi, natomiast każda krawędź przechowuje parę indeksów do tablicy wierzchołków. Dzięki temu można łatwo stwierdzić, które krawędzie są wspólne dla wierzchołków, ma to istotne znaczenie w dwóch przypadkach: modelowaniu CSG oraz symulacjach fizycznych. W obu zastosowaniach należy zagwarantować, że siatka wielokątów reprezentuje bryłę (zamyka pewną objętość), aby stwierdzenia punkt leży wewnątrz/na zewnątrz bryły miały sens. Mając listę krawędzi można to bardzo łatwo stwierdzić, jeśli bowiem każda krawędź należy do dokładnie dwóch wielokątów, to siatka jest bryłą. Jeśli istnieją krawędzie należące do pojedynczych wielokątów, wówczas w powierzchni bryły jest „dziura” i istnieją algorytmy, które potrafią takie „dziury” wypełnić. Jeśli natomiast jakaś krawędź należy do więcej niż dwóch wielokątów, wówczas siatka nie może reprezentować bryły.

Istnieją również rozwiązania hybrydowe, np. w których ze względu na efektywność wielokąty zawierają listę indeksów do tablicy krawędzi oraz listę indeksów do tablicy wierzchołków.

Zobacz też[edytuj | edytuj kod]