cf3 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +20 -0
- data/.yardopts +5 -0
- data/CHANGELOG +3 -0
- data/CONTRIBUTING.md +32 -0
- data/Gemfile +4 -0
- data/LICENSE.md +675 -0
- data/README.md +35 -0
- data/Rakefile +15 -0
- data/bin/cf3samples +16 -0
- data/cf3ruby.gemspec +29 -0
- data/lib/cf3.rb +240 -0
- data/lib/cf3/version.rb +3 -0
- data/samples/accident.rb +98 -0
- data/samples/alhambra.rb +79 -0
- data/samples/bar_code.rb +85 -0
- data/samples/city.rb +60 -0
- data/samples/creature.rb +59 -0
- data/samples/dark_star.rb +47 -0
- data/samples/data/java_args.txt +2 -0
- data/samples/dragon.rb +40 -0
- data/samples/escher.rb +124 -0
- data/samples/fern.rb +46 -0
- data/samples/grapher.rb +47 -0
- data/samples/hex_tube.rb +47 -0
- data/samples/isosceles.rb +36 -0
- data/samples/levy.rb +38 -0
- data/samples/pcr.rb +89 -0
- data/samples/sierpinski.rb +44 -0
- data/samples/spiral.rb +53 -0
- data/samples/tree.rb +98 -0
- data/samples/tree4.rb +65 -0
- data/samples/vine.rb +57 -0
- data/samples/y.rb +46 -0
- data/test/test_cf3.rb +26 -0
- metadata +128 -0
    
        data/samples/tree4.rb
    ADDED
    
    | @@ -0,0 +1,65 @@ | |
| 1 | 
            +
            #################################################################
         | 
| 2 | 
            +
            # tree4.rb by Martin Prout after tree4.cfdg
         | 
| 3 | 
            +
            # A non deterministic sketch run it until you get a result you like
         | 
| 4 | 
            +
            # uncomment "srand 5" to get a more deterministic result. It looked
         | 
| 5 | 
            +
            # pretty good on my linux box (however I'm not sure how universal the 
         | 
| 6 | 
            +
            # random seeding is in jruby)
         | 
| 7 | 
            +
            #################################################################
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            require 'cf3'
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            def setup_the_tree
         | 
| 12 | 
            +
              @tree = ContextFree.define do
         | 
| 13 | 
            +
                shape :trunk, 20 do                     # rule has a probability weighting of 20
         | 
| 14 | 
            +
                  circle size: 0.25, brightness: 0.5    # giving an actual probability = 0.952381
         | 
| 15 | 
            +
                  scraggle y: -0.1                      # the minus is require by the upside down coordinate system             
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                shape :trunk, 1 do                      # rule has a probability weighting of 1
         | 
| 19 | 
            +
                  branch size: 0.7                      # giving an actual probability = 0.047619  
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                shape :trunk, 0.02 do                    # empty rule top stop early    
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                shape :branch do
         | 
| 26 | 
            +
                  split do                               # split is like a branch, rewind returns original context
         | 
| 27 | 
            +
                    trunk rotation: 10
         | 
| 28 | 
            +
                  rewind
         | 
| 29 | 
            +
                    trunk rotation: -10
         | 
| 30 | 
            +
                  end
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                shape :scraggle do                       # without an explicit weighting    
         | 
| 34 | 
            +
                  trunk rotation: 5                      # probability of each scraggle rule 
         | 
| 35 | 
            +
                end                                      # is 0.5
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                shape :scraggle do
         | 
| 38 | 
            +
                  trunk rotation: -5
         | 
| 39 | 
            +
                end
         | 
| 40 | 
            +
              end
         | 
| 41 | 
            +
            end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            def setup
         | 
| 44 | 
            +
              size 600, 600
         | 
| 45 | 
            +
              # srand 5  uncomment this to get nice looking tree
         | 
| 46 | 
            +
              smooth
         | 
| 47 | 
            +
              setup_the_tree
         | 
| 48 | 
            +
              background 255         # NB color mode here is "RGB 255", within context free definition 
         | 
| 49 | 
            +
              draw_it                # the color mode is "HSB 1.0", supports :hue, :saturation, :brightness
         | 
| 50 | 
            +
              # save_frame "/home/tux/tree4.png"
         | 
| 51 | 
            +
            end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
            def draw
         | 
| 54 | 
            +
              # create a draw loop
         | 
| 55 | 
            +
            end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
            def draw_it
         | 
