Rysowanie kostek: dice(unroundeddice) | leftfrontdice(unroundedleftfrontdice) | frontdice(unroundedfrontdice) | rightfrontdice(unroundedrightfrontdice)
Rysowanie ścian: face(unroundedface) | onedot | twodots | twodotsrotate | threedots | threedotsrotate | fourdots | sixdots | sixdotsrotate

Początek strony

Rysowanie kości do gry

\dice (\unroundeddice)

Prostopadłościan opisany na kostce wygląda tak:

Wartości domyślne są następujące:

size = 3
leftScale = 1.0
rightScale = 1.0
a = leftScale*size
b = rightScale*size
α = 20°
β = 20°

Makrodefinicje rysujące korzystają ze zmiennej size i kilku zmiennych pomocniczych, nie korzystają ze zmiennych a, b, α, β, leftScale i rightScale.

Zmianę wartości domyślnych uzyskujemy poleceniami:

\edef\size{«nowa_wartość_size»}
\computeLeft{«nowa_wartość_α»}{«nowa_wartość_leftScale»}
\computeRight{«nowa_wartość_β»}{«nowa_wartość_rightScale»}
Pierwsze polecenie zmienia wartość zmiennej size, pozostałe dwa zmieniają wartości zmiennych pomocniczych.

Makrodefinicja \dice korzysta z makrodefinicji \face, a makrodefinicja \unroundeddice z makrodefinicji \unroundedface.

Makrodefinicje \dice i \unroundeddice rysują kostkę skierowaną krawędzią do przodu. Mają cztery argumenty: pierwsze dwa to współrzędne punktu $P$, trzeci to ciag trójelementowy, jego elementy informują o liczbie kropek i kolorze widocznych ścian. Kolejność ścian: prawa, lewa, górna. Czwarty parametr to kolor kropek. Krawędzie są czarne.

\dice{3}{0}{{4/red,5/red,2/red}}{white}
\edef\size{2}
\dice{6}{0}{{4/red,5/red,2/red}}{white}

Lewa kostka ma domyślną długość krawędzi ($3$), polecenie

\edef\size{2}
zmieniło długość krawędzi na $2$.

\leftfrontdice (\leftunroundedfrontdice)

Prostopadłościan opisany na kostce wygląda tak:

Wartości domyślne są następujące:

size = 3
frontScale = 0.75
b = frontScale*size
β = 36°

Makrodefinicje rysujące korzystają ze zmiennej size i kilku zmiennych pomocniczych, nie korzystają ze zmiennych b, β i frontScale.

Zmianę wartości domyślnych uzyskujemy poleceniami:

\edef\size{«nowa_wartość_size»}
\computeFront{«nowa_wartość_β»}{«nowa_wartość_frontScale»}
Pierwsze polecenie zmienia wartość zmiennej size, drugie zmienia wartości zmiennych pomocniczych.

Makrodefinicja leftfrontdice korzysta z makrodefinicji face, a makrodefinicja leftunroundedfrontdice z makrodefinicji unroundedface.

Makrodefinicje leftfrontdice i leftunroundedfrontdice rysują kostkę skierowaną lewą ścianą do przodu. Mają cztery argumenty: pierwsze dwa to współrzędne prawego dolnego wierzchołka ściany frontowej (punktu $P$), trzeci to trójelementowyciag, jego elementy informujś o liczbie kropek i kolorach widocznych ścian. Kolejność ścian: boczna, frontowa, górna. Czwarty parametr to kolor kropek. Krawędzie są czarne.

\leftfrontdice{3}{0}{{4/red,5/red,2/red}}{white}
\leftfrontdice{6}{0}{{4/red,5/red,2/red}}{white}

\frontdice (\unroundedfrontdice)

Makrodefinicja frontdice działa identycznie jak leftfrontdice, a leftunroundedfrontdice identycznie jak leftunroundedfrontdice. Istnieją ze względu na wsteczną zgodność.

\rightfrontdice (\rightunroundedfrontdice)

Prostopadłościan opisany na kostce wygląda tak:

Wartości domyślne są następujące:

size = 3
frontScale = 0.75
b = frontScale*size
β = 36°

Makrodefinicje rysujące korzystają ze zmiennej size i kilku zmiennych pomocniczych, nie korzystają ze zmiennych b, β i frontScale.

Zmianę wartości domyślnych uzyskujemy poleceniami:

\edef\size{«nowa_wartość_size»}
\computeFront{«nowa_wartość_β»}{«nowa_wartość_frontScale»}
Pierwsze polecenie zmienia wartość zmiennej size, drugie zmienia wartości zmiennych pomocniczych.

