{-# LANGUAGE NoMonomorphismRestriction #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TupleSections #-}
module TgraphExamples
(
padBorder
, chunks
, arrangeRowsGap
, arrangeRows
, labelAt
, sunGraph
, jackGraph
, kingGraph
, queenGraph
, aceGraph
, deuceGraph
, starGraph
, kiteGraph
, dartGraph
, fool
, foolD
, foolDminus
, foolDs
, sunDs
, kiteDs
, dartDs
, dartD4
, sun3Dart
, foolFig
, foolAndFoolD
, figSunD3D2
, vertexTypesFig
, forceVFigures
, pCompFig1
, pCompFig2
, pCompFig
, forceFoolDminus
, forceDartD5Fig
, forceKiteD5Fig
, forceSunD5Fig
, forceFig
, brokenDart
, badlyBrokenDart
, brokenDartFig
, badlyBrokenDartFig
, removeIncompletesFig
, mistake
, mistake1
, superForceFig
, superForceRocketsFig
, boundaryFDart4
, boundaryFDart5
, boundaryFDart4Fig
, boundaryFDart5Fig
, boundaryGapFDart4
, boundaryGapFDart5
, boundaryGap4Fig
, boundaryGap5Fig
, boundaryVCoveringFigs
, boundaryECoveringFigs
, kingECoveringFig
, kingVCoveringFig
, kingEmpiresFig
, kingEmpire1Fig
, kingEmpire2Fig
) where
import Diagrams.Prelude
import Diagrams.TwoD.Text (Text)
import TileLib
import Tgraphs
padBorder :: Diagram2D b -> Diagram2D b
padBorder :: forall b. Diagram2D b -> Diagram2D b
padBorder = Double -> Diagram2D b -> Diagram2D b
forall (v :: * -> *) n m b.
(Metric v, OrderedField n, Monoid' m) =>
n -> QDiagram b v n m -> QDiagram b v n m
pad Double
1.2 (Diagram2D b -> Diagram2D b)
-> (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Diagram2D b -> Diagram2D b
forall (v :: * -> *) n a.
(InSpace v n a, R2 v, Fractional n, Alignable a, HasOrigin a) =>
a -> a
centerXY
chunks::Int -> [a] -> [[a]]
chunks :: forall a. Vertex -> [a] -> [[a]]
chunks Vertex
n
| Vertex
n Vertex -> Vertex -> Bool
forall a. Ord a => a -> a -> Bool
< Vertex
1 = [Char] -> [a] -> [[a]]
forall a. HasCallStack => [Char] -> a
error [Char]
"chunks: argument <1\n"
| Bool
otherwise = [a] -> [[a]]
ch where
ch :: [a] -> [[a]]
ch [] = []
ch [a]
as = Vertex -> [a] -> [a]
forall a. Vertex -> [a] -> [a]
take Vertex
n [a]
as [a] -> [[a]] -> [[a]]
forall a. a -> [a] -> [a]
: [a] -> [[a]]
ch (Vertex -> [a] -> [a]
forall a. Vertex -> [a] -> [a]
drop Vertex
n [a]
as)
arrangeRowsGap :: Double -> Int -> [Diagram2D b] -> Diagram2D b
arrangeRowsGap :: forall b. Double -> Vertex -> [Diagram2D b] -> Diagram2D b
arrangeRowsGap Double
s Vertex
n = Diagram2D b -> Diagram2D b
forall (v :: * -> *) n a.
(InSpace v n a, R2 v, Fractional n, Alignable a, HasOrigin a) =>
a -> a
centerY (Diagram2D b -> Diagram2D b)
-> ([Diagram2D b] -> Diagram2D b) -> [Diagram2D b] -> Diagram2D b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Double -> [Diagram2D b] -> Diagram2D b
forall n a.
(InSpace V2 n a, Floating n, Juxtaposable a, HasOrigin a,
Monoid' a) =>
n -> [a] -> a
vsep Double
s ([Diagram2D b] -> Diagram2D b)
-> ([Diagram2D b] -> [Diagram2D b]) -> [Diagram2D b] -> Diagram2D b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([Diagram2D b] -> Diagram2D b) -> [[Diagram2D b]] -> [Diagram2D b]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Diagram2D b -> Diagram2D b
forall (v :: * -> *) n a.
(InSpace v n a, R1 v, Fractional n, Alignable a, HasOrigin a) =>
a -> a
centerX (Diagram2D b -> Diagram2D b)
-> ([Diagram2D b] -> Diagram2D b) -> [Diagram2D b] -> Diagram2D b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Double -> [Diagram2D b] -> Diagram2D b
forall n a.
(InSpace V2 n a, Floating n, Juxtaposable a, HasOrigin a,
Monoid' a) =>
n -> [a] -> a
hsep Double
s) ([[Diagram2D b]] -> [Diagram2D b])
-> ([Diagram2D b] -> [[Diagram2D b]])
-> [Diagram2D b]
-> [Diagram2D b]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vertex -> [Diagram2D b] -> [[Diagram2D b]]
forall a. Vertex -> [a] -> [[a]]
chunks Vertex
n
arrangeRows :: Int -> [Diagram2D b] -> Diagram2D b
arrangeRows :: forall b. Vertex -> [Diagram2D b] -> Diagram2D b
arrangeRows = Double -> Vertex -> [Diagram2D b] -> Diagram2D b
forall b. Double -> Vertex -> [Diagram2D b] -> Diagram2D b
arrangeRowsGap Double
1.0
labelAt :: Renderable (Text Double) b =>
Point V2 Double -> String -> Diagram2D b -> Diagram2D b
labelAt :: forall b.
Renderable (Text Double) b =>
Point V2 Double -> [Char] -> Diagram2D b -> Diagram2D b
labelAt Point V2 Double
p [Char]
l Diagram2D b
d = [Char] -> Diagram2D b
forall n b.
(TypeableFloat n, Renderable (Text n) b) =>
[Char] -> QDiagram b V2 n Any
baselineText [Char]
l Diagram2D b -> (Diagram2D b -> Diagram2D b) -> Diagram2D b
forall a b. a -> (a -> b) -> b
# Measure Double -> Diagram2D b -> Diagram2D b
forall a n.
(N a ~ n, Typeable n, HasStyle a) =>
Measure n -> a -> a
fontSize (Double -> Measure Double
forall n. n -> Measure n
output Double
15) Diagram2D b -> (Diagram2D b -> Diagram2D b) -> Diagram2D b
forall a b. a -> (a -> b) -> b
# Point V2 Double -> Diagram2D b -> Diagram2D b
forall (v :: * -> *) n t.
(InSpace v n t, HasOrigin t) =>
Point v n -> t -> t
moveTo Point V2 Double
p Diagram2D b -> Diagram2D b -> Diagram2D b
forall a. Semigroup a => a -> a -> a
<> Diagram2D b
d
fool, foolD, foolDminus:: Tgraph
fool :: Tgraph
fool = [TileFace] -> Tgraph
makeTgraph [(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RK (Vertex
5,Vertex
2,Vertex
7),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LK (Vertex
5,Vertex
6,Vertex
4),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RK (Vertex
5,Vertex
4,Vertex
3),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LK (Vertex
5,Vertex
3,Vertex
2),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RD (Vertex
1,Vertex
2,Vertex
3),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LD (Vertex
1,Vertex
3,Vertex
4)]
foolD :: Tgraph
foolD = Tgraph -> Tgraph
decompose Tgraph
fool
foolDminus :: Tgraph
foolDminus = [TileFace] -> Tgraph -> Tgraph
removeFaces [(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RD (Vertex
5,Vertex
15,Vertex
13), (Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LD (Vertex
5,Vertex
16,Vertex
15), (Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RK (Vertex
7,Vertex
11,Vertex
2)] Tgraph
foolD
foolDs :: [Tgraph]
foolDs :: [Tgraph]
foolDs = Tgraph -> [Tgraph]
decompositions Tgraph
fool
foolFig :: (Renderable (Path V2 Double) b, Renderable (Text Double) b) => Diagram2D b
foolFig :: forall b.
(Renderable (Path V2 Double) b, Renderable (Text Double) b) =>
Diagram2D b
foolFig = Diagram2D b -> Diagram2D b
forall b. Diagram2D b -> Diagram2D b
padBorder (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Measure Double -> (Patch -> Diagram2D b) -> Tgraph -> Diagram2D b
forall b a.
(Renderable (Path V2 Double) b, Renderable (Text Double) b,
DrawableLabelled a) =>
Measure Double -> (Patch -> Diagram2D b) -> a -> Diagram2D b
labelSize Measure Double
forall n. OrderedField n => Measure n
normal Patch -> Diagram2D b
forall a b.
(Drawable a, Renderable (Path V2 Double) b) =>
a -> Diagram2D b
drawj Tgraph
fool
foolAndFoolD :: (Renderable (Path V2 Double) b, Renderable (Text Double) b) => Diagram2D b
foolAndFoolD :: forall b.
(Renderable (Path V2 Double) b, Renderable (Text Double) b) =>
Diagram2D b
foolAndFoolD = Diagram2D b -> Diagram2D b
forall b. Diagram2D b -> Diagram2D b
padBorder (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Double -> [Diagram2D b] -> Diagram2D b
forall n a.
(InSpace V2 n a, Floating n, Juxtaposable a, HasOrigin a,
Monoid' a) =>
n -> [a] -> a
hsep Double
1 [Double -> Diagram2D b -> Diagram2D b
forall (v :: * -> *) n a.
(InSpace v n a, Eq n, Fractional n, Transformable a) =>
n -> a -> a
scale Double
phi (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ (Patch -> Diagram2D b) -> Tgraph -> Diagram2D b
forall b a.
(Renderable (Path V2 Double) b, Renderable (Text Double) b,
DrawableLabelled a) =>
(Patch -> Diagram2D b) -> a -> Diagram2D b
labelled Patch -> Diagram2D b
forall a b.
(Drawable a, Renderable (Path V2 Double) b) =>
a -> Diagram2D b
drawj Tgraph
fool, (Patch -> Diagram2D b) -> Tgraph -> Diagram2D b
forall b a.
(Renderable (Path V2 Double) b, Renderable (Text Double) b,
DrawableLabelled a) =>
(Patch -> Diagram2D b) -> a -> Diagram2D b
labelled Patch -> Diagram2D b
forall a b.
(Drawable a, Renderable (Path V2 Double) b) =>
a -> Diagram2D b
drawj Tgraph
foolD]
sunGraph :: Tgraph
sunGraph :: Tgraph
sunGraph = [TileFace] -> Tgraph
makeTgraph
[ (Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RK (Vertex
1,Vertex
2,Vertex
11), (Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LK (Vertex
1,Vertex
3,Vertex
2)
, (Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RK (Vertex
1,Vertex
4,Vertex
3) , (Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LK (Vertex
1,Vertex
5,Vertex
4)
, (Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RK (Vertex
1,Vertex
6,Vertex
5) , (Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LK (Vertex
1,Vertex
7,Vertex
6)
, (Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RK (Vertex
1,Vertex
8,Vertex
7) , (Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LK (Vertex
1,Vertex
9,Vertex
8)
, (Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RK (Vertex
1,Vertex
10,Vertex
9), (Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LK (Vertex
1,Vertex
11,Vertex
10)
]
sunDs :: [Tgraph]
sunDs :: [Tgraph]
sunDs = Tgraph -> [Tgraph]
decompositions Tgraph
sunGraph
figSunD3D2 :: (Renderable (Path V2 Double) b, Renderable (Text Double) b) => Diagram2D b
figSunD3D2 :: forall b.
(Renderable (Path V2 Double) b, Renderable (Text Double) b) =>
Diagram2D b
figSunD3D2 = Diagram2D b -> Diagram2D b
forall b. Diagram2D b -> Diagram2D b
padBorder (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Double -> [Diagram2D b] -> Diagram2D b
forall n a.
(InSpace V2 n a, Floating n, Juxtaposable a, HasOrigin a,
Monoid' a) =>
n -> [a] -> a
hsep Double
1 [(Patch -> Diagram2D b) -> Tgraph -> Diagram2D b
forall b a.
(Renderable (Path V2 Double) b, Renderable (Text Double) b,
DrawableLabelled a) =>
(Patch -> Diagram2D b) -> a -> Diagram2D b
labelled Patch -> Diagram2D b
forall a b.
(Drawable a, Renderable (Path V2 Double) b) =>
a -> Diagram2D b
drawj (Tgraph -> Diagram2D b) -> Tgraph -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ [Tgraph]
sunDs [Tgraph] -> Vertex -> Tgraph
forall a. HasCallStack => [a] -> Vertex -> a
!! Vertex
3, Double -> Diagram2D b -> Diagram2D b
forall (v :: * -> *) n a.
(InSpace v n a, Eq n, Fractional n, Transformable a) =>
n -> a -> a
scale Double
phi (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ (Patch -> Diagram2D b) -> Tgraph -> Diagram2D b
forall b a.
(Renderable (Path V2 Double) b, Renderable (Text Double) b,
DrawableLabelled a) =>
(Patch -> Diagram2D b) -> a -> Diagram2D b
labelled Patch -> Diagram2D b
forall a b.
(Drawable a, Renderable (Path V2 Double) b) =>
a -> Diagram2D b
drawj (Tgraph -> Diagram2D b) -> Tgraph -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ [Tgraph]
sunDs [Tgraph] -> Vertex -> Tgraph
forall a. HasCallStack => [a] -> Vertex -> a
!! Vertex
2]
kiteGraph :: Tgraph
kiteGraph :: Tgraph
kiteGraph = [TileFace] -> Tgraph
makeTgraph [ (Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RK (Vertex
1,Vertex
2,Vertex
4), (Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LK (Vertex
1,Vertex
3,Vertex
2)]
kiteDs :: [Tgraph]
kiteDs :: [Tgraph]
kiteDs = Tgraph -> [Tgraph]
decompositions Tgraph
kiteGraph
dartGraph :: Tgraph
dartGraph :: Tgraph
dartGraph = [TileFace] -> Tgraph
makeTgraph [ (Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RD (Vertex
1,Vertex
2,Vertex
3), (Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LD (Vertex
1,Vertex
3,Vertex
4)]
dartDs :: [Tgraph]
dartDs :: [Tgraph]
dartDs = Tgraph -> [Tgraph]
decompositions Tgraph
dartGraph
dartD4 :: Tgraph
dartD4 :: Tgraph
dartD4 = [Tgraph]
dartDs[Tgraph] -> Vertex -> Tgraph
forall a. HasCallStack => [a] -> Vertex -> a
!!Vertex
4
pCompFig1,pCompFig2,pCompFig :: Renderable (Path V2 Double) b => Diagram2D b
pCompFig1 :: forall b. Renderable (Path V2 Double) b => Diagram2D b
pCompFig1 = Measure Double -> Diagram2D b -> Diagram2D b
forall a n.
(N a ~ n, HasStyle a, Typeable n) =>
Measure n -> a -> a
lw Measure Double
forall n. OrderedField n => Measure n
veryThin (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Double -> [Diagram2D b] -> Diagram2D b
forall n a.
(InSpace V2 n a, Floating n, Juxtaposable a, HasOrigin a,
Monoid' a) =>
n -> [a] -> a
hsep Double
5 ([Diagram2D b] -> Diagram2D b) -> [Diagram2D b] -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ [Vertex] -> [Diagram2D b] -> [Diagram2D b]
forall a.
(Transformable a, V a ~ V2, N a ~ Double) =>
[Vertex] -> [a] -> [a]
rotations [Vertex
1,Vertex
1] [Tgraph -> Diagram2D b
forall a b.
(Drawable a, Renderable (Path V2 Double) b) =>
a -> Diagram2D b
draw Tgraph
fd3, Tgraph -> Diagram2D b
forall b. Renderable (Path V2 Double) b => Tgraph -> Diagram2D b
drawPCompose Tgraph
fd3]
where fd3 :: Tgraph
fd3 = Tgraph -> Tgraph
forall a. Forcible a => a -> a
force (Tgraph -> Tgraph) -> Tgraph -> Tgraph
forall a b. (a -> b) -> a -> b
$ [Tgraph]
dartDs[Tgraph] -> Vertex -> Tgraph
forall a. HasCallStack => [a] -> Vertex -> a
!!Vertex
3
pCompFig2 :: forall b. Renderable (Path V2 Double) b => Diagram2D b
pCompFig2 = Measure Double -> Diagram2D b -> Diagram2D b
forall a n.
(N a ~ n, HasStyle a, Typeable n) =>
Measure n -> a -> a
lw Measure Double
forall n. OrderedField n => Measure n
veryThin (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Double -> [Diagram2D b] -> Diagram2D b
forall n a.
(InSpace V2 n a, Floating n, Juxtaposable a, HasOrigin a,
Monoid' a) =>
n -> [a] -> a
hsep Double
5 [Tgraph -> Diagram2D b
forall a b.
(Drawable a, Renderable (Path V2 Double) b) =>
a -> Diagram2D b
draw Tgraph
fk3, Tgraph -> Diagram2D b
forall b. Renderable (Path V2 Double) b => Tgraph -> Diagram2D b
drawPCompose Tgraph
fk3]
where fk3 :: Tgraph
fk3 = Tgraph -> Tgraph
forall a. Forcible a => a -> a
force (Tgraph -> Tgraph) -> Tgraph -> Tgraph
forall a b. (a -> b) -> a -> b
$ [Tgraph]
kiteDs[Tgraph] -> Vertex -> Tgraph
forall a. HasCallStack => [a] -> Vertex -> a
!!Vertex
3
pCompFig :: forall b. Renderable (Path V2 Double) b => Diagram2D b
pCompFig = Diagram2D b -> Diagram2D b
forall b. Diagram2D b -> Diagram2D b
padBorder (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Double -> [Diagram2D b] -> Diagram2D b
forall n a.
(InSpace V2 n a, Floating n, Juxtaposable a, HasOrigin a,
Monoid' a) =>
n -> [a] -> a
vsep Double
3 [Diagram2D b -> Diagram2D b
forall (v :: * -> *) n a.
(InSpace v n a, Fractional n, Traversable v, Alignable a,
HasOrigin a) =>
a -> a
center Diagram2D b
forall b. Renderable (Path V2 Double) b => Diagram2D b
pCompFig1, Diagram2D b -> Diagram2D b
forall (v :: * -> *) n a.
(InSpace v n a, Fractional n, Traversable v, Alignable a,
HasOrigin a) =>
a -> a
center Diagram2D b
forall b. Renderable (Path V2 Double) b => Diagram2D b
pCompFig2]
forceFoolDminus :: (Renderable (Path V2 Double) b, Renderable (Text Double) b) => Diagram2D b
forceFoolDminus :: forall b.
(Renderable (Path V2 Double) b, Renderable (Text Double) b) =>
Diagram2D b
forceFoolDminus = Diagram2D b -> Diagram2D b
forall b. Diagram2D b -> Diagram2D b
padBorder (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Double -> [Diagram2D b] -> Diagram2D b
forall n a.
(InSpace V2 n a, Floating n, Juxtaposable a, HasOrigin a,
Monoid' a) =>
n -> [a] -> a
hsep Double
1 ([Diagram2D b] -> Diagram2D b) -> [Diagram2D b] -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ (Tgraph -> Diagram2D b) -> [Tgraph] -> [Diagram2D b]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((Patch -> Diagram2D b) -> Tgraph -> Diagram2D b
forall b a.
(Renderable (Path V2 Double) b, Renderable (Text Double) b,
DrawableLabelled a) =>
(Patch -> Diagram2D b) -> a -> Diagram2D b
labelled Patch -> Diagram2D b
forall a b.
(Drawable a, Renderable (Path V2 Double) b) =>
a -> Diagram2D b
drawj) [Tgraph
foolDminus, Tgraph -> Tgraph
forall a. Forcible a => a -> a
force Tgraph
foolDminus]
forceDartD5Fig,forceKiteD5Fig,forceSunD5Fig,forceFig :: Renderable (Path V2 Double) b => Diagram2D b
forceDartD5Fig :: forall b. Renderable (Path V2 Double) b => Diagram2D b
forceDartD5Fig = Diagram2D b -> Diagram2D b
forall b. Diagram2D b -> Diagram2D b
padBorder (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Measure Double -> Diagram2D b -> Diagram2D b
forall a n.
(N a ~ n, HasStyle a, Typeable n) =>
Measure n -> a -> a
lw Measure Double
forall n. OrderedField n => Measure n
ultraThin (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Tgraph -> Diagram2D b
forall b. Renderable (Path V2 Double) b => Tgraph -> Diagram2D b
drawForce (Tgraph -> Diagram2D b) -> Tgraph -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ [Tgraph]
dartDs [Tgraph] -> Vertex -> Tgraph
forall a. HasCallStack => [a] -> Vertex -> a
!! Vertex
5
forceKiteD5Fig :: forall b. Renderable (Path V2 Double) b => Diagram2D b
forceKiteD5Fig = Diagram2D b -> Diagram2D b
forall b. Diagram2D b -> Diagram2D b
padBorder (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Measure Double -> Diagram2D b -> Diagram2D b
forall a n.
(N a ~ n, HasStyle a, Typeable n) =>
Measure n -> a -> a
lw Measure Double
forall n. OrderedField n => Measure n
ultraThin (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Angle Double -> Diagram2D b -> Diagram2D b
forall n t.
(InSpace V2 n t, Transformable t, Floating n) =>
Angle n -> t -> t
rotate (Vertex -> Angle Double
ttangle Vertex
1) (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Tgraph -> Diagram2D b
forall b. Renderable (Path V2 Double) b => Tgraph -> Diagram2D b
drawForce (Tgraph -> Diagram2D b) -> Tgraph -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ [Tgraph]
kiteDs[Tgraph] -> Vertex -> Tgraph
forall a. HasCallStack => [a] -> Vertex -> a
!!Vertex
5
forceSunD5Fig :: forall b. Renderable (Path V2 Double) b => Diagram2D b
forceSunD5Fig = Diagram2D b -> Diagram2D b
forall b. Diagram2D b -> Diagram2D b
padBorder (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Measure Double -> Diagram2D b -> Diagram2D b
forall a n.
(N a ~ n, HasStyle a, Typeable n) =>
Measure n -> a -> a
lw Measure Double
forall n. OrderedField n => Measure n
ultraThin (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Tgraph -> Diagram2D b
forall b. Renderable (Path V2 Double) b => Tgraph -> Diagram2D b
drawForce (Tgraph -> Diagram2D b) -> Tgraph -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ [Tgraph]
sunDs [Tgraph] -> Vertex -> Tgraph
forall a. HasCallStack => [a] -> Vertex -> a
!! Vertex
5
forceFig :: forall b. Renderable (Path V2 Double) b => Diagram2D b
forceFig = Double -> [Diagram2D b] -> Diagram2D b
forall n a.
(InSpace V2 n a, Floating n, Juxtaposable a, HasOrigin a,
Monoid' a) =>
n -> [a] -> a
hsep Double
1 [Diagram2D b
forall b. Renderable (Path V2 Double) b => Diagram2D b
forceDartD5Fig,Diagram2D b
forall b. Renderable (Path V2 Double) b => Diagram2D b
forceKiteD5Fig]
brokenDart :: Tgraph
brokenDart :: Tgraph
brokenDart = [TileFace] -> Tgraph -> Tgraph
removeFaces [TileFace]
forall {a} {b} {c}. (Num a, Num b, Num c) => [HalfTile (a, b, c)]
deleted Tgraph
dartD4 where
deleted :: [HalfTile (a, b, c)]
deleted = [(a, b, c) -> HalfTile (a, b, c)
forall rep. rep -> HalfTile rep
RK (a
2,b
16,c
33),(a, b, c) -> HalfTile (a, b, c)
forall rep. rep -> HalfTile rep
LD (a
15,b
33,c
16),(a, b, c) -> HalfTile (a, b, c)
forall rep. rep -> HalfTile rep
RK (a
16,b
66,c
15),(a, b, c) -> HalfTile (a, b, c)
forall rep. rep -> HalfTile rep
LK (a
16,b
67,c
66),(a, b, c) -> HalfTile (a, b, c)
forall rep. rep -> HalfTile rep
LK (a
5,b
15,c
66)]
badlyBrokenDart :: Tgraph
badlyBrokenDart :: Tgraph
badlyBrokenDart = [TileFace] -> Tgraph -> Tgraph
removeFaces [TileFace]
forall {a} {b} {c}. (Num a, Num b, Num c) => [HalfTile (a, b, c)]
deleted Tgraph
bbd where
deleted :: [HalfTile (a, b, c)]
deleted = [(a, b, c) -> HalfTile (a, b, c)
forall rep. rep -> HalfTile rep
RK (a
6,b
28,c
54)]
bbd :: Tgraph
bbd = [Vertex] -> Tgraph -> Tgraph
removeVertices [Vertex
63,Vertex
37] Tgraph
brokenDart
brokenDartFig :: (Renderable (Path V2 Double) b, Renderable (Text Double) b) => Diagram2D b
brokenDartFig :: forall b.
(Renderable (Path V2 Double) b, Renderable (Text Double) b) =>
Diagram2D b
brokenDartFig = Diagram2D b -> Diagram2D b
forall b. Diagram2D b -> Diagram2D b
padBorder (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Measure Double -> Diagram2D b -> Diagram2D b
forall a n.
(N a ~ n, HasStyle a, Typeable n) =>
Measure n -> a -> a
lw Measure Double
forall n. OrderedField n => Measure n
thin (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Double -> [Diagram2D b] -> Diagram2D b
forall n a.
(InSpace V2 n a, Floating n, Juxtaposable a, HasOrigin a,
Monoid' a) =>
n -> [a] -> a
hsep Double
1 ([Diagram2D b] -> Diagram2D b) -> [Diagram2D b] -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ (Tgraph -> Diagram2D b) -> [Tgraph] -> [Diagram2D b]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((Patch -> Diagram2D b) -> Tgraph -> Diagram2D b
forall b a.
(Renderable (Path V2 Double) b, Renderable (Text Double) b,
DrawableLabelled a) =>
(Patch -> Diagram2D b) -> a -> Diagram2D b
labelled Patch -> Diagram2D b
forall a b.
(Drawable a, Renderable (Path V2 Double) b) =>
a -> Diagram2D b
drawj) [Tgraph
dartD4, Tgraph
brokenDart, Tgraph
badlyBrokenDart]
badlyBrokenDartFig :: (Renderable (Path V2 Double) b, Renderable (Text Double) b) => Diagram2D b
badlyBrokenDartFig :: forall b.
(Renderable (Path V2 Double) b, Renderable (Text Double) b) =>
Diagram2D b
badlyBrokenDartFig = Diagram2D b -> Diagram2D b
forall b. Diagram2D b -> Diagram2D b
padBorder (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Measure Double -> Diagram2D b -> Diagram2D b
forall a n.
(N a ~ n, HasStyle a, Typeable n) =>
Measure n -> a -> a
lw Measure Double
forall n. OrderedField n => Measure n
thin (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Double -> [Diagram2D b] -> Diagram2D b
forall n a.
(InSpace V2 n a, Floating n, Juxtaposable a, HasOrigin a,
Monoid' a) =>
n -> [a] -> a
hsep Double
1 ([Diagram2D b] -> Diagram2D b) -> [Diagram2D b] -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ (VPatch -> Diagram2D b) -> [VPatch] -> [Diagram2D b]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((Patch -> Diagram2D b) -> VPatch -> Diagram2D b
forall b a.
(Renderable (Path V2 Double) b, Renderable (Text Double) b,
DrawableLabelled a) =>
(Patch -> Diagram2D b) -> a -> Diagram2D b
labelled Patch -> Diagram2D b
forall a b.
(Drawable a, Renderable (Path V2 Double) b) =>
a -> Diagram2D b
drawj) [VPatch
vp, VPatch
vpComp, VPatch
vpFailed] where
vp :: VPatch
vp = Tgraph -> VPatch
makeVP Tgraph
badlyBrokenDart
comp :: Tgraph
comp = Tgraph -> Tgraph
compose Tgraph
badlyBrokenDart
vpComp :: VPatch
vpComp = VPatch -> [TileFace] -> VPatch
restrictVP VPatch
vp ([TileFace] -> VPatch) -> [TileFace] -> VPatch
forall a b. (a -> b) -> a -> b
$ Tgraph -> [TileFace]
faces (Tgraph -> [TileFace]) -> Tgraph -> [TileFace]
forall a b. (a -> b) -> a -> b
$ Tgraph
comp
vpFailed :: VPatch
vpFailed = VPatch -> [TileFace] -> VPatch
restrictVP VPatch
vp ([TileFace] -> VPatch) -> [TileFace] -> VPatch
forall a b. (a -> b) -> a -> b
$ Tgraph -> [TileFace]
composedFaces Tgraph
comp
removeIncompletesFig :: Renderable (Path V2 Double) b => Diagram2D b
removeIncompletesFig :: forall b. Renderable (Path V2 Double) b => Diagram2D b
removeIncompletesFig = Diagram2D b -> Diagram2D b
forall b. Diagram2D b -> Diagram2D b
padBorder (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Tgraph -> Diagram2D b
forall a b.
(Drawable a, Renderable (Path V2 Double) b) =>
a -> Diagram2D b
drawj (Tgraph -> Diagram2D b) -> Tgraph -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ [TileFace] -> Tgraph -> Tgraph
removeFaces (Tgraph -> [TileFace]
boundaryJoinFaces Tgraph
g) Tgraph
g where
g :: Tgraph
g = [Tgraph]
sunDs [Tgraph] -> Vertex -> Tgraph
forall a. HasCallStack => [a] -> Vertex -> a
!! Vertex
3
mistake:: Tgraph
mistake :: Tgraph
mistake = [TileFace] -> Tgraph
makeTgraph [(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RK (Vertex
1,Vertex
2,Vertex
4), (Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LK (Vertex
1,Vertex
3,Vertex
2), (Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RD (Vertex
3,Vertex
1,Vertex
5), (Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LD (Vertex
4,Vertex
6,Vertex
1), (Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LD (Vertex
3,Vertex
5,Vertex
7), (Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RD (Vertex
4,Vertex
8,Vertex
6)]
mistake1:: Tgraph
mistake1 :: Tgraph
mistake1 = [TileFace] -> Tgraph
makeTgraph [(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RK (Vertex
1,Vertex
2,Vertex
4), (Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LK (Vertex
1,Vertex
3,Vertex
2), (Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RD (Vertex
3,Vertex
1,Vertex
5), (Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LD (Vertex
4,Vertex
6,Vertex
1)]
vertexTypesFig :: (Renderable (Path V2 Double) b, Renderable (Text Double) b) => Diagram2D b
vertexTypesFig :: forall b.
(Renderable (Path V2 Double) b, Renderable (Text Double) b) =>
Diagram2D b
vertexTypesFig = Diagram2D b -> Diagram2D b
forall b. Diagram2D b -> Diagram2D b
padBorder (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Double -> [Diagram2D b] -> Diagram2D b
forall n a.
(InSpace V2 n a, Floating n, Juxtaposable a, HasOrigin a,
Monoid' a) =>
n -> [a] -> a
hsep Double
1 [Diagram2D b]
forall {b}.
(Renderable (Path V2 Double) b, Renderable (Text Double) b) =>
[Diagram2D b]
lTypeFigs
where
lTypeFigs :: [Diagram2D b]
lTypeFigs = ([Char] -> Diagram2D b -> Diagram2D b)
-> [[Char]] -> [Diagram2D b] -> [Diagram2D b]
forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
zipWith (Point V2 Double -> [Char] -> Diagram2D b -> Diagram2D b
forall b.
Renderable (Text Double) b =>
Point V2 Double -> [Char] -> Diagram2D b -> Diagram2D b
labelAt ((Double, Double) -> Point V2 Double
forall n. (n, n) -> P2 n
p2 (Double
0,-Double
2.2))) [[Char]
"sun",[Char]
"star",[Char]
"jack",[Char]
"queen",[Char]
"king",[Char]
"ace",[Char]
"deuce"] [Diagram2D b]
forall {b}.
Renderable (Path V2 Double) b =>
[QDiagram b V2 Double Any]
vTypeFigs
vTypeFigs :: [QDiagram b V2 Double Any]
vTypeFigs = (Tgraph -> (Vertex, Vertex) -> QDiagram b V2 Double Any)
-> [Tgraph] -> [(Vertex, Vertex)] -> [QDiagram b V2 Double Any]
forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
zipWith Tgraph -> (Vertex, Vertex) -> QDiagram b V2 Double Any
forall {b}.
Renderable (Path V2 Double) b =>
Tgraph -> (Vertex, Vertex) -> QDiagram b V2 Double Any
drawVertex
[Tgraph
sunGraph, Tgraph
starGraph, Tgraph
jackGraph, Tgraph
queenGraph, Tgraph
kingGraph, Tgraph
aceGraph, Tgraph
deuceGraph]
[(Vertex
1,Vertex
2), (Vertex
1,Vertex
2), (Vertex
1,Vertex
2), (Vertex
1,Vertex
2), (Vertex
1,Vertex
2), (Vertex
3,Vertex
6), (Vertex
2,Vertex
6)]
drawVertex :: Tgraph -> (Vertex, Vertex) -> QDiagram b V2 Double Any
drawVertex Tgraph
g (Vertex, Vertex)
alm = (VPatch -> QDiagram b V2 Double Any)
-> (Vertex, Vertex) -> Tgraph -> QDiagram b V2 Double Any
forall a. (VPatch -> a) -> (Vertex, Vertex) -> Tgraph -> a
alignBefore (Measure Double
-> QDiagram b V2 Double Any -> QDiagram b V2 Double Any
forall a n.
(N a ~ n, HasStyle a, Typeable n) =>
Measure n -> a -> a
lw Measure Double
forall n. OrderedField n => Measure n
thin (QDiagram b V2 Double Any -> QDiagram b V2 Double Any)
-> (VPatch -> QDiagram b V2 Double Any)
-> VPatch
-> QDiagram b V2 Double Any
forall b c a. (b -> c) -> (a -> b) -> a -> c
. QDiagram b V2 Double Any -> QDiagram b V2 Double Any
forall n b m.
(TypeableFloat n, Renderable (Path V2 n) b, Monoid' m) =>
QDiagram b V2 n m -> QDiagram b V2 n m
showOrigin (QDiagram b V2 Double Any -> QDiagram b V2 Double Any)
-> (VPatch -> QDiagram b V2 Double Any)
-> VPatch
-> QDiagram b V2 Double Any
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VPatch -> QDiagram b V2 Double Any
forall a b.
(Drawable a, Renderable (Path V2 Double) b) =>
a -> Diagram2D b
drawj) (Vertex, Vertex)
alm Tgraph
g
jackGraph,kingGraph,queenGraph,aceGraph,deuceGraph,starGraph::Tgraph
jackGraph :: Tgraph
jackGraph = [TileFace] -> Tgraph
makeTgraph
[(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LK (Vertex
1,Vertex
9,Vertex
11),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RK (Vertex
1,Vertex
11,Vertex
2),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LK (Vertex
7,Vertex
8,Vertex
1),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RD (Vertex
9,Vertex
1,Vertex
8),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RK (Vertex
1,Vertex
3,Vertex
4)
,(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LK (Vertex
1,Vertex
2,Vertex
3),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RK (Vertex
7,Vertex
1,Vertex
5),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LD (Vertex
4,Vertex
5,Vertex
1),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LD (Vertex
9,Vertex
8,Vertex
10),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RD (Vertex
4,Vertex
6,Vertex
5)
]
kingGraph :: Tgraph
kingGraph = [TileFace] -> Tgraph
makeTgraph
[(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LD (Vertex
1,Vertex
2,Vertex
3),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RD (Vertex
1,Vertex
11,Vertex
2),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LD (Vertex
1,Vertex
4,Vertex
5),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RD (Vertex
1,Vertex
3,Vertex
4),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LD (Vertex
1,Vertex
10,Vertex
11)
,(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RD (Vertex
1,Vertex
9,Vertex
10),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LK (Vertex
9,Vertex
1,Vertex
7),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RK (Vertex
9,Vertex
7,Vertex
8),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RK (Vertex
5,Vertex
7,Vertex
1),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LK (Vertex
5,Vertex
6,Vertex
7)
]
queenGraph :: Tgraph
queenGraph = [TileFace] -> Tgraph
makeTgraph
[(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LK (Vertex
7,Vertex
1,Vertex
5),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RK (Vertex
3,Vertex
5,Vertex
1),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LD (Vertex
1,Vertex
2,Vertex
3),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RK (Vertex
7,Vertex
9,Vertex
1),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LK (Vertex
11,Vertex
1,Vertex
9)
,(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RD (Vertex
1,Vertex
11,Vertex
2),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RK (Vertex
7,Vertex
5,Vertex
6),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LK (Vertex
7,Vertex
8,Vertex
9),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LK (Vertex
3,Vertex
4,Vertex
5),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RK (Vertex
11,Vertex
9,Vertex
10)
]
aceGraph :: Tgraph
aceGraph = Tgraph
fool
deuceGraph :: Tgraph
deuceGraph = [TileFace] -> Tgraph
makeTgraph
[(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LK (Vertex
7,Vertex
8,Vertex
2),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RK (Vertex
7,Vertex
2,Vertex
6),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RK (Vertex
5,Vertex
2,Vertex
4),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LK (Vertex
5,Vertex
6,Vertex
2),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LD (Vertex
1,Vertex
4,Vertex
2)
,(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RD (Vertex
1,Vertex
2,Vertex
8),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RD (Vertex
1,Vertex
3,Vertex
4),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LD (Vertex
1,Vertex
8,Vertex
9)
]
starGraph :: Tgraph
starGraph = [TileFace] -> Tgraph
makeTgraph
[(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LD (Vertex
1,Vertex
2,Vertex
3),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RD (Vertex
1,Vertex
11,Vertex
2),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LD (Vertex
1,Vertex
10,Vertex
11),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RD (Vertex
1,Vertex
9,Vertex
10),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LD (Vertex
1,Vertex
8,Vertex
9)
,(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RD (Vertex
1,Vertex
7,Vertex
8),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LD (Vertex
1,Vertex
6,Vertex
7),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RD (Vertex
1,Vertex
5,Vertex
6),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
LD (Vertex
1,Vertex
4,Vertex
5),(Vertex, Vertex, Vertex) -> TileFace
forall rep. rep -> HalfTile rep
RD (Vertex
1,Vertex
3,Vertex
4)
]
forceVFigures :: Renderable (Path V2 Double) b => [Diagram2D b]
forceVFigures :: forall {b}.
Renderable (Path V2 Double) b =>
[QDiagram b V2 Double Any]
forceVFigures = [Vertex] -> [Diagram2D b] -> [Diagram2D b]
forall a.
(Transformable a, V a ~ V2, N a ~ Double) =>
[Vertex] -> [a] -> [a]
rotations [Vertex
0,Vertex
0,Vertex
9,Vertex
5,Vertex
0,Vertex
0,Vertex
1] ([Diagram2D b] -> [Diagram2D b]) -> [Diagram2D b] -> [Diagram2D b]
forall a b. (a -> b) -> a -> b
$
(Tgraph -> Diagram2D b) -> [Tgraph] -> [Diagram2D b]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Diagram2D b -> Diagram2D b
forall (v :: * -> *) n a.
(InSpace v n a, Fractional n, Traversable v, Alignable a,
HasOrigin a) =>
a -> a
center (Diagram2D b -> Diagram2D b)
-> (Tgraph -> Diagram2D b) -> Tgraph -> Diagram2D b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Tgraph -> Diagram2D b
forall b. Renderable (Path V2 Double) b => Tgraph -> Diagram2D b
drawForce) [Tgraph
sunGraph,Tgraph
starGraph,Tgraph
jackGraph,Tgraph
queenGraph,Tgraph
kingGraph,Tgraph
aceGraph,Tgraph
deuceGraph]
sun3Dart :: Tgraph
sun3Dart :: Tgraph
sun3Dart = (Vertex, Vertex) -> Tgraph -> Tgraph
forall a. Forcible a => (Vertex, Vertex) -> a -> a
addHalfDart (Vertex
9,Vertex
10) (Tgraph -> Tgraph) -> Tgraph -> Tgraph
forall a b. (a -> b) -> a -> b
$ (Vertex, Vertex) -> Tgraph -> Tgraph
forall a. Forcible a => (Vertex, Vertex) -> a -> a
addHalfDart (Vertex
8,Vertex
9) (Tgraph -> Tgraph) -> Tgraph -> Tgraph
forall a b. (a -> b) -> a -> b
$ (Vertex, Vertex) -> Tgraph -> Tgraph
forall a. Forcible a => (Vertex, Vertex) -> a -> a
addHalfDart (Vertex
5,Vertex
6) (Tgraph -> Tgraph) -> Tgraph -> Tgraph
forall a b. (a -> b) -> a -> b
$ (Vertex, Vertex) -> Tgraph -> Tgraph
forall a. Forcible a => (Vertex, Vertex) -> a -> a
addHalfDart (Vertex
4,Vertex
5) (Tgraph -> Tgraph) -> Tgraph -> Tgraph
forall a b. (a -> b) -> a -> b
$ (Vertex, Vertex) -> Tgraph -> Tgraph
forall a. Forcible a => (Vertex, Vertex) -> a -> a
addHalfDart (Vertex
3,Vertex
4) (Tgraph -> Tgraph) -> Tgraph -> Tgraph
forall a b. (a -> b) -> a -> b
$ (Vertex, Vertex) -> Tgraph -> Tgraph
forall a. Forcible a => (Vertex, Vertex) -> a -> a
addHalfDart (Vertex
2,Vertex
3) Tgraph
sunGraph
superForceFig :: Renderable (Path V2 Double) b => Diagram2D b
superForceFig :: forall b. Renderable (Path V2 Double) b => Diagram2D b
superForceFig = Diagram2D b -> Diagram2D b
forall b. Diagram2D b -> Diagram2D b
padBorder (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Measure Double -> Diagram2D b -> Diagram2D b
forall a n.
(N a ~ n, HasStyle a, Typeable n) =>
Measure n -> a -> a
lw Measure Double
forall n. OrderedField n => Measure n
thin (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Angle Double -> Diagram2D b -> Diagram2D b
forall n t.
(InSpace V2 n t, Transformable t, Floating n) =>
Angle n -> t -> t
rotate (Vertex -> Angle Double
ttangle Vertex
1) (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Tgraph -> Diagram2D b
forall b. Renderable (Path V2 Double) b => Tgraph -> Diagram2D b
drawSuperForce Tgraph
g where
g :: Tgraph
g = (Vertex, Vertex) -> Tgraph -> Tgraph
forall a. Forcible a => (Vertex, Vertex) -> a -> a
addHalfDart (Vertex
220,Vertex
221) (Tgraph -> Tgraph) -> Tgraph -> Tgraph
forall a b. (a -> b) -> a -> b
$ Tgraph -> Tgraph
forall a. Forcible a => a -> a
force (Tgraph -> Tgraph) -> Tgraph -> Tgraph
forall a b. (a -> b) -> a -> b
$ Tgraph -> [Tgraph]
decompositions Tgraph
fool [Tgraph] -> Vertex -> Tgraph
forall a. HasCallStack => [a] -> Vertex -> a
!!Vertex
3
superForceRocketsFig :: Renderable (Path V2 Double) b => Diagram2D b
superForceRocketsFig :: forall b. Renderable (Path V2 Double) b => Diagram2D b
superForceRocketsFig = Diagram2D b -> Diagram2D b
forall b. Diagram2D b -> Diagram2D b
padBorder (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Measure Double -> Diagram2D b -> Diagram2D b
forall a n.
(N a ~ n, HasStyle a, Typeable n) =>
Measure n -> a -> a
lw Measure Double
forall n. OrderedField n => Measure n
veryThin (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Double -> [Diagram2D b] -> Diagram2D b
forall n a.
(InSpace V2 n a, Floating n, Juxtaposable a, HasOrigin a,
Monoid' a) =>
n -> [a] -> a
vsep Double
1 ([Diagram2D b] -> Diagram2D b) -> [Diagram2D b] -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ [Vertex] -> [Diagram2D b] -> [Diagram2D b]
forall a.
(Transformable a, V a ~ V2, N a ~ Double) =>
[Vertex] -> [a] -> [a]
rotations [Vertex
8,Vertex
9,Vertex
9,Vertex
8] ([Diagram2D b] -> [Diagram2D b]) -> [Diagram2D b] -> [Diagram2D b]
forall a b. (a -> b) -> a -> b
$
(Tgraph -> Diagram2D b) -> [Tgraph] -> [Diagram2D b]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Tgraph -> Diagram2D b
forall b. Renderable (Path V2 Double) b => Tgraph -> Diagram2D b
drawSuperForce [Tgraph]
decomps where
decomps :: [Tgraph]
decomps = Vertex -> [Tgraph] -> [Tgraph]
forall a. Vertex -> [a] -> [a]
take Vertex
4 ([Tgraph] -> [Tgraph]) -> [Tgraph] -> [Tgraph]
forall a b. (a -> b) -> a -> b
$ Tgraph -> [Tgraph]
decompositions Tgraph
sun3Dart
boundaryFDart4, boundaryFDart5 :: Tgraph
boundaryFDart4 :: Tgraph
boundaryFDart4 = [TileFace] -> Tgraph
checkedTgraph ([TileFace] -> Tgraph) -> [TileFace] -> Tgraph
forall a b. (a -> b) -> a -> b
$ BoundaryState -> [TileFace]
boundaryFaces (BoundaryState -> [TileFace]) -> BoundaryState -> [TileFace]
forall a b. (a -> b) -> a -> b
$ BoundaryState -> BoundaryState
forall a. Forcible a => a -> a
force (BoundaryState -> BoundaryState) -> BoundaryState -> BoundaryState
forall a b. (a -> b) -> a -> b
$ Tgraph -> BoundaryState
makeBoundaryState Tgraph
dartD4
boundaryFDart5 :: Tgraph
boundaryFDart5 = [TileFace] -> Tgraph
checkedTgraph ([TileFace] -> Tgraph) -> [TileFace] -> Tgraph
forall a b. (a -> b) -> a -> b
$ BoundaryState -> [TileFace]
boundaryFaces (BoundaryState -> [TileFace]) -> BoundaryState -> [TileFace]
forall a b. (a -> b) -> a -> b
$ BoundaryState -> BoundaryState
forall a. Forcible a => a -> a
force (BoundaryState -> BoundaryState) -> BoundaryState -> BoundaryState
forall a b. (a -> b) -> a -> b
$ Tgraph -> BoundaryState
makeBoundaryState ([Tgraph]
dartDs[Tgraph] -> Vertex -> Tgraph
forall a. HasCallStack => [a] -> Vertex -> a
!!Vertex
5)
boundaryFDart4Fig,boundaryFDart5Fig :: (Renderable (Path V2 Double) b, Renderable (Text Double) b) => Diagram2D b
boundaryFDart4Fig :: forall b.
(Renderable (Path V2 Double) b, Renderable (Text Double) b) =>
Diagram2D b
boundaryFDart4Fig = Diagram2D b -> Diagram2D b
forall b. Diagram2D b -> Diagram2D b
padBorder (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Measure Double -> Diagram2D b -> Diagram2D b
forall a n.
(N a ~ n, HasStyle a, Typeable n) =>
Measure n -> a -> a
lw Measure Double
forall n. OrderedField n => Measure n
ultraThin (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Measure Double -> (Patch -> Diagram2D b) -> Tgraph -> Diagram2D b
forall b a.
(Renderable (Path V2 Double) b, Renderable (Text Double) b,
DrawableLabelled a) =>
Measure Double -> (Patch -> Diagram2D b) -> a -> Diagram2D b
labelSize Measure Double
forall n. OrderedField n => Measure n
tiny Patch -> Diagram2D b
forall a b.
(Drawable a, Renderable (Path V2 Double) b) =>
a -> Diagram2D b
drawj Tgraph
boundaryFDart4
boundaryFDart5Fig :: forall b.
(Renderable (Path V2 Double) b, Renderable (Text Double) b) =>
Diagram2D b
boundaryFDart5Fig = Diagram2D b -> Diagram2D b
forall b. Diagram2D b -> Diagram2D b
padBorder (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Measure Double -> Diagram2D b -> Diagram2D b
forall a n.
(N a ~ n, HasStyle a, Typeable n) =>
Measure n -> a -> a
lw Measure Double
forall n. OrderedField n => Measure n
ultraThin (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Measure Double -> (Patch -> Diagram2D b) -> Tgraph -> Diagram2D b
forall b a.
(Renderable (Path V2 Double) b, Renderable (Text Double) b,
DrawableLabelled a) =>
Measure Double -> (Patch -> Diagram2D b) -> a -> Diagram2D b
labelSize (Double -> Measure Double
forall n. Num n => n -> Measure n
normalized Double
0.006) Patch -> Diagram2D b
forall a b.
(Drawable a, Renderable (Path V2 Double) b) =>
a -> Diagram2D b
drawj Tgraph
boundaryFDart5
boundaryGapFDart4, boundaryGapFDart5 :: Tgraph
boundaryGapFDart4 :: Tgraph
boundaryGapFDart4 = [Vertex] -> Tgraph -> Tgraph
removeVertices [Vertex
354] Tgraph
boundaryFDart4
boundaryGapFDart5 :: Tgraph
boundaryGapFDart5 = [Vertex] -> Tgraph -> Tgraph
removeVertices [Vertex
1467] Tgraph
boundaryFDart5
boundaryGap4Fig, boundaryGap5Fig :: (Renderable (Path V2 Double) b, Renderable (Text Double) b) => Diagram2D b
boundaryGap4Fig :: forall b.
(Renderable (Path V2 Double) b, Renderable (Text Double) b) =>
Diagram2D b
boundaryGap4Fig = Diagram2D b -> Diagram2D b
forall b. Diagram2D b -> Diagram2D b
padBorder (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Measure Double -> Diagram2D b -> Diagram2D b
forall a n.
(N a ~ n, HasStyle a, Typeable n) =>
Measure n -> a -> a
lw Measure Double
forall n. OrderedField n => Measure n
ultraThin (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Measure Double -> (Patch -> Diagram2D b) -> Tgraph -> Diagram2D b
forall b a.
(Renderable (Path V2 Double) b, Renderable (Text Double) b,
DrawableLabelled a) =>
Measure Double -> (Patch -> Diagram2D b) -> a -> Diagram2D b
labelSize Measure Double
forall n. OrderedField n => Measure n
tiny Patch -> Diagram2D b
forall a b.
(Drawable a, Renderable (Path V2 Double) b) =>
a -> Diagram2D b
drawj Tgraph
boundaryGapFDart4
boundaryGap5Fig :: forall b.
(Renderable (Path V2 Double) b, Renderable (Text Double) b) =>
Diagram2D b
boundaryGap5Fig = Diagram2D b -> Diagram2D b
forall b. Diagram2D b -> Diagram2D b
padBorder (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Measure Double -> Diagram2D b -> Diagram2D b
forall a n.
(N a ~ n, HasStyle a, Typeable n) =>
Measure n -> a -> a
lw Measure Double
forall n. OrderedField n => Measure n
ultraThin (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Measure Double -> (Patch -> Diagram2D b) -> Tgraph -> Diagram2D b
forall b a.
(Renderable (Path V2 Double) b, Renderable (Text Double) b,
DrawableLabelled a) =>
Measure Double -> (Patch -> Diagram2D b) -> a -> Diagram2D b
labelSize (Double -> Measure Double
forall n. Num n => n -> Measure n
normalized Double
0.006) Patch -> Diagram2D b
forall a b.
(Drawable a, Renderable (Path V2 Double) b) =>
a -> Diagram2D b
drawj Tgraph
boundaryGapFDart5
boundaryVCoveringFigs :: Renderable (Path V2 Double) b =>
BoundaryState -> [Diagram2D b]
boundaryVCoveringFigs :: forall b.
Renderable (Path V2 Double) b =>
BoundaryState -> [Diagram2D b]
boundaryVCoveringFigs BoundaryState
bd =
(BoundaryState -> Diagram2D b) -> [BoundaryState] -> [Diagram2D b]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Measure Double -> Diagram2D b -> Diagram2D b
forall a n.
(N a ~ n, HasStyle a, Typeable n) =>
Measure n -> a -> a
lw Measure Double
forall n. OrderedField n => Measure n
ultraThin (Diagram2D b -> Diagram2D b)
-> (BoundaryState -> Diagram2D b) -> BoundaryState -> Diagram2D b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Diagram2D b
redg Diagram2D b -> Diagram2D b -> Diagram2D b
forall a. Semigroup a => a -> a -> a
<>) (Diagram2D b -> Diagram2D b)
-> (BoundaryState -> Diagram2D b) -> BoundaryState -> Diagram2D b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (VPatch -> Diagram2D b)
-> (Vertex, Vertex) -> Tgraph -> Diagram2D b
forall a. (VPatch -> a) -> (Vertex, Vertex) -> Tgraph -> a
alignBefore VPatch -> Diagram2D b
forall a b.
(Drawable a, Renderable (Path V2 Double) b) =>
a -> Diagram2D b
draw (Vertex, Vertex)
alig (Tgraph -> Diagram2D b)
-> (BoundaryState -> Tgraph) -> BoundaryState -> Diagram2D b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BoundaryState -> Tgraph
recoverGraph) ([BoundaryState] -> [Diagram2D b])
-> [BoundaryState] -> [Diagram2D b]
forall a b. (a -> b) -> a -> b
$ BoundaryState -> [BoundaryState]
boundaryVCovering BoundaryState
bd
where redg :: Diagram2D b
redg = Colour Double -> Diagram2D b -> Diagram2D b
forall n a.
(InSpace V2 n a, Typeable n, Floating n, HasStyle a) =>
Colour Double -> a -> a
lc Colour Double
forall a. (Ord a, Floating a) => Colour a
red (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Tgraph -> Diagram2D b
forall a b.
(Drawable a, Renderable (Path V2 Double) b) =>
a -> Diagram2D b
draw Tgraph
g
alig :: (Vertex, Vertex)
alig = Tgraph -> (Vertex, Vertex)
defaultAlignment Tgraph
g
g :: Tgraph
g = BoundaryState -> Tgraph
recoverGraph BoundaryState
bd
boundaryECoveringFigs :: Renderable (Path V2 Double) b =>
BoundaryState -> [Diagram2D b]
boundaryECoveringFigs :: forall b.
Renderable (Path V2 Double) b =>
BoundaryState -> [Diagram2D b]
boundaryECoveringFigs BoundaryState
bd =
(BoundaryState -> Diagram2D b) -> [BoundaryState] -> [Diagram2D b]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Measure Double -> Diagram2D b -> Diagram2D b
forall a n.
(N a ~ n, HasStyle a, Typeable n) =>
Measure n -> a -> a
lw Measure Double
forall n. OrderedField n => Measure n
ultraThin (Diagram2D b -> Diagram2D b)
-> (BoundaryState -> Diagram2D b) -> BoundaryState -> Diagram2D b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Diagram2D b
redg Diagram2D b -> Diagram2D b -> Diagram2D b
forall a. Semigroup a => a -> a -> a
<>) (Diagram2D b -> Diagram2D b)
-> (BoundaryState -> Diagram2D b) -> BoundaryState -> Diagram2D b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (VPatch -> Diagram2D b)
-> (Vertex, Vertex) -> Tgraph -> Diagram2D b
forall a. (VPatch -> a) -> (Vertex, Vertex) -> Tgraph -> a
alignBefore VPatch -> Diagram2D b
forall a b.
(Drawable a, Renderable (Path V2 Double) b) =>
a -> Diagram2D b
draw (Vertex, Vertex)
alig (Tgraph -> Diagram2D b)
-> (BoundaryState -> Tgraph) -> BoundaryState -> Diagram2D b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BoundaryState -> Tgraph
recoverGraph) ([BoundaryState] -> [Diagram2D b])
-> [BoundaryState] -> [Diagram2D b]
forall a b. (a -> b) -> a -> b
$ BoundaryState -> [BoundaryState]
boundaryECovering BoundaryState
bd
where redg :: Diagram2D b
redg = Colour Double -> Diagram2D b -> Diagram2D b
forall n a.
(InSpace V2 n a, Typeable n, Floating n, HasStyle a) =>
Colour Double -> a -> a
lc Colour Double
forall a. (Ord a, Floating a) => Colour a
red (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Tgraph -> Diagram2D b
forall a b.
(Drawable a, Renderable (Path V2 Double) b) =>
a -> Diagram2D b
draw Tgraph
g
alig :: (Vertex, Vertex)
alig = Tgraph -> (Vertex, Vertex)
defaultAlignment Tgraph
g
g :: Tgraph
g = BoundaryState -> Tgraph
recoverGraph BoundaryState
bd
kingECoveringFig,kingVCoveringFig :: Renderable (Path V2 Double) b => Diagram2D b
kingECoveringFig :: forall b. Renderable (Path V2 Double) b => Diagram2D b
kingECoveringFig = Diagram2D b -> Diagram2D b
forall b. Diagram2D b -> Diagram2D b
padBorder (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Vertex -> [Diagram2D b] -> Diagram2D b
forall b. Vertex -> [Diagram2D b] -> Diagram2D b
arrangeRows Vertex
3 ([Diagram2D b] -> Diagram2D b) -> [Diagram2D b] -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ BoundaryState -> [Diagram2D b]
forall b.
Renderable (Path V2 Double) b =>
BoundaryState -> [Diagram2D b]
boundaryECoveringFigs (BoundaryState -> [Diagram2D b]) -> BoundaryState -> [Diagram2D b]
forall a b. (a -> b) -> a -> b
$ BoundaryState -> BoundaryState
forall a. Forcible a => a -> a
force (BoundaryState -> BoundaryState) -> BoundaryState -> BoundaryState
forall a b. (a -> b) -> a -> b
$ Tgraph -> BoundaryState
makeBoundaryState Tgraph
kingGraph
kingVCoveringFig :: forall b. Renderable (Path V2 Double) b => Diagram2D b
kingVCoveringFig = Diagram2D b -> Diagram2D b
forall b. Diagram2D b -> Diagram2D b
padBorder (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Vertex -> [Diagram2D b] -> Diagram2D b
forall b. Vertex -> [Diagram2D b] -> Diagram2D b
arrangeRows Vertex
3 ([Diagram2D b] -> Diagram2D b) -> [Diagram2D b] -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ BoundaryState -> [Diagram2D b]
forall b.
Renderable (Path V2 Double) b =>
BoundaryState -> [Diagram2D b]
boundaryVCoveringFigs (BoundaryState -> [Diagram2D b]) -> BoundaryState -> [Diagram2D b]
forall a b. (a -> b) -> a -> b
$ BoundaryState -> BoundaryState
forall a. Forcible a => a -> a
force (BoundaryState -> BoundaryState) -> BoundaryState -> BoundaryState
forall a b. (a -> b) -> a -> b
$ Tgraph -> BoundaryState
makeBoundaryState Tgraph
kingGraph
kingEmpiresFig, kingEmpire1Fig, kingEmpire2Fig :: Renderable (Path V2 Double) b => Diagram2D b
kingEmpiresFig :: forall b. Renderable (Path V2 Double) b => Diagram2D b
kingEmpiresFig = Diagram2D b -> Diagram2D b
forall b. Diagram2D b -> Diagram2D b
padBorder (Diagram2D b -> Diagram2D b) -> Diagram2D b -> Diagram2D b
forall a b. (a -> b) -> a -> b
$ Double -> [Diagram2D b] -> Diagram2D b
forall n a.
(InSpace V2 n a, Floating n, Juxtaposable a, HasOrigin a,
Monoid' a) =>
n -> [a] -> a
hsep Double
10 [Diagram2D b
forall b. Renderable (Path V2 Double) b => Diagram2D b
kingEmpire1Fig, Diagram2D b
forall b. Renderable (Path V2 Double) b => Diagram2D b
kingEmpire2Fig]
kingEmpire1Fig :: forall b. Renderable (Path V2 Double) b => Diagram2D b
kingEmpire1Fig = Tgraph -> Diagram2D b
forall b. Renderable (Path V2 Double) b => Tgraph -> Diagram2D b
showEmpire1 Tgraph
kingGraph
kingEmpire2Fig :: forall b. Renderable (Path V2 Double) b => Diagram2D b
kingEmpire2Fig = Tgraph -> Diagram2D b
forall b. Renderable (Path V2 Double) b => Tgraph -> Diagram2D b
showEmpire2 Tgraph
kingGraph