Safe Haskell | None |
---|---|
Language | Haskell2010 |
- solvedRubiksCube :: RubiksCube (Colour Double)
- drawSide :: Renderable (Path R2) b => R2 -> R2 -> Side (Colour Double) -> Diagram b R2
- drawFoldingPattern :: Renderable (Path R2) b => RubiksCube (Colour Double) -> Diagram b R2
- data Offsets = Offsets {}
- offsetX :: Lens' Offsets Double
- offsetY :: Lens' Offsets Double
- drawRubiksCube :: Renderable (Path R2) b => Offsets -> RubiksCube (Colour Double) -> Diagram b R2
- drawMove :: Renderable (Path R2) b => Move -> Offsets -> RubiksCube (Colour Double) -> Diagram b R2
- data MovesSettings = MovesSettings {}
- moveSep :: Lens' MovesSettings Double
- showStart :: Lens' MovesSettings Bool
- showEnd :: Lens' MovesSettings Bool
- offsets :: Lens' MovesSettings Offsets
- drawMoves :: Renderable (Path R2) b => MovesSettings -> RubiksCube (Colour Double) -> [Move] -> Diagram b R2
- drawMovesBackward :: Renderable (Path R2) b => MovesSettings -> RubiksCube (Colour Double) -> [Move] -> Diagram b R2
Documentation
solvedRubiksCube :: RubiksCube (Colour Double) Source
The solved cube.
Draws one 3x3 side of the cube.
drawFoldingPattern :: Renderable (Path R2) b => RubiksCube (Colour Double) -> Diagram b R2 Source
Draw the folding pattern of the cube. The front side is at the center of the pattern.
drawRubiksCube :: Renderable (Path R2) b => Offsets -> RubiksCube (Colour Double) -> Diagram b R2 Source
Draw the Rubik's cube in parallel perspective.
import Diagrams.RubiksCube import Control.Lens drawCubeExample = let c = solvedRubiksCube ^. undoMoves [R,U,R',U'] in drawRubiksCube with c
drawMove :: Renderable (Path R2) b => Move -> Offsets -> RubiksCube (Colour Double) -> Diagram b R2 Source
Draw the Rubik's cube in parallel perspective with an arrow indicating the next move. If the the bottom layer is moved, the cube will be shown from below.
import Diagrams.RubiksCube import Control.Lens drawMoveExample = let c = solvedRubiksCube ^. undoMoves [L,U,L',U'] in drawMove L with c
:: Renderable (Path R2) b | |
=> MovesSettings | |
-> RubiksCube (Colour Double) | the start configuration |
-> [Move] | |
-> Diagram b R2 |
Draws a sequence of moves.
import Diagrams.RubiksCube import Control.Lens drawMovesExample = let moves = [R, F', R', D', F, F] startPos = solvedRubiksCube ^. undoMoves moves settings = with & showStart .~ True in drawMoves settings startPos moves
:: Renderable (Path R2) b | |
=> MovesSettings | |
-> RubiksCube (Colour Double) | the end configuration |
-> [Move] | |
-> Diagram b R2 |
Like drawMoves
, but takes the end configuration instead of the start
configuration. The previous example can be simplified with this:
import Diagrams.RubiksCube import Control.Lens drawMovesExample' = let moves = [R, F', R', D', F, F] endPos = solvedRubiksCube settings = with & showStart .~ True in drawMovesBackward settings endPos moves