Tag: math

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

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

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

# 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

# Kalkulator programisty gier

Mon
16
Jul 2007

Wpadłem też dzisiaj na pomysł na pożyteczny program. Nie od dziś dręczy mnie z resztą od czasu do czasu potrzeba szybkiego policzenia znormalizowanego wektora czy przyciemnionego koloru. Ten pomysł to Kalkulator programisty gier, który pozwalałby na obliczenia na wektorach, macierzach czy kolorach. Co o tym sądzicie? Może kiedyś taki napiszę...

Ogólnie wszystkim którzy narzekają na wakacyjną nudę polecam na mojej stronie dział Download. Czasami wrzucam tam różne dziwne rzeczy, o których nawet nie piszę tutaj na blogu.

Comments | #ideas #math Share

# INF-y i NAN-y

Sun
13
May 2007

Liczby zmiennoprzecinkowe typu float czy double mogą przyjmować pewne specjalne wartości, m.in. oznaczające nieskończoność, nazywane -INF i +INF, a osiągalne w C++ za pomocą nagłówka <limits> i wywołania std::numeric_limits<float>::infinity(). Ciekawe jest, że w przeciwieństwie do liczb całkowitych dzielenie zmiennoprzecinkowe przez zero nie powoduje "wywalenia" programu, ale daje w wyniku takie właśnie nieskończoności.

Z mojego doświadczenia wynika, że zachowują się one absolutnie sensownie. -(+INF) daje -INF, -INF jest mniejsze od każdej liczby a +INF jest większe, -INF jest mniejsze od +INF, +INF - 2.f daje +INF, -INF * -2.f daje +INF itd. Zastanawia mnie więc, dlaczego wszyscy tych specjalnych wartości tak się boją, a nikt ich nie stosuje w swoim kodzie? Ostatnio znalazłem na to kolejny przykład - programiści nVidia w swoich przykładowych kodach używają liczby 1e32f jako wartości specjalnej.

Comments | #c++ #math Share

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

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