| 58 | 
            +
              @tree.render :trunk, start_x: width/2, start_y: height * 0.9, stop_size: height/150, size: height/15
         | 
| 59 | 
            +
            end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
            def mouse_clicked
         | 
| 62 | 
            +
              java.lang.System.gc  # might help to reduce runtime stack blow ups, it happens!
         | 
| 63 | 
            +
              background 1
         | 
| 64 | 
            +
              draw_it
         | 
| 65 | 
            +
            end
         | 
    
        data/samples/vine.rb
    ADDED
    
    | @@ -0,0 +1,57 @@ | |
| 1 | 
            +
            # vine.rb by jashkenas, click mouse to re-run
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'cf3'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            def setup_the_vine
         | 
| 6 | 
            +
              
         | 
| 7 | 
            +
              @vine = ContextFree.define do
         | 
| 8 | 
            +
                
         | 
| 9 | 
            +
                shrink = 0.961
         | 
| 10 | 
            +
                
         | 
| 11 | 
            +
                shape :root do
         | 
| 12 | 
            +
                  split do
         | 
| 13 | 
            +
                    shoot y: 1
         | 
| 14 | 
            +
                    rewind
         | 
| 15 | 
            +
                    shoot rotation: 180
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
                
         | 
| 19 | 
            +
                shape :shoot do
         | 
| 20 | 
            +
                  square
         | 
| 21 | 
            +
                  shoot y: 0.98, rotation: 5, size: shrink + rand * 0.05, brightness: 0.990
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
                
         | 
| 24 | 
            +
                shape :shoot, 0.02 do
         | 
| 25 | 
            +
                  square
         | 
| 26 | 
            +
                  split do
         | 
| 27 | 
            +
                    shoot rotation: 90
         | 
| 28 | 
            +
                    rewind
         | 
| 29 | 
            +
                    shoot rotation: -90
         | 
| 30 | 
            +
                  end
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
                
         | 
| 33 | 
            +
              end
         | 
| 34 | 
            +
            end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            def setup
         | 
| 37 | 
            +
              size 700, 700
         | 
| 38 | 
            +
              setup_the_vine
         | 
| 39 | 
            +
              no_stroke
         | 
| 40 | 
            +
              color_mode HSB, 1.0
         | 
| 41 | 
            +
              smooth
         | 
| 42 | 
            +
              draw_it
         | 
| 43 | 
            +
            end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
            def draw
         | 
| 46 | 
            +
              # Do nothing.
         | 
| 47 | 
            +
            end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            def draw_it
         | 
| 50 | 
            +
              background 0.75, 1.0, 0.15
         | 
| 51 | 
            +
              @vine.render :root, size: height/75, color: [0.75, 0.1, 0.9],
         | 
| 52 | 
            +
                                 start_x: width/2, start_y: height/2
         | 
| 53 | 
            +
            end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            def mouse_clicked
         | 
| 56 | 
            +
              draw_it
         | 
| 57 | 
            +
            end
         | 
    
        data/samples/y.rb
    ADDED
    
    | @@ -0,0 +1,46 @@ | |
| 1 | 
            +
            # y.rb ruby-processing by Martin Prout
         | 
| 2 | 
            +
            require 'cf3'
         | 
| 3 | 
            +
            Y_TOP = -1 / Math.sqrt(3) 
         | 
| 4 | 
            +
            Y_BOT = Math.sqrt(3) / 6
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            def setup_the_triangle
         | 
| 7 | 
            +
              @triangle = ContextFree.define do
         | 
| 8 | 
            +
                ########  
         | 
| 9 | 
            +
                shape :start do
         | 
| 10 | 
            +
                unit brightness: 1.0
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
                
         | 
| 13 | 
            +
                shape :unit do
         | 
| 14 | 
            +
                  triangle size: 1.0
         | 
| 15 | 
            +
                  split do
         | 
| 16 | 
            +
                    unit size: 0.5, x: 0, y: Y_TOP/2, brightness: 0.8
         | 
| 17 | 
            +
                    rewind 
         | 
| 18 | 
            +
                    unit size: 0.5, x: -0.25, y: -Y_TOP/4, brightness: 0.8        
         | 
| 19 | 
            +
                    rewind
         | 
| 20 | 
            +
                    unit size: 0.5, x: 0.25, y: -Y_TOP/4, brightness: 0.8
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
                ########
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
            end
         | 
| 26 | 
            +
                            
         | 
| 27 | 
            +
            def setup
         | 
