REKLAMA

Matematyka grafiki 2D i 3D

Podczas programistycznej zabawy z grafiką 2D i 3D – szczególnie akcelerowanej przy użyciu karty graficznej – prędzej czy później każdy zderza się z zagadnieniem, które wielu spędza sen z powiek: z matematyką. Napisanie shadera jest praktycznie niemożliwe bez pewnej podstawowej wiedzy dotyczącej wektorów i macierzy, zaimplementowanie prostego algorytmu naprowadzania rakiety w przestrzeni dwuwymiarowej wymaga przynajmniej minimalnej wiedzy z zakresu trygonometrii, a zrealizowanie detekcji kolizji pociągnie za sobą konieczność skorzystania z garści twierdzeń z zakresu geometrii przestrzennej...

Gdy ostatnio prowadziłem warsztat z podstaw programowania gier w Unity i wspomniałem, że w tym procesie praktycznie nie da się obejść bez pewnej podstawowej wiedzy z zakresu arytmetyki wektorów, usłyszałem od części uczestników jęk zawodu. Zdecydowałem się, więc napisać artykuł poświęcony pewnym aspektom geometrii dwu- i trójwymiarowej, swoiste kompendium, do którego będzie można zajrzeć w przypadku takich czy innych matematycznych problemów...

Zagadnienia poruszane w tym artykule:

  • Funkcja kwadratowa;
  • Modelowanie funkcji;
  • Trygonometria;
  • Budowanie odcinków;
  • Obliczanie kąta;
  • Wektory i macierze;
  • Operacje na wektorach;
  • Wektor prostopadły;
  • Iloczyny wektorów;
  • Macierz;
  • Wyznacznik macierzy;
  • Układy równań liniowych;
  • Miejsce trafienia promienia w płaszczyznę;
  • Przekształcenia przestrzeni dwuwymiarowej;
  • Identyczność;
  • Skala;
  • Obrót;
  • Przekształcenia przestrzeni trójwymiarowej;
  • Składanie przekształceń;
  • A po co mi to?
  • Skrzynka z narzędziami;
  • Naprowadzanie rakiet.

Artykuł znajduje się w miesięczniku "Programista" nr 71 (4/2018). Jest to wydanie z przełomu maja i czerwca 2018 r. Szczegółowy spis treści: https://programistamag.pl/programista-4-2018-71/

Autorem artykułu jest Wojciech Sura. Programuje od przeszło dziesięciu lat w Delphi, C++ i C#, prowadząc również prywatne projekty. Obecnie pracuje w polskiej firmie PGS Software S.A., zajmującej się tworzeniem oprogramowania i aplikacji mobilnych dla klientów z całego świata.