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}