Programowanie

Ostatnio uaktualniane: 2011-10-21 new

Strona główna

Treść

Grafika komputerowa [2.06.2008]

Algorytm Bresenhama [4.02.2007]
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 [21.02.2007]
Algorytm dla dowolnych wielokątów oraz efektywny dla trójkątów.
AABB obróconego łuku eliptycznego [25.03.2007]
AABB, czyli pudełko otaczające równoległe do osi układu współrzędnych.

Aproksymacja łamaną krzywej Beziera 3. stopnia [7.02.2007]

Punkty przecięcia dwóch krzywych Beziera 3. stopnia [15.02.2007]

Stwierdzenie, czy krzywa Beziera 3. stopnia jest płaska [31.01.2007]

Upraszczanie łamanej aproksymującej wykres funkcji [26.02.2007]

Konwersje pikseli RGB [2.06.2008]
Konwersje pomiędzy różnymi formatami pikseli [C, asembler (MMX)].
Konwersje pikseli 24/32bpp z/na grayscale [30.04.2008]
Różne sposoby konwersji obrazów true-color na odcienie szarości.
Dodawanie z nasyceniem [29.06.2007]
Szybkie sposoby dodawania pikseli [asembler (x86,MMX)].
Filtrowanie bilinearne [14.12.2003]
Filtrowanie obrazów bitmapowych przy przekształceniach, czyli „pikselizacji mówimy nie”.
Rozmycie obrazów [13.04.2008]
Szybki algorytm [wersja w C oraz asemblerze (x86, MMX)].
Miksowanie obrazów [17.07.2005]
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 [18.07.2005]
Wypełnianie dowolnych wielokątów (przykładowy kod w Pythonie).
Wypełnianie trójkątów [5.03.2007]
Wypełnianie trójkątów i czworokątów wypukłych.
Cieniowanie Gouarauda [9.08.2002]
Zastosowanie rozkazów MMX przy cieniowaniu Gouarauda.
Odbicie obrazu
w pionie [3.03.2002] oraz poziomie [6.02.2002]
Konwersja cz/b obrazka na ASCII [4.03.2002]
Opis algorytmu użytego w programie bmp2ascii.cc, który działa na konsoli linuksowej.
Skalowanie obrazu
Proste i z filtrowaniem: 200% [30.04.2008] oraz 50%
Efektywny scroll obrazu [9.03.2002]
Szybki scroll obrazu, czyli lista cykliczna dla każdego.

Asembler x86 (FPU, MMX, SSE, SSE2, SSE3, SSSE3, SSE4) [2011-10-21] new

SSE: conversion integers to decimal representation [2011-10-21] new
Fast conversion integers to decimal representation using SSE instructions.

AVX: rozkazy trójargumentowe [29.04.2008]

SSE4 string search — modification of Karp-Rabin algorithm [27.05.2008]
Acceleration of strstr with SSE4 instruction MPSADBW.

SSE4: MPSADBW — pomoc w wyszukiwaniu wzorców [13.04.2008]

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

SSE4 — nowe rozkazy [4.09.2007]

SSE4: PTEST & strlen [8.09.2007]

SSSE3: fast population count [28.06.2010]
Population count on large bitstring could be 2-3 times faster then lookup-based approach.

SSSE3/SSE4: alpha blending — operator over [3.06.2008]

SSSE3: printing hex values [29.04.200]

16bpp/15bpp to 32bpp pixel conversions — different methods [1.06.2008]

SSE4: colorkey [3.05.2008]

SSE4: PMADDUBSW and image crossfading [21.06.2008]

SSE4: DPPS — iloczyn skalarny [13.09.2007]
Iloczyn skalarany realizowanym jednym rozkazem, mnożenie macierzy — banalne.
SSE3: HADDPS — iloczyn skalarny [14.09.2007]
Wydajne równoległe wyznaczenie czterech iloczynów skalarnych
SSE4.1: PHMINPOSUW — insertion sort [3.08.2008]
Unusual application of PHMINPOSUW instruction
Snippets [30.04.2007]
Dwadzieścia cztery programiki asemblerowe, które mogą być przydatne w każdym programie.

SSE: Transpozycja bloku bitów [28.04.2008]

SSE4: grater/less or equal relations for unsigned bytes/words [2.06.2008]

Operacje na łańcuchach ASCII-Z w asemblerze [9.08.2007]

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

Zastosowanie rozkazów SIMD w kompensacji ruchu [6.09.2007]

SSE/SSE2 - przykłady zastosowań [15.09.2007]
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 [21.05.2003]
Właściwie to równoczesne liczenie wyznaczników dwóch macierzy

Liczby zmiennoprzecinkowe (floating-point) [12.12.2003]

Liczby zmiennoprzecinkowe nigdy nie są niczemu równe.

—Gotar

Floating point tricks [15.06.2008]

Porównywanie liczb floating point [23.10.2002]
Porównywanie liczby floating point przy użyciu operacji całkowitoliczbowych.
Wyświetlanie liczb zmiennoprzecinkowych [12.12.2003]
Algorytm, przedyskutowany kiedyś na liście asm@hydepark.pl (niestety, lista już nie istnieje, jak z resztą cała strona hydepark). Źródła: print_float.tar.gz

Niskopoziomowe [13.07.2008]

Kod samomodyfikujący się (Linux) [13.07.2008]
Testowane z jądrem 2.4 oraz 2.6.
Ring0 pod Windowsowym DPMI (Window 9x) [16.04.2002]
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ą [27.10.2002]
Czyli jak działa strtol
Wyświetlanie liczb [30.04.2008]
Czyli jak działa printf("%d", x)
Sortowanie pozycyjne [9.03.2002]
Zmodyfikowana wersja algorytmu, wymagająca mniej przesłań.
Tryb kanoniczny terminala (Linux) [19.12.2002]
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 [2011-03-31] new

Efficient trie representation [2011-03-31] new
Details of different structures to store trie.
POSIX threads [PDF - 105 stron] [LaTeX] [2010-03-21] new
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).
Traversing trees without stack [17.02.2011]
Const memory complexity, i.e. O(1)
Join locate databases [3.12.2008]
Join locate database files without reencoding files
Tkinter — notatki
Różne notatki nt słabo udokumentowanych cech Tkintera
Znaki wieloznaczne DOS (wildcards) [8.03.2002]
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 [30.11.2003]
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 [13.10.2005]
Moje stare wprawki w programowaniu w języku C.
Zaawansowane użycie streambuf (C++) [12.07.2002]
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 [14.12.2003]
Może się przydać do jakiegoś LOD-a (Level of Detail)

Dokument utworzony przez rozszerzony rst2html.