Tag: math

Entries for tag "math", ordered from most recent. Entry count: 62.

Uwaga! Informacje na tej stronie mają ponad 5 lat. Nadal je udostępniam, ale prawdopodobnie nie odzwierciedlają one mojej aktualnej wiedzy ani przekonań.

Pages: > 1 ... 5 6 7 8 >

# Ściąga ze Specular

Wed
31
Oct 2007

Spodobało mi się to robienie graficznych mini-lekcji z podstawami programowania grafiki :) Napiszcie co o tym sądzicie - może zrobię jeszcze inne.

Tymczasem przygotowałem ściągę ze wzorami na odblask (ang. Specular). Wykorzystuje on, podobnie jak prawo Lamberta, iloczyn skalarny (ang. Dot Product), a dodatkowo używa potęgowania. Są dwie metody liczenia odblasku:

Comments | #math #teaching #rendering Share

# Co to jest Half-Lambert

Tue
23
Oct 2007

Dziś chciałem wam przybliżyć efekt Half-Lambert. Prawo Lamberta mówi, że jasność powierzchni w danym miejscu jest wprost proporcjonalna do cosinusa kąta między wektorem kierunku DO źródła światła, a wektorem normalnym prostopadłym do powierzchni w tym miejscu. Ten z kolei jest równy iloczynowi skalarnemu (Dot Product) między tymi wektorami, o ile są znormalizowane. W ten sposób działa podstawowy wzór na oświetlenie "rozproszone" (Diffuse). Wygląda dobrze, ale ma tą wadę, że cała połowa powierzchni obiektu - ta zwrócona tyłem do źródła światła - jest kompletnie czarna.

Rozwiązaniem jest Half-Lambert, czyli takie przeskalowanie wyniku iloczynu skalarnego, by każdy fragment powierzchni otrzymał jakieś oświetlenie, z wyjątkiem miejsca zwróconego dokładnie przeciwnie do źródła światła. Wygląda to brzydko i nienaturalnie, ale w pewnych specyficznych sytuacjach może się przydać. Ja na przykład użyłem tego przy renderowaniu liści drzew.

Comments | #rendering #teaching #math Share

# Dlaczego FPS jest do bani

Tue
02
Oct 2007

Pesymiści narzekają, że od narysowania kilku trójkątów liczba FPS (klatek na sekudnę) spadła im z 1000 do 300. Optymiści cieszą się, że po podwojeniu liczby rysowanych obiektów ich FPS nie spadł o połowę, tylko na przykład z 60 do 50. Gdzie tkwi tajemnica?

Prawda jest taka, że FPS jako miara wydajności jest do bani. Nie żeby była nieadekwatna, ale czym właściwie jest FPS? Wyrażony w klatkach na sekundę - 1/s, czyli w Hz, to jest tak naprawdę częstotliwość wyświetlania klatek - odwrotność czasu renderowania jednej klatki. Jeśli założymy, że każdy dodatkowy obiekt wydłuża czas renderowania o 3 ms, to wraz ze wzrostem liczby obiektów liniowo wzrasta czas renderowania klatki, natomiast liczba FPS jest z nimi związana funkcją y=3/x. Oto dlaczego tak nieintuicyjne wyniki daje. Z resztą zobaczcie sami:

Comments | #math #algorithms Share

# Dziwne atraktory

Tue
11
Sep 2007

Natrafiłem ostatnio (pozdro nooga!) na ciekawy temat: dziwne atraktory. Tak, one naprawdę się tak nazywają. Są to obiekty matematyczne związane z chaosem. Najciekawsze w nich jest to, że można je wizualizować, a nawet oświetać i wyglądają... dziwnie. Nie przypominają niczego normalnego, jakby były nie z tego świata. Jest książka na ich temat ("Strange Attractors: Creating Patterns in Chaos", Julien C. Sprott), a także darmowy program pod Windows do ich generowania - Chaoscope.


