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 się 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\cdot 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 α = 20° β = 20°
Do zmiany wartości domyślnych służą polecenia:
\edef\size{nowa_wartość_c} \computeLeft{nowa_wartość_α}{nowa_wartość_leftScale} \computeRight{nowa_wartość_β}{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ą cztery argumenty:
P
){litera1/kolor1, litera2/kolor2, litera3/kolor3}
\fontsize{0.8cm}{0.96cm}\selectfont \unroundedletters{4}{0}{{A/yellow, B/yellow, C/yellow}}{blue} \edef\size{2} \unroundedletters{6.5}{0}{{A/yellow, B/yellow, C/yellow}}{blue} ⇒
\fontsize{0.6cm}{0.72cm}\selectfont \letters{4}{0}{{$\alpha$/yellow, $\beta$/yellow, $\gamma$/yellow}}{blue} \edef\size{2} \letters{6.5}{0}{{$\alpha$/yellow, $\beta$/yellow, $\gamma$/yellow}}{blue} ⇒
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 β = 36°
Do zmiany wartości domyślnych służą polecenia:
\edef\size{nowa_wartość_a} \computeFront{nowa_wartość_β}{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ą cztery argumenty:
{litera1/kolor1, litera2/kolor2, litera3/kolor3}
\fontsize{0.8cm}{0.96cm}\selectfont \unroundedfrontletters{4}{0}{{A/yellow, B/yellow, C/yellow}}{blue} \edef\size{2} \unroundedfrontletters{6}{0}{{A/yellow, B/yellow, C/yellow}}{blue} ⇒
\fontsize{0.6cm}{0.72cm}\selectfont \frontletters{4}{0}{{$\alpha$/yellow, $\beta$/green, $\gamma$/yellow}}{blue} \edef\size{2} \frontletters{6}{0}{{$\alpha$/green, $\beta$/yellow, $\gamma$/green}}{blue} ⇒
Lewe kostki mają domyślną długość krawędzi pionowej ($3$), polecenie
\edef\size{2}
Makrodefinicja face
rysuje zaokrąglony kwadrat jednostkowy z literą. Ma cztery argumenty:
\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.
Przykład:
\unroundedface{black}{white!50!red}{B}{1} \pgftransformreset \pgftransformcm{1}{0}{0}{1}{\pgfpoint{3cm}{0}} \unroundedface{black}{white!50!red}{B}{-1} ⇒