| 28 | 
            +
              size 1024, 1024
         | 
| 29 | 
            +
              setup_the_triangle
         | 
| 30 | 
            +
              no_stroke
         | 
| 31 | 
            +
              color_mode RGB, 1
         | 
| 32 | 
            +
              smooth 8
         | 
| 33 | 
            +
              draw_it
         | 
| 34 | 
            +
              save_frame("y.png")
         | 
| 35 | 
            +
            end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
             | 
| 38 | 
            +
            def draw
         | 
| 39 | 
            +
               # Do nothing.
         | 
| 40 | 
            +
            end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            def draw_it
         | 
| 43 | 
            +
              background 225, 225, 0
         | 
| 44 | 
            +
              @triangle.render :start, size: height, stop_size: 0.5,
         | 
| 45 | 
            +
              start_x: width/2, start_y: height * 0.6
         | 
| 46 | 
            +
            end
         | 
    
        data/test/test_cf3.rb
    ADDED
    
    | @@ -0,0 +1,26 @@ | |
| 1 | 
            +
            require_relative '../lib/cf3.rb'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            def setup
         | 
| 4 | 
            +
              size 200, 200 
         | 
| 5 | 
            +
              @triangle = ContextFree.define do
         | 
| 6 | 
            +
                shape :tri do
         | 
| 7 | 
            +
                  circle      
         | 
| 8 | 
            +
                  triangle brightness: 0
         | 
| 9 | 
            +
                  circle brightness: 10, size: 0.02
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
              end 
         | 
| 12 | 
            +
              color_mode HSB, 1.0
         | 
| 13 | 
            +
            end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            def draw_it
         | 
| 16 | 
            +
              background 1.0  
         | 
| 17 | 
            +
              @triangle.render :tri, size: height/2
         | 
| 18 | 
            +
            end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            def draw
         | 
| 21 | 
            +
              # Do nothing.
         | 
| 22 | 
            +
            end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            def mouse_clicked
         | 
| 25 | 
            +
              draw_it
         | 
| 26 | 
            +
            end
         | 
    
        metadata
    ADDED
    
    | @@ -0,0 +1,128 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 | 
            +
            name: cf3
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 0.0.1
         | 
| 5 | 
            +
            platform: ruby
         | 
| 6 | 
            +
            authors:
         | 
| 7 | 
            +
            - Jeremy Ashkenas
         | 
| 8 | 
            +
            - Martin Prout
         | 
| 9 | 
            +
            autorequire: 
         | 
| 10 | 
            +
            bindir: bin
         | 
| 11 | 
            +
            cert_chain: []
         | 
| 12 | 
            +
            date: 2013-07-27 00:00:00.000000000 Z
         | 
| 13 | 
            +
            dependencies:
         | 
| 14 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 15 | 
            +
              name: ruby-processing
         | 
| 16 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 17 | 
            +
                requirements:
         | 
| 18 | 
            +
                - - '>='
         | 
| 19 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 20 | 
            +
                    version: 1.0.11
         | 
| 21 | 
            +
              type: :runtime
         | 
| 22 | 
            +
              prerelease: false
         | 
| 23 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 24 | 
            +
                requirements:
         | 
| 25 | 
            +
                - - '>='
         | 
| 26 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 27 | 
            +
                    version: 1.0.11
         | 
| 28 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 29 | 
            +
              name: bundler
         | 
| 30 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 31 | 
            +
                requirements:
         | 
| 32 | 
            +
                - - ~>
         | 
| 33 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 34 | 
            +
                    version: '1.3'
         | 
| 35 | 
            +
              type: :development
         | 
| 36 | 
            +
              prerelease: false
         | 
| 37 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 38 | 
            +
                requirements:
         | 
| 39 | 
            +
                - - ~>
         | 
| 40 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 41 | 
            +
                    version: '1.3'
         | 
| 42 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 43 | 
            +
              name: rake
         | 
| 44 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 45 | 
            +
                requirements:
         | 
| 46 | 
            +
                - - '>='
         | 
| 47 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 48 | 
            +
                    version: '0'
         | 
| 49 | 
            +
              type: :development
         | 
| 50 | 
            +
              prerelease: false
         | 
| 51 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 52 | 
            +
                requirements:
         | 
| 53 | 
            +
                - - '>='
         | 
| 54 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 55 | 
            +
                    version: '0'
         | 
| 56 | 
            +
            description: "    A library for ruby-processing, that allows the writing of context
         | 