[http://www.btinternet.com/~ndesprez/]

Okazuje się, że można znaleźć dla nich zastosowanie. Na GameDev.net jest gość, który piszę kosmiczną grę MMOG i tego rodzaju obiekty wykorzystuje do renderowania w czasie rzeczywistym trójwymiarowych mgławic. Polecam choćby ten link, a szczególnie TEN FILMIK (4.1 MB).


[http://fl-tw.com/Infinity/]

Comments | #rendering #graphics #math #web #fractals Share

# Książki do matematyki

Sat
08
Sep 2007

Dzisiaj chciałbym was zachęcić do czytania książek do... matematyki. To naprawdę świetny sposób na usystematyzowanie wiedzy zdobywanej fragmentami tu i ówdzie i porządne poznanie tego, co zanim stanie się oczywiste, wydaje się bardzo trudne. Nie chodzi jednak o szkolne podręczniki. Istnieją książki do matematyki przeznaczone dla programistów gier. To ważne o tyle, że pojawia się tu wiele charakterystycznych zagadnień. Na przykład nigdy i nigdzie nie widziałem jeszcze, żeby ktoś poza kontekstem programowania grafiki albo fizyki omawiał kwaterniony jako sposób reprezentowania orientacji i obrotów.

W Polsce niestety takich książek nie ma. Dlatego tym, którzy znają angielski, polecę dwie zachodnie. Pierwsza, ta którą mam i którą przeczytałem, to "3D Math Primer for Graphics and Game Development", Fletcher Dunn and Ian Parberry, wyd. Wordware Publishing Inc. Jej zaletą jest, że opisuje wszystko w układzie lewoskrętnym i zgodnie ze wszelkimi konwencjami Direct3D, a nie jak większość książek (w tym ta druga) - w konwencji OpenGL. Druga to "Essential Mathematics for Games and Interactive Applications. A Programmer’s Guide", James M. Van Verth, Lars M. Bishop, wyd. Morgan Kaufmann Publishers. Jest dużo grubsza i bardziej kompleksowa, a oprócz matematyki omawia też podstawy grafiki i fizyki.

Comments | #math #literature Share

# Równomierne losowanie punktów z okręgu

Sun
26
Aug 2007

Jak losować punkty należące do okręgu, rozłożone równomiernie? W programowaniu mamy najczęściej dostępny generator liczb o rozkładzie równomiernym. Losowanie punktów z kwadratu jest z jego użyciem napisać prosto. Jak losować punkty z okregu?

Pierwszy pomysł polega na normalnym losowaniu punktów we współrzędnych kartezjańskich z kwadratu opisanego na tym okręgu i odrzucaniu tych, które leżą poza okręgiem. To niefajny pomysł - za dużo niepotrzebnego liczenia.

Drugi pomysł polega na losowaniu punktów we współrzędnych biegunowych - odległości od środka i kąta. To lepsze, ale pojawia się tu jeden kruczek. Losowane w ten sposób punkty mają tendencję do skupiania się w środku, bo dla małych wartości promienia punkty leżą blisko siebie niezależnie, jaki wylosował się kąt - tym bliżej, im mniejszy promień. Jak temu zaradzić?

Prawdopodobieństwo wylosowania danego promienia powinno być nie równomierne, ale propocjonalne do pola koła, które on wyznacza. Ponieważ pole jest zależne od promienia kwadratowo, wystarczy wylosowany promień (w zakresie 0..1, jeszcze przed przeskalowaniem) SPIERWIASTKOWAĆ.

Dla punktów 3D należących do kuli powinno być analogicznie.

Comments | #math #algorithms #rendering Share

# Stopnie, radiany czy...

Thu
23
Aug 2007

W szkole uczą mierzyć kąt w stopniach. Początkujący programiści kiedy widzą, że funkcje sinus i cosinus przyjmują kąt w radianach, wszędzie piszą coś takiego jak DegToRad(90.0f). Potem orientują się, że wcale nie gorszy jest zapis PI/2.0f i zaczynają używać radianów.

Radiany w przeciwieńswie do stopni mają uzasadnienie matematyczne, ale na dobrą sprawę chyba nie używamy go zbyt często. Dlatego, choć musimy używać radianów, bo na radianach operują funkcje sin, cos, tan czy atan2, to właściwie równie dobrze miara kąta mogłaby być taka, że kąt prosty, półpełny czy pełny wynosiłby 1. Byłoby wygodniej, a niczego by to w programowaniu nie zmieniło.

Comments | #math Share

# Szum perlina

Sat
28
Jul 2007

Fajnie mieć pod ręką proste funkcje takie jak:

float PerlinNoise3(float x, float y, float z);

generujące szum wynaleziony przez Kena Perlina. Wygląda na to, że tak naprawdę formalnie szum perlina to ciągła funkcja pseudolosowa jednej lub wielu zmiennych o "częstotliwości" równej np. 1, a to co nazywamy zazwyczaj szumem perlina - ta funkcja używana m.in. do generowania chmur albo mapy wysokości terenu, posiadająca oktawy - nazywa się Fractional Brownian Motion. Mniejsza o nazwy - ja od dzisiaj w swojej bibliotece mam obie :) Mowa oczywiście o bibliotece CommonLib.

Comments | #rendering #math Share

Pages: > 1 ... 5 6 7 8 >

[Download] [Dropbox] [pub] [Mirror] [Privacy policy]
Copyright © 2004-2021