Makrodefinicja: letters(unroundedletters) | frontletters(unroundedfrontletters)
Makrodefinicje pomocnicze: face(unroundedface)
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)$.
\pgfpoint wymaga podania jednostek.Przykład:
\pgfpoint{2cm}{1cm}Po zdefiniowaniu przekształcenia afinicznego $A$, polecenia
\draw figura \fill 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
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.
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}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}
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}