| 57 | 
            +
              free \n    sketches (like context free art) in a ruby DSL. It is a bit of a toy\n
         | 
| 58 | 
            +
              \   compared to the c++ version.  However you can get quite a bit of \n    satisfaction
         | 
| 59 | 
            +
              creating an interesting graphic, and you can't always\n    predict what you are
         | 
| 60 | 
            +
              going to get.\n"
         | 
| 61 | 
            +
            email:
         | 
| 62 | 
            +
            - martin_p@lineone.net
         | 
| 63 | 
            +
            executables:
         | 
| 64 | 
            +
            - cf3samples
         | 
| 65 | 
            +
            extensions: []
         | 
| 66 | 
            +
            extra_rdoc_files: []
         | 
| 67 | 
            +
            files:
         | 
| 68 | 
            +
            - .gitignore
         | 
| 69 | 
            +
            - .yardopts
         | 
| 70 | 
            +
            - CHANGELOG
         | 
| 71 | 
            +
            - CONTRIBUTING.md
         | 
| 72 | 
            +
            - Gemfile
         | 
| 73 | 
            +
            - LICENSE.md
         | 
| 74 | 
            +
            - README.md
         | 
| 75 | 
            +
            - Rakefile
         | 
| 76 | 
            +
            - bin/cf3samples
         | 
| 77 | 
            +
            - cf3ruby.gemspec
         | 
| 78 | 
            +
            - lib/cf3.rb
         | 
| 79 | 
            +
            - lib/cf3/version.rb
         | 
| 80 | 
            +
            - samples/accident.rb
         | 
| 81 | 
            +
            - samples/alhambra.rb
         | 
| 82 | 
            +
            - samples/bar_code.rb
         | 
| 83 | 
            +
            - samples/city.rb
         | 
| 84 | 
            +
            - samples/creature.rb
         | 
| 85 | 
            +
            - samples/dark_star.rb
         | 
| 86 | 
            +
            - samples/data/java_args.txt
         | 
| 87 | 
            +
            - samples/dragon.rb
         | 
| 88 | 
            +
            - samples/escher.rb
         | 
| 89 | 
            +
            - samples/fern.rb
         | 
| 90 | 
            +
            - samples/grapher.rb
         | 
| 91 | 
            +
            - samples/hex_tube.rb
         | 
| 92 | 
            +
            - samples/isosceles.rb
         | 
| 93 | 
            +
            - samples/levy.rb
         | 
| 94 | 
            +
            - samples/pcr.rb
         | 
| 95 | 
            +
            - samples/sierpinski.rb
         | 
| 96 | 
            +
            - samples/spiral.rb
         | 
| 97 | 
            +
            - samples/tree.rb
         | 
| 98 | 
            +
            - samples/tree4.rb
         | 
| 99 | 
            +
            - samples/vine.rb
         | 
| 100 | 
            +
            - samples/y.rb
         | 
| 101 | 
            +
            - test/test_cf3.rb
         | 
| 102 | 
            +
            homepage: http://learning-ruby-processing.blogspot.co.uk/
         | 
| 103 | 
            +
            licenses:
         | 
| 104 | 
            +
            - GPL3
         | 
| 105 | 
            +
            metadata: {}
         | 
| 106 | 
            +
            post_install_message: 
         | 
| 107 | 
            +
            rdoc_options: []
         | 
| 108 | 
            +
            require_paths:
         | 
| 109 | 
            +
            - lib
         | 
| 110 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 111 | 
            +
              requirements:
         | 
| 112 | 
            +
              - - '>='
         | 
| 113 | 
            +
                - !ruby/object:Gem::Version
         | 
| 114 | 
            +
                  version: '0'
         | 
| 115 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 116 | 
            +
              requirements:
         | 
| 117 | 
            +
              - - '>='
         | 
| 118 | 
            +
                - !ruby/object:Gem::Version
         | 
| 119 | 
            +
                  version: '0'
         | 
| 120 | 
            +
            requirements: []
         | 
| 121 | 
            +
            rubyforge_project: 
         | 
| 122 | 
            +
            rubygems_version: 2.0.5
         | 
| 123 | 
            +
            signing_key: 
         | 
| 124 | 
            +
            specification_version: 4
         | 
| 125 | 
            +
            summary: A ruby-DSL library for CF3 sketches
         | 
| 126 | 
            +
            test_files:
         | 
| 127 | 
            +
            - test/test_cf3.rb
         | 
| 128 | 
            +
            has_rdoc: 
         |