Programowanie

Strona domowa, zobacz też artykuły w języku angielskim.

Działy

Grafika komputerowa update

Algorytm Bresenhama [2007-02-04]
W 1962 roku pan Bresenham zaproponował całkowitoliczbowy algorytm rasteryzacji, który — z większymi lub mniejszymi modyfikacjami — jest stosowany do dziś. Ten tekst przedstawia algorytm oraz jego aplikacje: rasteryzację odcinka, okręgu oraz elipsy.
Określenie, czy punkt leży wewnątrz wielokąta [2007-02-21]
Algorytm dla dowolnych wielokątów oraz efektywny dla trójkątów.
AABB obróconego łuku eliptycznego [2007-03-25]
AABB, czyli pudełko otaczające równoległe do osi układu współrzędnych.

Aproksymacja łamaną krzywej Beziera 3. stopnia [2007-02-07]

Punkty przecięcia dwóch krzywych Beziera 3. stopnia [2007-02-15]

Stwierdzenie, czy krzywa Beziera 3. stopnia jest płaska [2007-01-31]

Upraszczanie łamanej aproksymującej wykres funkcji [2007-02-26]

Konwersje pikseli RGB [2008-06-02]
Konwersje pomiędzy różnymi formatami pikseli [C, asembler (MMX)].
Konwersje pikseli 24/32bpp z/na grayscale [2008-04-30]
Różne sposoby konwersji obrazów true-color na odcienie szarości.
Dodawanie z nasyceniem [2007-06-29]
Szybkie sposoby dodawania pikseli [asembler (x86,MMX)].
Filtrowanie bilinearne [2003-12-14]
Filtrowanie obrazów bitmapowych przy przekształceniach, czyli „pikselizacji mówimy nie”.
Rozmycie obrazów [2016-03-07] update
Szybki algorytm [wersja w C oraz asemblerze (x86, MMX)].
Miksowanie obrazów [2005-07-17]
Płynne przejście obrazów.
Obliczanie średniej arytmetycznej
(Jako uzupełnienie dla przypadków miksowania ze wsp. 0,5)
Wypełnianie wielokątów [2005-07-18]
Wypełnianie dowolnych wielokątów (przykładowy kod w Pythonie).
Wypełnianie trójkątów [2007-03-05]
Wypełnianie trójkątów i czworokątów wypukłych.
Cieniowanie Gouarauda [2002-08-09]
Zastosowanie rozkazów MMX przy cieniowaniu Gouarauda.
Odbicie obrazu
w pionie [2002-03-03] oraz poziomie [2002-02-06]
Konwersja cz/b obrazka na ASCII [2002-03-04]
Opis algorytmu użytego w programie bmp2ascii.cc, który działa na konsoli linuksowej.
Skalowanie obrazu
Proste i z filtrowaniem: 200% [2008-04-30] oraz 50%
Efektywny scroll obrazu [2002-03-09]
Szybki scroll obrazu, czyli lista cykliczna dla każdego.

Asembler x86 (FPU, MMX, SSE, SSE2, SSE3, SSSE3, SSE4)

AVX: rozkazy trójargumentowe [2008-04-29]

SSE4: MPSADBW — pomoc w wyszukiwaniu wzorców [2008-04-13]

SSE4: instrukcje działające na łańcuchach [2008-04-26]
Omówienie nowych rozkazów PCMPxSTRx oraz kilka przykładowych funkcji.

SSE4: colorkey [2008-05-03]

SSE4 — nowe rozkazy [2007-09-04]

SSE4: PTEST & strlen [2007-09-08]

SSE4: DPPS — iloczyn skalarny [2007-09-13]
Iloczyn skalarany realizowanym jednym rozkazem, mnożenie macierzy — banalne.
SSE3: HADDPS — iloczyn skalarny [2007-09-14]
Wydajne równoległe wyznaczenie czterech iloczynów skalarnych
Snippets [2007-04-30]
Dwadzieścia cztery programiki asemblerowe, które mogą być przydatne w każdym programie.

SSE: Transpozycja bloku bitów [2008-04-28]

Operacje na łańcuchach ASCII-Z w asemblerze [2007-08-09]

