diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/rubik/rubikexamples.tex')
-rw-r--r-- | Master/texmf-dist/doc/latex/rubik/rubikexamples.tex | 1313 |
1 files changed, 1313 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/rubik/rubikexamples.tex b/Master/texmf-dist/doc/latex/rubik/rubikexamples.tex new file mode 100644 index 00000000000..053efe2e17e --- /dev/null +++ b/Master/texmf-dist/doc/latex/rubik/rubikexamples.tex @@ -0,0 +1,1313 @@ +%% +%% rubikexamples.tex +%% March 03, 2017 +%% Requires rubik bundle v4.0 and also the tikz package +%% Part of the Rubik bundle (www.ctan.org/pkg/rubik) +%% authors: RWD Nickalls & A Syropoulos +%%--------NOTE------------------------------------------- +%% USAGE: (pdf)latex --shell-escape rubikexamples.tex +%% run three times to get all labels and fig nos correct +%%------------------------------------------------------- +\documentclass[a4paper]{article} +%------rubik---------- +\usepackage{tikz} %% load tikz BEFORE rubikcube +\usepackage{rubikcube} +\usepackage{rubikrotation} +\usepackage{rubikpatterns} +%------LUA----------- +% LuaTeX is a Unicode engine (as is XeTeX) +\usepackage{ifluatex} +\ifluatex + \usepackage{fontspec} +\fi +%-------------------- +\usepackage{url} +\usepackage{ifpdf} +\usepackage{lmodern} +%--------------------- +\ifpdf + \usepackage[verbose]{microtype} + \usepackage{cmap} + \usepackage[pdfencoding=auto]{hyperref} + + \hypersetup{% + pdftitle={rubikexamples.pdf}, + pdfsubject={Rubik cube, Rubik bundle}, + pdfkeywords={Rubik cube LaTeX} + } +\fi +%%------------------- + + +%------------- +\pagestyle{myheadings} +\markright{\texttt{rubikexamples.pdf} \ \ +(Rubik bundle v4.0, March 03, 2017) \hspace{0.5cm}\texttt{www.ctan.org/pkg/rubik}} +%----------- +%% brace and bracket +\newcommand{\Rubikbracket}[1]{$\left(\mbox{#1}\right)$} +\newcommand{\Rubikbrace}[1]{$\left\{\mbox{#1}\right\}$} +\newcommand{\cubenumber}[1]{\strut\raisebox{1cm}{#1}} +\newcommand{\leftface}{\textsc{left}\ face} +\newcommand{\rightface}{\textsc{right}\ face} +\newcommand{\upface}{\textsc{up}\ face} +\newcommand{\downface}{\textsc{down}\ face} +\newcommand{\frontface}{\textsc{front}\ face} +\newcommand{\backface}{\textsc{back}\ face} +%--------------------------------- +%% increase text height and width +\addtolength{\oddsidemargin}{-1.5cm} +\addtolength{\textwidth}{3cm} +\addtolength{\textheight}{1cm} +%---------------------- +\begin{document} + +\ifpdf\pdfbookmark[1]{Title}{Title}\fi +\title{Rubik examples\\ +\smallskip\normalsize\texttt{www.ctan.org/tex-archives/macros/latex/contrib/rubik/rubikexamples.pdf} +\,\footnote{This file is part of the Rubik bundle. To generate this file, +use the following command: \newline \texttt{\$ pdflatex --shell-escape rubikexamples.tex}}} +\author{RWD Nickalls\,\footnote{email: \textsf{dick@nickalls.org}}% + \ \ \& A Syropoulos\,\footnote{email: \textsf{asyropoulos@yahoo.com}}} +\date{03 March 2017 (v4.0)} +\maketitle + + +%%------------------ +\section{Preliminaries} + + +These examples were generated using the \TeX\ +Rubik bundle\,\footnote{\url{http://www.ctan.org/pkg/rubik}} v4.0. They assume some +familiarity with the three complementary packages \textsc{rubikcube}, +\textsc{rubikrotation} and \textsc{rubikpatterns}. For~documentation see the files: + +\begin{quote} +\begin{verbatim} +rubikcube.pdf +rubikrotation.pdf +rubikpatterns.pdf +rubikpatternsLIST.pdf +\end{verbatim} +\end{quote} + + +This file requires the following packages: \texttt{tikz, rubikcube, rubikrotation, +rubikpatterns}; note that the \texttt{tikz} package must be loaded \textit{before} +the \texttt{rubikcube} package. + +This file needs to be run using the \verb!--shell-escape! command-line option; +for example: +\begin{quote} +\begin{verbatim} +pdflatex --shell-escape rubikexample.tex +\end{verbatim} +\end{quote} +This is because nearly all the examples make use of the \verb!\RubikRotation! +command, which calls the Perl script \texttt{rubikrotation.pl}. +If you do forget to use the command-line switch, the file will still run, but +all the cubes will remain in the initial unprocessed configuration. + + +\subsection{Environments} + +When using the Rubik bundle one sometimes needs to be mindful of the various +\LaTeX\ environments in which Rubik commands are placed (e.g.,~the figure, +minipage and TikZ picture environments), since these environments restrict +the actions of commands they contain to the particular environment. +The \verb!\ShowCube! command is also relevant here, since it is a +minipage-wrapper for the TikZ picture environment. Only Rubik \verb!\Draw..! +commands actually need to be inside a TikZ picture environment. + +This issue arises because the Rubik bundle allows you to create figures +showing different stages during a sequence of rotations. Consequently +the effects of commands executed inside an environment (especially +commands which determine the colour-state or rotations), may not be +apparent to subsequent commands outside that particular environment. +See Example~3 for an illustration of how to handle environments. + +\pagebreak + +%%------------------ +\section{Examples} + +\subsection{Sixspot} +\typeout{---Example (sixspot)} + +In Figure~\ref{fig:cubeincube} we show the so-called ``sixspot'' configuration, + generated from a solved cube using the rotation sequence +\rr{U}, \rr{Dp}, \rr{R}, \rr{Lp}, \rr{F}, \rr{Bp}, \rr{U}, \rr{Dp}. + +%%--------FIGURE 1 ----------- +\begin{figure}[hbt] +\centering +\RubikCubeSolved +\RubikRotation{\sixspot} +\ShowCube{7cm}{0.7}{\DrawRubikCubeSF} +\caption{\label{fig:cubeincube}The `sixspot' configuration.} +\end{figure} +%---------------- + +{\noindent}Creating a macro to hold a rotation sequence greatly facilitates +their use, as follows: +\begin{quote} +\begin{verbatim} +\newcommand{\sixspot}{[sixspot],U,Dp,R,Lp,F,Bp,U,Dp} +\end{verbatim} +\end{quote} +We can now process this sequence using its macro name as an argument for the +\verb!\RubikRotation! command. The code used for the above Figure uses the +\verb!\ShowCube{}{}{}! command for which \verb!#1! is the minipage width, \verb!#2! +is the tikzpicture scale factor (0--1), and \verb!#3! can include \textsc{rubikcube} +package \verb!\Draw..! commands, and any commands which are valid for use in a +TikZ \texttt{tikzpicture} environment. The code for the above figure is as follows: +\begin{quote} +\begin{verbatim} +\begin{figure}[hbt] + \centering + \RubikCubeSolved + \RubikRotation{\sixspot} + \ShowCube{7cm}{0.7}{\DrawRubikCubeSF} +\caption{...} +\end{figure} +\end{verbatim} +\end{quote} + +Note that the sixspot sequence is a so-called `order~3' sequence, which means that +running the `sixspot' sequence 3 times returns the cube to its original `solved' +state. The~command for processing it three times is \verb!\RubikRotation[3]{\sixspot}!. + +Note that the semi-flat form of the cube here is generated by the + \verb!\DrawRubikCubeSF! command, where the terminal SF denotes the Semi-Flat form. + + + +\subsubsection{Log-file extract} + +Users may find it instructive to inspect the the log-file and follow the dynamic +interaction between \LaTeX\ and the Perl script. +This is easy to follow, since output by \texttt{rubikrotation.sty} is prefixed +by 3 dashes (\verb!---!), while output by the Perl script is prefixed by +3 dots (\verb!...!). Search for the keyword `Example', as this is written to +the log-file at the start of each example. + +The following is the log-file extract associated with Example~1 (from the +author's Debian Linux platform). + +\begin{quote} +\begin{verbatim} +---Example (sixspot) +LaTeX Font Info: Try loading font information for T1+cmss on input line 134. + +(/usr/local/texlive/2016/texmf-dist/tex/latex/base/t1cmss.fd +File: t1cmss.fd 2014/09/29 v2.5h Standard LaTeX font definitions +) +---TeX process (rubikrotation.sty)------- +---NEW rotation command------------------ +---command = RubikRotation[1]{[SixSpot],U,Dp,R,Lp,F,Bp,U,Dp,<(8q*, 8f*)>} +---writing current Rubik state to file rubikstate.dat +\openout7 = `rubikstate.dat'. + +\ourRRcounter=\count121 +---CALLing Perl script (rubikrotation.pl) +runsystem(perl rubikrotation.pl -i rubikstate.dat -o rubikstateNEW.dat)...execu +ted. + +---inputting NEW datafile (data written by Perl script) +(./rubikstateNEW.dat + +...PERL process.................................. +...script = rubikrotation.pl v4.0 (03 March 2017) +...reading the current rubik state (from File: rubikstate.dat) +...up,W,W,W,W,W,W,W,W,W +...down,Y,Y,Y,Y,Y,Y,Y,Y,Y +...left,B,B,B,B,B,B,B,B,B +...right,G,G,G,G,G,G,G,G,G +...front,O,O,O,O,O,O,O,O,O +...back,R,R,R,R,R,R,R,R,R +... +...command=checkstate +...checking state of cube +...cubiesum = 54 (Red=9, Or=9, Ye=9, Gr=9, Bl=9, Wh=9, X=0) +... +...command=rotation,[SixSpot],U,Dp,R,Lp,F,Bp,U,Dp,<(8q*, 8f*)> +...dataline = rotation,[SixSpot],U,Dp,R,Lp,F,Bp,U,Dp,<(8q*; 8f*)> +...[SixSpot] is a label OK +...rotation U, OK +...rotation Dp, OK +...rotation R, OK +...rotation Lp, OK +...rotation F, OK +...rotation Bp, OK +...rotation U, OK +...rotation Dp, OK +...writing new Rubik state to file rubikstateNEW.dat +...SequenceName = SixSpot +...SequenceInfo = (8q*; 8f*) +...SequenceShort = [SixSpot],U,Dp,R,Lp,F,Bp,U,Dp +...SequenceLong = U,Dp,R,Lp,F,Bp,U,Dp +) +\end{verbatim} +\end{quote} + + + +\pagebreak +%%------------------------- + +\subsection{ShowRubikErrors} +\typeout{---Example (ShowRubikErrors)} + + + In this example we demonstrate the use of the \verb!\ShowRubikErrors! command, + which places a copy of the Perl output file \verb!rubikstateERRORS.dat! + underneath the graphic so you can see a list of all the errors, if any. + Note that this example is similar to the previous one except that we have + introduced several errors---e.g.,~bad minipage width, typos, as well as + some animals---into the rotation sequence). + It is important to note that the \verb!\ShowRubikErrors! command must be + placed \textit{after} the TikZ picture environment (i.e.,~in this case after +the \verb!\ShowCube! command), or even at the end of the document. +Note that full details of all errors are also included in the .log file. + +%%--------FIGURE 2 ----------- + +\RubikCubeSolved +\RubikRotation{[sixspot],U,Dp,R,Lp,F,Bp,U,Dpppp,cat,dog} + +\begin{figure}[hbt] + \centering + \ShowCubeF{4.5cm}{0.5}{\DrawRubikCubeF} + \ShowRubikErrors +\parbox{0.8\textwidth}{% +\caption{\label{fig:cubeincubeE}The same `sixspot' sequence of rotations as shown +in Example~1, but now with some errors (wrong minipage width, typos and some +animals\,!) in the rotation sequence (it \textit{should} be just +\texttt{U,Dp,R,Lp,F,Bp,U,Dp}).}} +\end{figure} + +{\noindent}In this example we have used the F version of the \verb!\ShowCube! +command (\verb!\ShowCubeF!) which places an fbox around the image so you can see the +extent of any white space etc. This reveals that the set minipage-width ($4.5$cm) in +the \verb!\ShowCubeF! command---see code below---is too narrow: it should be +5cm ($10 \times 0.5$) to just include the whole image (i.e.,~$10 \times$ the TikZ +scale-factor in this case). +Once fixed, we can remove the F from the \verb!\ShowCubeF! command. +Note also that only `\verb!\Draw...!' commands really need to be inside the TikZ +picture environment (i.e.,~inside the \verb!\ShowCube! command). The above figure +was generated by the following code. +%----------------- +\begin{quote} +\begin{verbatim} +\RubikCubeSolved +\RubikRotation{[sixspot],U,Dp,R,Lp,F,Bp,U,Dpppp,cat,dog} +\begin{figure}[hbt] + \centering + \ShowCubeF{4.5cm}{0.7}{\DrawRubikCubeF} + \ShowRubikErrors +\caption{....} +\end{figure} +\end{verbatim} +\end{quote} +Even if the \verb!\ShowRubikErrors! command is not used, it is always a good idea +to check the file \verb!rubikstateERRORS.dat! after a \LaTeX\ run, since this +file will also reveal any errors. + +Note that the completely flat form of the cube here is generated by the + \verb!\DrawRubikCubeF! command, where the terminal F denotes the Flat form. + + + +\pagebreak +%---------------------- + +\subsection{Environments} +\typeout{---Example (Environments)} + + +In this example we highlight the fact that Rubik commands used inside a \LaTeX\ +environment remain local to that environment, and how this can sometimes be +problematic. Commands whose reach is meant to be more global need to be +executed outside such environments, where they can implement global colour +settings, which will then be accessible to Rubik \verb!\Draw..! commands inside +subsequent environments. + +Since we are drawing images, this is primarily an issue +with the the \verb!\minipage!, \verb!\figure!, and TikZ picture environments. +Consequently, it is generally best when drawing a sequence of cubes to reserve +the TikZ picture environment only for Rubik \verb!\Draw..! commands and TikZ +commands. Importantly, this also applies to the commonly used \verb!\ShowCube! +command, since this is a minipage-wrapper for the TikZ picture environment +(see the \textsc{rubikcube} package documentation). + +In this example the first cube (9a) uses a \verb!\RubikCubeSolved! command +\textit{inside} a \verb!\ShowCube! environment. However, if we now perform the +rotation \textRubik{R}\ (using the command \verb!\RubikRotation{R}!) this results +in a quite unexpected effect on cube (9b) (and obviously not correct). This is because + the effect of the initial \verb!\RubikCubeSolved! command + (setting a new colour-state) is not visible outside its \verb!\ShowCube! + environment, and hence the subsequent \verb!\RubikRotation{R}! command is unaware + of this recent attempt to update the global colour-state information. + It turns out that this was actually last updated following the action of the \textbackslash\texttt{RubikRotation\{[sixspot],....\}} command used in +Example~2, being the last colour-state command executed \textit{outside} an +environment (a \texttt{figure} environment in that example). Consequently, +the strange form of cube (9b) is not what we expected. + + +\medskip +\noindent% +\cubenumber{9a}% +\ShowCube{2cm}{0.5}{% + \RubikCubeSolved% + \DrawRubikCubeRU}% +\quad\Rubik{R}% +\RubikRotation{R}% +\cubenumber{9b}% +\ShowCube{2cm}{0.5}{\DrawRubikCubeRU}% +%--------------- +\hspace{5mm} +\begin{minipage}{0.5\textwidth} +\begin{verbatim} +\usepackage{tikz,rubikcube,rubikrotation} +\newcommand{\cubenumber}[1]{\strut\raisebox{1cm}{#1}} +... +\cubenumber{9a}% +\ShowCube{2cm}{0.5}{% + \RubikCubeSolved% + \DrawRubikCubeRU% + }% +\quad\Rubik{R}% +\RubikRotation{R}% +\cubenumber{9b}% +\ShowCube{2cm}{0.5}{\DrawRubikCubeRU}% +\end{verbatim} +\end{minipage} + +\bigskip + +If we now bring the \verb!\RubikCubeSolved! command out and place it before +the \verb!\ShowCube! command then its `state' information becomes globally +accessible (i.e.,~colour-state gets updated), and therefore gets used by the +\verb!\RubikRotation{R}! command, and hence cube (9d) is rendered correctly. + +\bigskip + +\noindent% +\RubikCubeSolved% +\cubenumber{9c}% +\ShowCube{2cm}{0.5}{\DrawRubikCubeRU}% +\quad\Rubik{R}% +\RubikRotation{R}% +\cubenumber{9d}% +\ShowCube{2cm}{0.5}{\DrawRubikCubeRU}% +%--------------- +\hspace{5mm} +\begin{minipage}{0.5\textwidth} +\begin{verbatim} +\RubikCubeSolved% +\cubenumber{9c}% +\ShowCube{2cm}{0.5}{\DrawRubikCubeRU}% +\quad\Rubik{R}% +\RubikRotation{R}% +\cubenumber{9d}% +\ShowCube{2cm}{0.5}{\DrawRubikCubeRU}% +\end{minipage} +\end{verbatim} +\end{minipage} + + + + +\pagebreak +%---------------------- +\subsection{Coordinates} +\typeout{---Example (coordinates)} + + +For all cubes the origin of coordinates is defined as the bottom left corner of +the \frontface. Consequently, it is easy to determine the coordinates of points +and hence draw lines, circles, and place lettering or other objects using the +standard TikZ \verb!\draw..! and \verb!\node..! commands. Note that for +convenience point $P$ is designed to be $(-1,-1)$ on the 2D view. +(The~following diagram is Fig~1 from the \textsc{rubikcube} package documentation). + + +\begin{figure}[hbt] +\centering +\RubikFaceFrontAll{X} % X = default = grey +\ShowCube{5.6cm}{0.7}{% + \DrawFlatFront + +\draw[line join=round,line cap=round,ultra thick] (0,0) -- (0,4); % Y +\draw[line join=round,line cap=round,ultra thick] (0,0) -- (4,0); % X + +%draw labels +\node (Ylabel) at (-0.35, 3.8) {$Y$}; +\node (Xlabel) at ( 3.8, -0.4) {$X$}; + + +%%----------draw the Rubik faces-------- +%% outline Front face +\draw[line join=round,line cap=round,ultra thick]% + (0,3) -- (-1,2) -- (-1,-1) -- (2,-1) -- (3,0); +%% +%% outline Down face +\draw[line join=round,line cap=round,ultra thick]% + (-1,-1) -- (0, 0); +%% +%% +%% draw labels +\node (Y0) at (-0.4, 0) [blue]{$0$}; +\node (Y1) at (-0.4, 1) [blue]{$1$}; +\node (Y2) at (-0.4, 2) [blue]{$2$}; +\node (Y3) at (-0.4, 3) [blue]{$3$}; +%% +\node (X0) at (0, -0.5) [blue]{$0$}; +\node (X1) at (1, -0.5) [blue]{$1$}; +\node (X2) at (2, -0.5) [blue]{$2$}; +\node (X3) at (3, -0.5) [blue]{$3$}; +%% +\node (P) at (-2.4, -1) [blue]{$P\,(-1,-1)$}; +} +\end{figure} + + + +{\noindent}The code for the figure is given below. + +We draw everything in the \verb!\ShowCube! environment; the \frontface\ +in grey (colour code = \texttt{X}) using the Rubik command +\verb!\DrawFlatFront{X}!, and then draw all the lines and text using standard +TikZ commands. The correct minipage-width argument (5.6cm) for the +\verb!\ShowCube! command is determined by trial-and-error, using the `fbox' +form of the command (\verb!\ShowCubeF!), and then the `F' is removed +($\rightarrow$ \verb!\ShowCube!). In order to avoid confusion, all Rubik commands +start with a capital letter (e.g.,~\verb!\Draw..!), while all TikZ commands +start with a lower-case letter (e.g.,~\verb!\draw..!). + +\begin{quote} +\begin{verbatim} +\begin{figure}[hbt] +\centering +\RubikFaceFrontAll{X}% X = default non-colour (grey) +\ShowCube{5.6cm}{0.7}{% + \DrawFlatFront + \draw[line join=round,line cap=round,ultra thick] (0,0) -- (0,4);% Yaxis + \draw[line join=round,line cap=round,ultra thick] (0,0) -- (4,0);% Xaxis + \node (Ylabel) at (-0.35, 3.8) {$Y$}; + \node (Xlabel) at ( 3.8, -0.4) {$X$}; + %% outline Left and Down faces + \draw[line join=round,line cap=round,ultra thick]% + (0,3) -- (-1,2) -- (-1,-1) -- (2,-1) -- (3,0); + \draw[line join=round,line cap=round,ultra thick]% + (-1,-1) -- (0, 0); + \node (Y0) at (-0.4, 0) [blue]{$0$}; + \node (Y1) at (-0.4, 1) [blue]{$1$}; + \node (Y2) at (-0.4, 2) [blue]{$2$}; + \node (Y3) at (-0.4, 3) [blue]{$3$}; + \node (X0) at (0, -0.5) [blue]{$0$}; + \node (X1) at (1, -0.5) [blue]{$1$}; + \node (X2) at (2, -0.5) [blue]{$2$}; + \node (X3) at (3, -0.5) [blue]{$3$}; + \node (P) at (-2.4, -1) [blue]{$P\,(-1,-1)$}; + } +\end{figure} +\end{verbatim} +\end{quote} + + + + +\pagebreak +%---------------------- +\subsection{Face notation} +\typeout{---Example (face notation)} + + +%% = my Fig A (rubikcube.dtx) + +The following diagram is Fig~2 from the \textsc{rubikcube} package documentation. + +\begin{figure}[htb] +\centering% +\RubikFaceUpAll{Y} +\RubikFaceFrontAll{G} +\RubikFaceRightAll{O} +\ShowCubeF{5cm}{0.6}{% +\DrawRubikCubeRU% +%%----------------- + +%% Right +\draw[line width=2pt,color=blue,->] (3.5,2) -- (5.3, 2); +\node (R) at (4.6, 2.5) [blue]{\textbf{\textsf{R}}}; +\node (x) at (5.8, 2) [blue]{\textbf{\textsf{x}}}; + +%%Left +\draw[line width=2pt,color=blue] (-0.2,2) -- (-1.5, 2); +\node (L) at (-1.1, 2.5) [blue]{\textbf{\textsf{L}}}; + +%%Up +\draw[line width=2pt,color=blue,->] (2, 3.5) -- (2, 5.5); +\node (U) at (1.4, 4.7) [blue]{\textbf{\textsf{U}}}; +\node (y) at (2, 6.1) [blue]{\textbf{\textsf{y}}}; + +%%Down +\draw[line width=2pt,color=blue] (2, -0.2) -- (2, -1.5); +\node (D) at (2.6, -1.1) [blue]{\textbf{\textsf{D}}}; + + +%%Front +\draw[line width=2pt,color=blue,->] (1.5, 1.5) -- (0, -1); +\node (F) at (0.7, -0.7) [blue]{\textbf{\textsf{F}}}; +\node (z) at (-0.3, -1.4) [blue]{\textbf{\textsf{z}}}; + +%%Back +\draw[line width=2pt,color=blue] (3.2, 4.2) -- (4, 5.5); +\node (B) at (4.4, 5) [blue]{\textbf{\textsf{B}}}; +%% +} +\end{figure} + +{\noindent}The code for the figure is as follows +(the origin $(0,0)$ is at the bottom left corner of the \frontface). + + +\begin{quote} +\begin{verbatim} +\begin{figure}[htb] +\centering% +\RubikFaceUpAll{Y} +\RubikFaceFrontAll{G} +\RubikFaceRightAll{O} +\ShowCubeF{5cm}{0.6}{% + \DrawRubikCubeRU% + %% Right + \draw[line width=2pt,color=blue,->] (3.5,2) -- (5.3, 2); + \node (R) at (4.6, 2.5) [blue]{\textbf{\textsf{R}}}; + \node (x) at (5.8, 2) [blue]{\textbf{\textsf{x}}}; + %%Left + \draw[line width=2pt,color=blue] (-0.2,2) -- (-1.5, 2); + \node (L) at (-1.1, 2.5) [blue]{\textbf{\textsf{L}}}; + %%Up + \draw[line width=2pt,color=blue,->] (2, 3.5) -- (2, 5.5); + \node (U) at (1.4, 4.7) [blue]{\textbf{\textsf{U}}}; + \node (y) at (2, 6.1) [blue]{\textbf{\textsf{y}}}; + %%Down + \draw[line width=2pt,color=blue] (2, -0.2) -- (2, -1.5); + \node (D) at (2.6, -1.1) [blue]{\textbf{\textsf{D}}}; + %%Front + \draw[line width=2pt,color=blue,->] (1.5, 1.5) -- (0, -1); + \node (F) at (0.7, -0.7) [blue]{\textbf{\textsf{F}}}; + \node (z) at (-0.3, -1.4) [blue]{\textbf{\textsf{z}}}; + %%Back + \draw[line width=2pt,color=blue] (3.2, 4.2) -- (4, 5.5); + \node (B) at (4.4, 5) [blue]{\textbf{\textsf{B}}}; + } +\end{figure} +\end{verbatim} +\end{quote} + + + + + +\pagebreak +%---------------------- +\subsection{Grey cube} +\label{sec:greycube} +\typeout{---Example (grey cube)} + + +When explaining elementary layer~1 moves, it can be useful to use the `grey cube' +(\verb!\RubikCubeGrey!), as this sets up only the central cubie on each face; +we have shown the first cube in Semi-Flat (SF) mode simply to show how the grey +cube is configured (note that an `all-grey' cube is also available: +\verb!\RubikCubeAllGrey!). Both of these grey cube commands will also accept +the word `gray' (to be consistent with TikZ). + +In this example, we show how to position a single `flipped' white/orange edge +cubie in the top layer. + + +\begin{figure}[hbt] + +\centering% +\RubikCubeGrey% +\RubikFaceUp{X}{X}{X}% + {X}{W}{O}% + {X}{X}{X}% + +\RubikFaceRight{X}{W}{X} + {X}{G}{X} + {X}{X}{X} +% +\cubenumber{1}% +\ShowCube{5cm}{0.5}{\DrawRubikCubeSF}% +%------------------ +\quad\Rubik{Rp}\RubikRotation{Rp} +\cubenumber{2}% +\ShowCube{2cm}{0.5}{\DrawRubikCube}% +%----------------------- +\quad\Rubik{Fp}\RubikRotation{Fp} +\cubenumber{3}% +\ShowCube{2cm}{0.5}{\DrawRubikCube}% +%----------------------- +\end{figure} + + + +{\noindent}The code for the figure is given below. +After setting up the first cube, we then just use the \verb!\RubikRotation! +command to generate the remaining cubes. +The colours are coded as follows: R~(red), O~(orange), Y~(yellow), +G~(green), B~(blue), W~(white), and X~(grey). + +\begin{quote} +\begin{verbatim} +\usepackage{tikz,rubikcube,rubikrotation} +\newcommand{\cubenumber}[1]{\strut\raisebox{1cm}{#1}} +... +\begin{figure}[hbt] +\centering +% set up the first cube +\RubikCubeGrey% +\RubikFaceUp{X}{X}{X}% + {X}{W}{O}% + {X}{X}{X}% + +\RubikFaceRight{X}{W}{X} + {X}{G}{X} + {X}{X}{X} +\cubenumber{1}% +\ShowCube{5cm}{0.5}{\DrawRubikCubeSF}% +% +\quad\Rubik{Rp}\RubikRotation{Rp} +\cubenumber{2}% +\ShowCube{2cm}{0.5}{\DrawRubikCube}% +% +\quad\Rubik{Fp}\RubikRotation{Fp} +\cubenumber{3}% +\ShowCube{2cm}{0.5}{\DrawRubikCube}% +\end{figure} +\end{verbatim} +\end{quote} + + + + +\pagebreak + +%------------------------------- +\subsection{Scramble a cube} +\label{sec:scrambleacube} +\typeout{---Example (scramble a cube)} + + +In this example we use the \verb!\RubikRotation! command to scramble a `solved' +Rubik cube via a sequence of 120 random rotations, using the following command +(the details of the process can be seen in the \texttt{.log} file): +\begin{quote} +\begin{verbatim} +\RubikRotation{random,120} +\end{verbatim} +\end{quote} +On this occasion we draw the cube Flat (F) using the command \verb!\DrawRubikCubeF!. +In this example, we also make use of the \verb!\SaveRubikState{}! command to save +the final configuration (state) to a file (\texttt{rubikexampfig4.tex}) using +\verb!\SaveRubikState{rubikexampfig4.tex}!, +so we can display the same cube configuration later but in a different format +(we show it again in the following example (Example~\ref{sec:saverubikstate}). +Note that since we are using a random sequence, it follows that each +time this file is run not only will a visually different cube be generated, +but the same state will be shown in both +here and in Example~\ref{sec:saverubikstate}. +%%--------FIGURE 3 ----------- +\begin{figure}[hbt] + \centering + \RubikCubeSolved + \RubikRotation{random,120} + \SaveRubikState{rubikexampfig4.tex} + \ShowCubeF{6cm}{0.5}{\DrawRubikCubeF} +\parbox{0.7\textwidth}{% +\caption{\label{fig:randomone}This shows a cube generated by 120 random rotations}} +\end{figure} +%---------------- +\begin{quote} +\begin{verbatim} +\usepackage{tikz,rubikcube,rubikrotation} +... +\begin{figure}[hbt] + \centering + \RubikCubeSolved + \RubikRotation{random,120} + \SaveRubikState{rubikexampfig4.tex} + \ShowCubeF{6cm}{0.5}{\DrawRubikCubeF} +\caption{....} +\end{figure} +\end{verbatim} +\end{quote} + +{\noindent}Q: How do we determine the minipage-width ($7.2$cm) in the +\verb!\ShowCube! command? + +\smallskip + +{\noindent}A: The object is 12~cubie squares wide. Since the TikZ scale-factor +argument of the \verb!\ShowCube! command (cms/unit length; default = 1) in this +case is set to~$0.5$, then the true width of the image will +be $12 \times 0.5 = 6$\,cm. Note that here we have used the \verb!\ShowCubeF! +command and so we can see that this is correct. Changing the scale-factor will +change the image size and hence a new width argument will be required to just fit +the image. + +Note that in this particular case (where there is only a single image in the +`figure' environment), since the \verb!\ShowCube! command places the image +(in a TikZ picture environment) centrally inside a minipage, the image will +in fact be centrally placed in the \verb!\textwidth! provided the image +is \textit{smaller} than the fbox---i.e.,~if we used instead a minipage-width of, +say, 12\,cm the image would still appear centred in the \verb!\textwidth! in +this case. However, when there are several images in the `figure', then the spacing +may appear strange unless each image closely fits its own minipage-width etc. +It is often useful, therefore, to check the size of the fbox (using the +\verb!\ShowCubeF! command) as we have done here. + + + +\pagebreak + +%---------------------- +\subsection{SaveRubikState} +\label{sec:saverubikstate} +\typeout{---Example (SaveRubikState)} + +In this example we display a cube having the same state as that shown in +the previous example (Example~\ref{sec:scrambleacube}). The configuration state +was saved from Figure~\ref{fig:randomone} using the command +\verb!\SaveRubikState{rubikexampfig4.tex}!, and then input here +using \verb!\input{rubikexampfig4.tex}!. These commands therefore allow the +state of a previous cube to be saved to a file, and then displayed again +later in a different format. +%%-----------FIGURE 4 ----------- +\begin{figure}[hbt] + \centering + \input{rubikexampfig4.tex} + \ShowCube{4cm}{0.8}{\DrawRubikCubeLD} +\parbox{0.7\textwidth}{% +\caption{\label{fig:randomtwo}This shows a Rubik cube in exactly the same +state as the one shown in Figure~\ref{fig:randomone}} } +\end{figure} +%%--------------------------------- +\begin{quote} +\begin{verbatim} +\usepackage{tikz,rubikcube,rubikrotation} +... +\begin{figure}[hbt] + \centering + \input{rubikexampfig4.tex} + \Showcube{4cm}{0.8}{\DrawRubikCubeLD} +\caption{....} +\end{figure} +\end{verbatim} +\end{quote} + + + + +\pagebreak +%---------------------- +\subsection{Series of cubes} +\typeout{---Example (series of cubes)} + +Here we show a convenient way of displaying a series of small cubes showing +a sequence of rotations (\rr{U}, \rr{R}, \rr{F}). + + +\begin{figure}[hbt] +\centering +\RubikCubeSolved +\ShowCube{2cm}{0.5}{\DrawRubikCubeRU}% +\quad\Rubik{U}\quad% +\RubikRotation{U}\ShowCube{2cm}{0.5}{\DrawRubikCubeRU}% +\quad\Rubik{R}\quad% +\RubikRotation{R}\ShowCube{2cm}{0.5}{\DrawRubikCubeRU}% +\quad\Rubik{F}\quad% +\RubikRotation{F}\ShowCube{2cm}{0.5}{\DrawRubikCubeRU}% +\caption{The rotations \rr{U}, \rr{R}, \rr{F}\ on a solved cube.} +\end{figure} + +{\noindent}The code for the above sequence is as follows: +\begin{quote} +\begin{verbatim} +\usepackage{tikz,rubikcube,rubikrotation} +... +\begin{figure}[hbt] + \centering% + \RubikCubeSolved% + \ShowCube{2cm}{0.5}{\DrawRubikCubeRU}% + \quad\Rubik{U}\quad% + \RubikRotation{U}\ShowCube{2cm}{0.5}{\DrawRubikCubeRU}% + \quad\Rubik{R}\quad% + \RubikRotation{R}\ShowCube{2cm}{0.5}{\DrawRubikCubeRU}% + \quad\Rubik{F}\quad% + \RubikRotation{F}\ShowCube{2cm}{0.5}{\DrawRubikCubeRU}% +\caption{The rotations \rr{U}, \rr{R}, \rr{F}\ on a solved cube.} +\end{figure} +\end{verbatim} +\end{quote} + +{\noindent}Note that we are starting with the default white-opposite-yellow (WY) +solved cube, using the command \verb!\RubikCubeSolved!, which is functionally +the same as the more explicit \verb!\RubikCubeSolvedWY! (if you forget the +terminal two letters then at least you will get a `solved' cube). +A white-opposite-blue (WB) solved cube is available as \verb!\RubikCubeSolvedWB!. + + + + +\pagebreak +%---------------------- +\subsection{Rotation sequence} +\typeout{---Example (rotation sequence)} + +We now explore using the named Rubik cube rotation sequences and associated +patterns available in the \textsc{rubikpatterns} package---a small macro database +(see the \textsc{rubikpatterns} documentation, and also its companion file \texttt{rubikpatternsLIST.pdf}). Having the sequences available as macros is +very convenient since (a)~it avoids making errors when typing them out, +and (b)~allows the easy application of software tools. + + A Rubik pattern is the configuration generated by a sequence of rotations + (or `moves') from some initial starting configuration (typically a `solved' + configuration). For example, FourSpot is a well known pattern which we can + generate from a solved Rubik cube using the macro \verb!\FourSpot!; it is + defined as follows: +\begin{quote} +\begin{verbatim} +\newcommand{\FourSpot}{[FourSpot],F2,B2,U,Dp,R2,L2,U,Dp,<(12q*, 8f*)>} +\newcommand{\fourspot}{\FourSpot} +\end{verbatim} +\end{quote} + Note that for convenience the macros names in the \textsc{rubikpatterns} package + are defined in both upper and lower-case (i.e.,~the macros \verb!\FourSpot! + and \verb!\fourspot! are identical). The following figure shows the FourSpot + sequence and pattern. + +\bigskip + +\noindent% +\RubikCubeSolvedWY +\ShowCube{2cm}{0.5}{\DrawRubikCubeRD} +\RubikRotation{\FourSpot} +\quad\SequenceBraceA{FourSpot}{% + \ShowSequence{}{\Rubik}{\SequenceLong}% + } +\quad\ShowCube{2cm}{0.5}{\DrawRubikCubeSF} + +\bigskip + +{\noindent}The code for the above figure is as follows: + + +\begin{quote} +\begin{verbatim} +\usepackage{tikz,rubikcube,rubikrotation,rubikpatterns} +... +\noindent% +\RubikCubeSolvedWY +\ShowCube{2cm}{0.5}{\DrawRubikCubeRD} +\RubikRotation{\FourSpot} +\quad +\SequenceBraceA{FourSpot}{% + \ShowSequence{}{\Rubik}{\SequenceLong}% + } +\quad +\ShowCube{2cm}{0.5}{\DrawRubikCubeSF} +\end{verbatim} +\end{quote} +Note that we have spread the code slightly here in order to emphasise that +the \verb!\ShowSequence! command is being used as an argument for the +\verb!\SequenceBraceA! command (the `A' in the command \verb!\SequenceBraceA! +denotes that the annotation is placed Above the sequence.) +We have used a solved cube with the WY (White opposite Yellow) +configuration (\verb!\RubikCubeSolvedWY!). +The first cube is drawn from the RD (Right-Down) viewpoint (\verb!\DrawRubikCubeRD!). +The second cube is drawn from the SF (Semi-Flat) viewpoint (\verb!\DrawRubikCubeSF!) +so we can see all the faces. + +\pagebreak + +%---------------------- +\subsection{SixTs} +\typeout{---Example (SixTs)} + +A more interesting cube pattern is the SixTs configuration (from the +\textsc{rubikpatterns} package), which we now show in a slightly +different way (adding an extra face), as follows: + +\bigskip + +\noindent\hfil% +\RubikCubeSolvedWB% +\ShowCube{1.6cm}{0.4}{\DrawRubikCubeRU\DrawFlatDown{0}{-3.3}}% +\RubikRotation{\sixts} +\quad\SequenceBraceA{SixTs}{\ShowSequence{,\ }{\texttt}{\SequenceLong}} +\quad\ShowCube{2cm}{0.5}{\DrawRubikCubeRU}% +\quad\ShowCube{2cm}{0.5}{\DrawFaceFrontSide}% +\hfil + +\bigskip + +This time we have started with a solved cube having the WB configuration +(White opposite Blue), which is generated using the command +\verb!\RubikCubeSolvedWB! +(we have added the \downface\ (blue) below to reveal the colour of this +face---see note below). + +The rotation sequence is in `long-format' (expanded into +separate rotations), comma-separated and space, typewriter font, +using the command \verb!\ShowSequence{,\ }{\texttt}{\SequenceLong}!. + +The final image shows just the \frontface\ together with all the +side-bars indicating the colours of the adjacent facelets, +using the \verb!\DrawFaceFrontSide! command. The images are +separated using \verb!\quad!. +The code for the above figure is as follows: + +\begin{quote} +\begin{verbatim} +\usepackage{tikz,rubikcube,rubikrotation,rubikpatterns} +... +\noindent\hfil +\RubikCubeSolvedWB +\ShowCube{1.6cm}{0.4}{% + \DrawRubikCubeRU% + \DrawFlatDown{0}{-3.3}% + } +\RubikRotation{\SixTs} +\quad\SequenceBraceA{SixTs}{% + \ShowSequence{,\ }{\texttt}{\SequenceLong}% + } +\quad\ShowCube{2cm}{0.5}{\DrawRubikCubeRU} +\quad\ShowCube{2cm}{0.5}{\DrawFaceFrontSide} +\hfil +\end{verbatim} +\end{quote} + + + +\subsubsection*{Notes} + +\begin{enumerate} + + \item We have drawn the \downface\ of the first cube using the command +\verb!\DrawFlatDown{0}{-3.3}! where the two arguments are the $x$ and +$y$ coordinates of the \textit{bottom left} corner of the \downface\ (blue). +Note that the grid origin of all cube images coincides with the +\textit{bottom left} corner of the \frontface\ (green in this case). + +\item The first image is really just 4 units wide. This is because the 2D width +of the \textit{side} face (red) is designed to measure 1~unit wide in the +oblique view (similarly, the 2D height of the \textit{top} face also measures +just 1~unit). Consequently, since the TikZ scale factor used is $0.4$, then +the (minimum) width argument for its \verb!\ShowCube{}{}{}! command is +$4\times 0.4 = 1.6$cm., hence we have \verb!\ShowCube{1.6cm}{0.4}{...}!. + +\end{enumerate} + + + +\pagebreak +%---------------------- +\subsection{Three-edge cycle} +\typeout{---Example (three-edge cycle)} + + +The following example shows a sequence often used in solving the final layer. + The black (no flip) and magenta (flip) arrows indicate the \upface\ +cubie movement associated with the `three-edge cycle sequence +\ShowSequence{,}{\rr}{F,R,U,Rp,Up,Fp}. The blue arrows indicate so-called +collateral damage (two pairs of corner cubies swap positions) which can be fixed +at a later stage. (This diagram is from Section~13 in the +\textsc{rubikcube} package documentation). + + \bigskip% + \noindent\hfil% + \RubikCubeSolved% + \ShowCube{1.6cm}{0.4}{\DrawRubikCubeRU}% + \quad\ShowCube{1.6cm}{0.4}{% + \DrawFlatUpSide% + \draw[thick,->,color=magenta] (1.5,0.5) -- (2.4, 1.4); + \draw[thick,->] (2.5,1.5) -- (1.6, 2.4); + \draw[thick,->,color=magenta] (1.3, 2.3) -- (1.3, 0.5); + \draw[thick,<->, color=blue] (0.5,2.6) -- (2.5, 2.6); + \draw[thick,<->, color=blue] (0.5,0.3) -- (2.5, 0.3); + }% + \RubikRotation{F,R,U,Rp,Up,Fp}% + \quad\ShowSequence{}{\Rubik}{\SequenceLong}\quad$\longrightarrow$\quad% + \ShowCube{1.6cm}{0.4}{\DrawFlatUpSide}% + \hfil% + + \bigskip% + + +{\noindent}The code for the figure is as follows + + +\begin{verbatim} + \bigskip% + \noindent\hfil% + \RubikCubeSolved% + \ShowCube{1.6cm}{0.4}{\DrawRubikCubeRU}% + \quad\ShowCube{1.6cm}{0.4}{% + \DrawFlatUpSide% + \draw[thick,->,color=magenta] (1.5,0.5) -- (2.4, 1.4); + \draw[thick,->] (2.5,1.5) -- (1.6, 2.4); + \draw[thick,->,color=magenta] (1.3, 2.3) -- (1.3, 0.5); + \draw[thick,<->, color=blue] (0.5,2.6) -- (2.5, 2.6); + \draw[thick,<->, color=blue] (0.5,0.3) -- (2.5, 0.3); + }% + \RubikRotation{F,R,U,Rp,Up,Fp}% + \quad\ShowSequence{}{\Rubik}{\SequenceLong}\quad$\longrightarrow$\quad% + \ShowCube{1.6cm}{0.4}{\DrawFlatUpSide}% + \hfil% + + \bigskip +\end{verbatim} + + + + + +\pagebreak +%---------------------- +\subsection{Superflip} +\typeout{---Example (subperflip)} + + +Once you can solve Rubik's cube, then an interesting exercise is to generate +the so-called `superflip' configuration, in which all the +corners are correctly solved, while all the edges are +flipped\,\footnote{See the `superflip' entry in \textit{Wikipedia}, and also +the Kociemba website (\url{www.kociemba.org/cube.htm}); particularly the page +\url{http://kociemba.org/math/oh.htm}}. + +%--------draw the images------------- +\begin{figure}[hbt] + \centering + \RubikCubeSolved + \ShowCube{2cm}{0.5}{\DrawRubikCubeRU} + \quad$\longrightarrow$\quad% + \RubikRotation{\superflip}% + \ShowCube{2cm}{0.5}{\DrawRubikCubeLD} + \quad\quad% + \ShowCube{5cm}{0.5}{\DrawRubikCubeSF} +\caption{Two representations of the superflip configuration.} +\end{figure} +%---------------------- + +{\noindent}A superflip sequence converts the solved cube on the left +into the form on the right, using the command \verb!\RubikRotation{\superflip}!. +The full code for the above figure is as follows: +\begin{verbatim} +\usepackage{tikz,rubikcube,rubikrotation,rubikpatterns} +... +\begin{figure}[hbt] + \centering + \RubikCubeSolved + \ShowCube{2cm}{0.5}{\DrawRubikCubeRU} + \quad$\longrightarrow$\quad% + \RubikRotation{\superflip}% + \ShowCube{2cm}{0.5}{\DrawRubikCubeLD} + \quad\quad% + \ShowCube{5cm}{0.5}{\DrawRubikCubeSF} +\caption{...} +\end{figure} +\end{verbatim} + + +The following superflip sequence\,\footnote{This particular superflip sequence +(in the \textsc{rubikpatterns} package) is due to Reid (1995); +for details see the \textsc{rubikpatterns} package +documentation, and also \url{http://kociemba.org/math/oh.htm}. +Another 20-move superflip sequence (due to H Kociemba), is designated as K32466 + in \url{www.nickalls.org/dick/papers/tex/RUBIK20moves.zip}.} +has just 20 HTM rotations (Half Turn Metric: counting 180~degree turns as just +one `rotation'). Note that the \textsc{rubikpatterns} package contains this particular +superflip sequence as the macro \verb!\superflip! +(see \texttt{rubikpatterns.pdf}). Consequently the code +\verb!\ShowSequence{,}{\large\texttt}{\superflip}!, will typeset the sequence +as follows: + +\begin{center} +%% show the Short code +\ShowSequence{,}{\texttt}{\superflip} +\end{center} +Note that for convenience, the \textsc{rubikpatterns} package includes the sequence +name (in square brackets) as the first element of the associated macro. +This is possible since the contents of a comma-separated square bracket is not +actioned as a rotation when it appears as part of the argument of +the \verb!\RubikRotation! command. + +\pagebreak + +Next we present the sequence without commas in the form of hieroglyphs using +the \verb!\Rubik! font, for which we require the `expanded' \verb!\SequenceLong! +form (since the `short form' includes trailing digits---see \S\,9 in +\texttt{rubikcube.pdf}), using the code + +\begin{quote} +\begin{verbatim} +\usepackage{tikz,rubikcube,rubikrotation,rubikpatterns} +... +\RubikCubeSolved +\RubikRotation{\superflip} +\noindent\strut\hspace{-8mm}\ShowSequence{}{\Rubik}{\SequenceLong} +\end{verbatim} +\end{quote} +which gives + + +\bigskip + +\RubikCubeSolved +\RubikRotation{\superflip} +\noindent\strut\hspace{-8mm}\ShowSequence{}{\Rubik}{\SequenceLong} + + +%%--------------------------------- +\bigskip + +\subsubsection*{Equivalent sequence} + + +Interestingly, the superflip sequence is actually equivalent to +\Rubikbrace{\Rubikbracket{\Rubik{Rmp}\Rubik{Up}}4, \Rubik{yp}, \Rubik{x}}3. +Furthermore we can readily demonstrate this, as we can process this novel form +of the sequence using some useful features of the \verb!\RubikRotation! +command, as follows: + +\begin{quote} +\begin{verbatim} +\RubikCubeSolved% +\RubikRotation[3]{[superflip],(Rmp,Up)4,yp,x}% +\ShowCube{4cm}{0.4}{\DrawRubikCubeSF}% +\end{verbatim} +\end{quote} +which generates the following + +%------------------- +\begin{figure}[hbt] + \centering + \RubikCubeSolved% + \RubikRotation[3]{[shortsuper],(Rmp,Up)4,yp,x}% + \ShowCube{5cm}{0.5}{\DrawRubikCubeSF} +\end{figure} +%---------------------- +{\noindent}which is exactly the same configuration as before. +Note that to do this we had to make use of the `repeat' option \verb![3]! +as well as the \verb!(Rmp,Up)4! `repeat-block' in +the argument of the \verb!\RubikRotation! command above. + + + + +\pagebreak +%---------------------- +\subsection{Inverse sequence} +\typeout{---Example (inverse sequence)} + + +Generating the inverse of a Rubik sequence involves (a)~reversing the order of +the sequence, and (b)~inverting each rotation in the sequence +(see Sections~5.1 and 5.11 in the \textsc{rubikrotation} package documentation). + + +From the grey-cube example~(\ref{sec:greycube}) we saw that the sixspot sequence is: \verb!U,Dp,R,Lp,F,Bp,U,Dp!; +its inverse is therefore readily determined as \verb!D,Up,B,Fp,L,Rp,D,Up!. +Note that this is easy to check since the sequence generated by the +\verb!\RubikRotation! command is held by the macro \verb!\SequenceLong!. +For~example, the output of the following commands +\begin{quote} +\begin{verbatim} +\fbox{\strut\ % +The inverse of the sixspot sequence is: +\RubikRotation{\sixspot,<inverse>} +\ShowSequence{,}{\texttt}{\SequenceLong}. +} +\end{verbatim} +\end{quote} +is \quad\fbox{\strut\ % +The inverse of the sixspot sequence is: +\RubikRotation{\sixspot,<inverse>} +\ShowSequence{,}{\texttt}{\SequenceLong}. +} + +\bigskip + +A sequence and its inverse will annihilate each other when applied consecutively. +For example, in the following figure we start with a solved cube and +apply the sixspot sequence. Applying the inverse of the sixspot sequence then +results in the solved cube configuration again. + +\newcommand{\sixspotINV}{[sixspotINV],D,Up,B,Fp,L,Rp,D,Up} +\newcommand{\sixspotarrow}{$\quad\overrightarrow{\strut\textsc{sixspot}}\quad$} +\newcommand{\sixspotINVarrow}{$\quad\overrightarrow{\strut\textsc{sixspotINV}}\quad$} + +\begin{figure}[hbt] +\centering +\RubikCubeSolved% + \ShowCube{2cm}{0.5}{\DrawRubikCubeRU}\sixspotarrow% +\RubikRotation{\sixspot}% + \ShowCube{2cm}{0.5}{\DrawRubikCubeRU}\sixspotINVarrow% +\RubikRotation{\sixspotINV}% + \ShowCube{2cm}{0.5}{\DrawRubikCubeRU} +\end{figure} + +{\noindent}The code for the above figure is as follows: + +\begin{quote} +\begin{verbatim} +\usepackage{tikz,rubikcube,rubikrotation,rubikpatterns} +... +\newcommand{\sixspotINV}{[sixspotINV],D,Up,B,Fp,L,Rp,D,Up} +\newcommand{\sixspotarrow}{$\quad\overrightarrow{\strut\textsc{sixspot}}\quad$} +\newcommand{\sixspotINVarrow}{$\quad\overrightarrow{\strut\textsc{sixspotINV}}\quad$} + +\begin{figure}[hbt] +\centering +\RubikCubeSolved% + \ShowCube{2cm}{0.5}{\DrawRubikCubeRU}\sixspotarrow% +\RubikRotation{\sixspot}% + \ShowCube{2cm}{0.5}{\DrawRubikCubeRU}\sixspotINVarrow% +\RubikRotation{\sixspotINV}% + \ShowCube{2cm}{0.5}{\DrawRubikCubeRU} +\end{figure} +\end{verbatim} +\end{quote} + +\pagebreak + +A significant property of the superflip configuration is that it is its own inverse. +Consequently we can achieve a similar result simply by applying the +superflip sequence \textit{twice in succession}, as follows: + +\newcommand{\superfliparrow}{$\quad\overrightarrow{\strut\textsc{superflip}}\quad$} + + +\begin{figure}[hbt] +\centering +\RubikCubeSolved% + \ShowCube{2cm}{0.5}{\DrawRubikCubeRU}\superfliparrow% +\RubikRotation{\superflip}% + \ShowCube{2cm}{0.5}{\DrawRubikCubeRU}\superfliparrow% +\RubikRotation{\superflip}% + \ShowCube{2cm}{0.5}{\DrawRubikCubeRU} +\end{figure} + + + + +\begin{center} +------ END ------ +\end{center} + +\end{document}
\ No newline at end of file |