Makrodefinicja: letters(unroundedletters) | frontletters(unroundedfrontletters)
Makrodefinicje pomocnicze: face(unroundedface)

Rysowanie kostek z literami

Do rysowania ścian kostki (równoległoboków z literami) wykorzystywane są przekształcenia afiniczne. W pakiecie TikZ przekształcenie afiniczne definiuje sie tak:

\pgftransformcm {a} {c} {b} {d} {\pgfpoint {e} {f}}

Powyższe przekształcenie zapisane zapisane tradycyjnie wygląda tak: $A(x;\,y)=(ax+by+e;\,cx+dy+f)$, w szczególności $A(1;\,0)=(a;\,c)+(e;\,f),\,\,A(0;\,1)=(b;\,d)+(e;\,f)$.

Polecenie \pgfpoint wymaga podania jednostek.

Przykład:

\pgfpoint {2cm} {1cm}

Po zdefiniowaniu przekształcenia afinicznego $A$, polecenia

\draw figura
\fill figura
rysują $A(figura)$.

Po definicjach

\pgftransformcm {a} {c} {b} {d} {\pgfpoint {e} {f}}
%przekszatłcenie A\pgftransformcm   {g} {h} {i} {j} {\pgfpoint {k} {l}}
%przekszatłcenie B
pakiet TikZ korzysta ze złożenia A⋅B. Na ogół jest to niepożądane, warto każde polecenie pgfrtansformcm poprzedzać poleceniem pgftransformreset.

Definicje przekształceń afinicznych są „lokalne” – przekształcenie zdefiniowane w otoczeniu tikzpicture nie jest stosowane w kolejnych otoczeniach tikzpicture.

\letters (\unroundedletters)

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

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

c = 3
leftScale = 1.0
rightScale = 1.0
a = leftScale*c
b = rightScale*c
alfa = 20°
beta = 20°

Do zmiany wartości domyślnych służą polecenia:

\edef\size {nowa_wartość_c}
\computeLeft {nowa_wartość_alfa} {nowa_wartość_leftScale}
\computeRight {nowa_wartość_beta} {nowa_wartość_rightScale}

Makrodefinicja letters korzysta z makrodefinicji face, a makrodefinicja unroundedletters z makrodefinicji unroundedface.

Makrodefinicje letters i unroundeddletters rysują kostkę skierowaną krawędzią do przodu. Mają pięć argumentów: pierwsze dwa to współrzędne najniższego punktu, trzeci to ciag trzech liter, które zostaną umieszczone na widocznych ścianach. Kolejność: prawa ściana, lewa ściana, górna ściana. Czwarty parametr to kolor napisów, a piąty to kolor wypełnienia ścian – krawędzie są czarne.

\fontsize {0.8cm} {0.96cm}\selectfont 
\unroundedfrontletters {4} {0} { {A, B, C}} {blue} {yellow}
\edef\size {2}
\unroundedfrontletters {6} {0} { {A, B, C}} {blue} {yellow}
\fontsize {0.6cm} {0.72cm}\selectfont 
\frontletters {4} {0} { {$\alpha$, $\beta$, $\gamma$}} {blue} {yellow}
\edef\size {2}
\frontletters {6} {0} { {$\alpha$, $\beta$, $\gamma$}} {blue} {yellow}

Lewe kostki mają domyślną długość krawędzi pionowej ($3$), polecenie

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

\frontletters (\unroundedfrontletters)

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

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

a = 3
frontScale = 0.75
b = frontScale*a
beta = 36°

Do zmiany wartości domyślnych służą polecenia:

\edef\size {nowa_wartość_a}
\computeFront {nowa_wartość_beta} {nowa_wartość_frontScale}

Makrodefinicja frontletters korzysta z makrodefinicji face, a makrodefinicja unroundedfrontletters z makrodefinicji unroundedface.

Makrodefinicje frontletters i unroundedfrontletters rysują kostkę skierowaną ścianą do przodu. Mają pięć argumentów: pierwsze dwa to współrzędne prawego dolnego wierzchołka ściany frontowej (punktu $P$), trzeci to ciag trzech to ciąg trzech liter, które zostaną wypisane na widocznych ścianach. Kolejność: prawa ściana, lewa ściana, górna ściana. Czwarty parametr to kolor napisów, a piąty to kolor wypełnienia ścian – krawędzie są czarne.

\fontsize {0.8cm} {0.96cm}\selectfont 
\unroundedletters {4} {0} { {A, B, C}} {blue} {yellow}
\edef\size {2}
\unroundedletters {6.5} {0} { {A, B, C}} {blue} {yellow}
\fontsize {0.6cm} {0.72cm}\selectfont 
\letters {4} {0} { {$\alpha$, $\beta$, $\gamma$}} {blue} {yellow}
\edef\size {2}
\letters {6.5} {0} { {$\alpha$, $\beta$, $\gamma$}} {blue} {yellow}

\face (\unroundedface)

Makrodefinicja face rysuje zaokrąglony kwadrat jednostkowy z literą. Ma cztery argumenty: pierwszy to kolor napisu, drugi to kolor wypełnienia kwadratu – krawędzie są czarne, trzeci to litera, a czwarty decyduje czy narysowana zostanie litera, czy jej odbicie symetryczne względem osi $Oy$.

\face {white} {red} {B} {1}
\pgftransformreset 
\pgftransformcm {1} {0} {0} {1} {\pgfpoint {3cm} {0}}
\face {white} {red} {B} {-1}

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

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