context-free-art: Generate art from context-free grammars
This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.
Create art via context free grammar production rules.
Context free grammar primer
Context free grammars consist of a set of terminal symbols, a set of non-terminal symbols, and production rules that map non-terminals to other symbols.
With a context-free grammar, we can generate strings of terminals that conform to the specified language.
Our language will describe graphics.
How to use
import Art.ContextFree.Definite import Data.List.NonEmpty move = Mod [Move (0, -1.8), Scale 0.8] armN :: Int -> Symbol armN 0 = move $ Circle 1 armN n = move $ Branch $ Circle 1 :| [Mod [Rotate 10] $ armN (n - 1)] arm :: Symbol arm = armN 20 spiral = Branch $ Circle 1 :| [arm, Mod [Rotate 120] arm, Mod [Rotate 240] arm]
The latter produces this graphic:
## Examples
The code for these can be found in the exmaples/ folder
Properties
Versions | 0.1.0.0, 0.2.0.0, 0.2.0.1, 0.2.0.2, 0.2.0.3, 0.3.0.0, 0.3.0.1, 0.3.0.1 |
---|---|
Change log | CHANGELOG.md |
Dependencies | base (>=4.12 && <5), bifunctors (>=5.5), blaze-markup, blaze-svg (>=0.3.6), context-free-art, directory (>=1.3), random (>=1.1), text (>=1.2), text-show (>=3.8) [details] |
License | BSD-3-Clause |
Author | Owen Shepherd |
Maintainer | 414owen@gmail.com |
Category | Graphics |
Home page | https://github.com/414owen/context-free-art |
Uploaded | by 414owen at 2019-10-30T23:41:51Z |
Modules
[Index] [Quick Jump]
- Art
Downloads
- context-free-art-0.3.0.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
Package maintainers
For package maintainers and hackage trustees