# Skąd brać ikonki?
Fri
30
Jan 2009
MarekM25 poruszył ostatnio na naszym forum ciekawy temat: Skąd brać ikonki na przyciski do swoich programów?. Pośród odpowiedzi znalazły się darmowe galerie ładnych ikon: Silk Icons, Tango Icon Gallery, a także nie lada niespodzianka - paczka ikon dołączana do Visual Studio (niestety nie w wersji Express), schowana głęboko i spakowana w pliku VS2008ImageLibrary.zip.
Przy okazji warto wspomnieć o stronie Ajaxload, na której można sobie wygenerować i ściągnąć animowane, obracające się kółeczko popularne ostatnio do oznaczania ładowania czegoś w tle. Znacie jeszcze inne tego typu zasoby?
![]()
Comments | #web #gui #graphics Share
# Pasek przełączania stron w PHP
Wed
21
Jan 2009
Tym razem, nietypowo, napiszę o programowaniu stron WWW w PHP, a konkretnie o kwestii przełączania między stronami. Jeśli lista zarejestrowanych użytkowników, dodanych projektów, newsów czy czegokolwiek jest długa, istnieją różne rozwiązania na jej pokazywanie. Pierwsza to pokazać wszytkie (jak lista Parties na pouet.net). Druga to pokazać wszystkie na wybraną literę (jak lista Groups na pouet.net). Ta najczęściej stosowana to grupować obiekty po kilka na stronie i dać możliwość przełączania się między numerami stron.
Z kolei wybór strony też można pokazywać na różne sposoby. Można wstawić formularz z kontrolką <select>, czyli ComboBox. Można pokazać listę numerów stron. Jeśli jednak sama ta lista jest długa, warto ją skrócić. Tu właśnie, kończąc ten wstęp, chciałbym zaprezentować kawałek kodu PHP, który ostatnio napisałem. Wprowadziłem go do swojej strony domowej oraz na www.gamedev.pl. Wzorem SMF (używanego na naszym forum.gamedev.pl) pokazuje tylko numer strony bieżącej, pierwszej, ostatniej, dwóch poprzednich, dwóch następnych oraz dodatkowe strzałeczki do następnej i poprzedniej. Oto kod: Pasek_stron_PHP.txt. Tak to wygląda:
![]()
Comments | #php #webdev #web #gui Share
# Funkcja liniowa i kwadratowa
Wed
14
Jan 2009
W programowaniu bardzo często stosuje się funkcję liniową lub kwadratową. Przykładowo, jeśli mgła ma się zaczynać w głębokości Min i kończyć w głębokości Max, to jej intensywość od głębokości można wyrazić prostym wzorem:
FogIntensity = saturate(Depth * FogScale + FogBias);
Problem w tym, żeby znaleźć współczynniki tej funkcji. Do tego przydają się wzory, które wyliczają współczynniki dla funkcji przechodzącej przez dane punkty. Potrafi to robić mój GameDev Calc, ale żeby policzyć je w swoim programie albo na kartce, warto mieć pod ręką te wzory.
Funkcja liniowa
przechodząca przez dwa punkty (x1, y1), (x2, y2) ma wzór:

Co w przełożeniu na kod daje:
float W = p2.x - p1.x; if (W == 0.f) Error(); float a = (p2.y - p1.y) / W; float b = (p2.x * p1.y - p2.y * p1.x) / W;
Z kolei funkcja kwadratowa
przechodząca przez trzy punkty (x1, y1), (x2, y2), (x3, y3) ma wzór:

Co daje trochę dłuższy kod:
float x1 = p1.x, x2 = p2.x, x3 = p3.x; float y1 = p1.y, y2 = p2.y, y3 = p3.y; float W = x1 * x1 * x2 + x3 * x3 * x1 + x2 * x2 * x3 - x1 * x1 * x3 - x2 * x2 * x1 - x3 * x3 * x2; if (W == 0.f) Error(); float a = y1 * x2 + y3 * x1 + y2 * x3 - y1 * x3 - y2 * x1 - y3 * x2; float b = x1 * x1 * y2 + x3 * x3 * y1 + x2 * x2 * y3 - x1 * x1 * y3 - x2 * x2 * y1 - x3 * x3 * y2; float c = x1 * x1 * x2 * y3 + x3 * x3 * x1 * y2 + x2 * x2 * x3 * y1 - x1 * x1 * x3 * y2 - x2 * x2 * x1 * y3 - x3 * x3 * x2 * y1; a /= W; b /= W; c /= W;
# Co wynalazł Hilbert i Morton
Mon
12
Jan 2009
Tablicę jednowymiarową można posortować, żeby przyspieszyć jej przeszukiwanie. W programowaniu gier, do przestrzeni 2D i 3D używamy technik podziału przestrzeni (jak BSP, Octree, k-d tree), bo nie sposób uporządkować punktów czy obiektów w kolejności. Jednak czy napewno?
Otóż wynaleziono funkcje, które przeliczają pozycję punktu w przestrzeni (podzielonej wprawdzie na dyskretną siatkę) na pojedynczą liczbę taką, że dwa punkty leżące blisko siebie dostają często zbliżoną wartość. Te funkcje to numer komórki wzdłuż pewnej krzywej (Space-filling curve).
Przykładem może być Morton value:
Źródło: Wikipedia
lub lepsza, ale bardziej kosztowna obliczeniowo Hilbert value:
Źródło: Wikipedia
Comments | #math #algorithms #rendering Share
# Tagi do bloga i inne nowości
Sat
10
Jan 2009
Ulepszyłem ostatnio skrypty mojej strony. Między innymi dodałem tagi do mojego bloga i zatagowałem niektóre wpisy. Oto lista tagów. Napisałem też z pomocą JavaScript fajniejsze drzewko ze statystykami odwiedzin.
Comments | #homepage #web Share
# TPSA zablokowała IRC
Sat
03
Jan 2009
Około nowego roku firma TPSA całkowicie zablokowała swoim abonentom dostęp do niektórych adresów IP, w tym do serwerów IRC sieci IrcNet i PolNet, a także m.in. strony gimp.org. Firma tłumaczy, że IRC wykorzystywany jest do sterowania hakerskimi botami. Ja nie wiem o co chodzi z tymi botami - nie zajmuję się hakowaniem - ale wiem, że wiele osób używa IRC-a do normalnego rozmawiania. Dlatego moim zdaniem to skandal, że popularny dostawca usług internetowych, który w umowie gwarantuje "nieograniczony" dostęp do globalnej Sieci, blokuje swoim abonentom jedną z usług. Co będzie dalej? Zablokują Torrenta jako że często służy do piractwa, zapominając o tych co za jego pomocą ściagają dystrybucje Linuksa albo patche do WoW? Do poczytania:
W tej sytuacji niewielkim pocieszeniem jest fakt, że za przedłużenie Neostrady na co najmniej 24 miesiące można dostać drukarkę atramentową Canon Pixma iP1900.