MMX&SSE snippets [2002-10-28]
Różnorodne problemy (i problemiki) rozwiązane z użyciem rozkazów SIMD.
Rozszerzenia MMX firm AMD i Cyrix [2007-08-08]
Interesujące rozszerzenia MMX konkurentów Intela.

Zastosowanie rozkazów SIMD w kompensacji ruchu [2007-09-06]

SSE/SSE2 - przykłady zastosowań [2007-09-15]
Osiem przykładów: iloczyn skalarny, iloczyn wektorowy, normalizacja wektora, obrót punktu 2d, mnożenie liczb zespolonych, mnożenie macierzy przez wektor, transpozycja macierzy.
Obliczenie wyznacznika macierzy 4x4 przy użyciu rozkazów SSE2 [2003-05-21]
Właściwie to równoczesne liczenie wyznaczników dwóch macierzy

Liczby zmiennoprzecinkowe (floating-point)

Liczby zmiennoprzecinkowe nigdy nie są niczemu równe.

—Gotar

Porównywanie liczb floating point [2002-10-23]
Porównywanie liczby floating point przy użyciu operacji całkowitoliczbowych.
Wyświetlanie liczb zmiennoprzecinkowych [źródła] [2003-12-12]
Algorytm, przedyskutowany kiedyś na liście asm@hydepark.pl (niestety, lista już nie istnieje, jak zresztą cała strona hydepark).

Niskopoziomowe

Kod samomodyfikujący się (Linux) [2008-07-13]
Testowane z jądrem 2.4 oraz 2.6.
Ring0 pod Windowsowym DPMI (Windows 9x) [2002-04-16]
Artykuł pokazuje jak można przejść na ring0, wykorzystując (idiotyczny) błąd w win9x (asmcorner).
Rozszerzanie zakresu liczb
Rozszerzenia zakresu liczb ze znakiem i bez znaku, czyli movzx/movsx od kuchni.
Konwersja napisów na wartość liczbową [2002-10-27]
Czyli jak działa strtol
Wyświetlanie liczb [2008-04-30]
Czyli jak działa printf("%d", x)
Sortowanie pozycyjne [2002-03-09]
Zmodyfikowana wersja algorytmu, wymagająca mniej przesłań.
Tryb kanoniczny terminala (Linux) [2002-12-19]
W trybie kanonicznym terminal nie buforuje linii i dane wejściowe są dostępne na poziomie bajtów, czyli tak samo jak w DOS.

Inne

Automatyczne rysowanie dowolnych drzew
Przedstawione niżej metody służą do automatycznego rozmieszczania elementów graficznych reprezentujących węzły w drzewiastych strukturach danych.
POSIX threads [PDF - 105 stron] [2010-03-21]
Opis biblioteki pthreads istnieje w serwisie Wikibooks od marca 2010 roku. Umieszczam tutaj wstępną wersję w PDF oraz źródła LaTeX-owe (bez programów w C).
Tkinter — notatki
Różne notatki nt słabo udokumentowanych cech Tkintera
Znaki wieloznaczne DOS (wildcards) [2002-03-08]
Artykuł omawia procedurę porównującą łańcuch ze wzorcem w którym użyto znaków wieloznacznych (ang. wildcards) znanych z DOS-a, gdzie ? zastępuje pojedynczy znak, natomiast * ciąg znaków.
Statyczne kodowanie Huffmana [2003-11-30]
Metoda kompresji z którą każdy, ale to absolutnie każdy się zetknął. Że choćby wspomnę o formacie JPEG. Zobacz też artykuł na Wikipedii (w którym maczałem klawiaturę).
Implementacje funkcji ze string.h [2005-10-13]
Moje stare wprawki w programowaniu w języku C.
Zaawansowane użycie streambuf (C++) [2002-07-12]
Staroć, nieaktualne. P.T. studenci UWr napisali na swoim forum, że coś nie działają opisane tutaj manipulatory. Całkiem możliwe, eksperymenty robiłem dobre 4 lata temu (wtedy też powstał ten artykuł), w międzyczasie C++ poszedł „do przodu” — cokolwiek to znaczy w odniesieniu do tego języka.
Oszacowanie log2 [2003-12-14]
Może się przydać do jakiegoś LOD-a (Level of Detail)