Makrodefinicja rightfrontdice korzysta z makrodefinicji face, a makrodefinicja rightunroundedfrontdice z makrodefinicji unroundedface.

Makrodefinicje leftfrontdice i leftunroundedfrontdice rysują kostkę skierowaną prawą ścianą do przodu. Mają cztery argumenty: pierwsze dwa to współrzędne lewego dolnego wierzchołka ściany frontowej (punktu $P$), trzeci to trójelementowy ciąg, jego elementy informują o liczbie kropek i kolorach widocznych ścian. Kolejność ścian: boczna, frontowa, górna. Czwarty parametr to kolor kropek. Krawędzie są czarne.

\rightfrontdice{6}{0}{{4/red,5/blue,2/red}}{white}
\rightfrontdice{3}{0}{{4/red,5/blue,2/red}}{white}

\face (\unroundedface)

Makrodefinicja face rysuje zaokrąglony kwadrat jednostkowy z kropkami. Ma cztery argumenty: pierwszy to kolor kropek, drugi to kolor wypełnienia kwadratu – krawędzie są czarne, trzeci to liczba kropek (musi być z zakresu $1$-$6$), czwarty argument decyduje o położeniu kropek (dopuszczalne wartości to $1$ i $-1$, nie ma wpływu na wygląd kwadratu gdy liczba kropek wynosi $1$, $4$ lub $5$).

\face{white!50!red}{red}{6} {1}
\pgftransformcm{1}{0}{0}{1}{\pgfpoint{3cm}{0cm}}
\face{white!50!red}{red}{6}{-1}
\pgftransformreset 
\pgftransformcm{0.71*3}{0.71*3}{-0.71*3}{0.71*3}{\pgfpoint{5cm}{0cm}}
\face{white!50!red}{red}{6}{1}

Makrodefinicja unroundedface różni się od face tylko tym że rysuje „niezaokrąglony” kwadrat.

\unroundedface{white!50!red}{red}{3}{1}
\pgftransformreset 
\pgftransformcm{0.71*3}{0.71*3}{-0.71*3}{0.71*3}{\pgfpoint{3cm}{0cm}}
\unroundedface{white!50!red}{red}{3}{-1}

\onedot, \twodots, \threedots, \fourdots, \sixdots
\twodotsrotate, \threedotsrotate, \sixdotsrotate

Każda z tych makrodefinicji rysuje pewną ilość kropek (kółek o promieniu 0,05). Wszystkie mają jeden argument: kolor kropki.

Polecenie Współrzędne środków kropek
\onedot $(0,5;\, 0,5)$
\twodots $(0,3;\, 0,3),\, (0,7;\, 0,7)$
\twodotsrotate $(0,3;\, 0,7),\, (0,7;\, 0,3)$
\threedots $(0,25;\, 0,25),\, (0,5;\, 0,5),\, (0,75;\, 0,75)$
\threedotsrotate $(0,25;\, 0,75),\, (0,5;\, 0,5),\, (0,75;\, 0,25)$
\fourdots $(0,3;\, 0,3),\, (0,3;\, 0,7),\, (0,7;\, 0,3),\, (0,7;\, 0,7)$
\sixdots $(0,3;\, 0,25),\, (0,3;\, 0,5),\, (0,3;\, 0,75),\, (0,7;\, 0,25),\, (0,7;\, 0,5),\, (0,7;\, 0,75)$
\sixdotsrotate $(0,25;\, 0,3),\, (0,25;\, 0,7),\, (0,5;\, 0,3),\, (0,5;\, 0,7),\, (0,75;\, 0,3),\, (0,75;\, 0,7)$

Polecenia rysującego pięć kropek nie ma. Pięć kropek jest rysowanych sekwencją poleceń: onedot i fourdots.

\pgftransformreset
\pgftransformcm{2}{0}{0}{2}{\pgfpoint{0}{0}}
\draw rectangle(1, 1);
\onedot{green}
\twodots{red}
\pgftransformcm{1}{0}{0}{1}{\pgfpoint{1.5cm}{0}}
\draw rectangle(1, 1);
\threedots{green}
\pgftransformcm{1}{0}{0}{1}{\pgfpoint{1.5cm}{0}}
\draw rectangle(1, 1);
\fourdots{green}
\pgftransformcm{1}{0}{0}{1}{\pgfpoint{1.5cm}{0}}
\draw rectangle(1, 1);
\sixdots{green}