Jay McGavren's Journal

2009-10-19

Ruby on Acid: ConstantGenerator...

It seems obvious, in retrospect, that a little stability was needed with all this randomness…

@f.factory_pool << RubyOnAcid::ConstantFactory.new(rand)

In the image below, one of the Y coordinates is hooked up to a ConstantGenerator whose get_unit() always returns 0.5, hence, always halfway down the screen.

picture-1.png

Similarly:

picture-6.pngpicture-9.pngpicture-8.png

Read more...
2009-10-15

This is an XSD example from a normally stodgy tutorial site; were they trying for innuendo?

<xs:complexType name="jeans">
  <xs:simpleContent>
    <xs:extension base="size">
      <xs:attribute name="sex">

Read more...
2009-10-08

Ruby on Acid, continued...

Came up with an elaborate setup to step through all the permutations of an array of generators, and was getting so much repetition that I switched back to picking randomly. :P Dropped the increment and skip generators from the pool for this run because, frankly, they tended to make things ugly. I have a couple plans to “mute” or otherwise influence their effects, though, so I may be using them further in the future.

A YAML dump of the generators is embedded in each picture, so if you squint you can read what went into each.

00006_random.jpg00046_random.jpg00064_random.jpg00069_random.jpg00113_random.jpg00121_random.jpg00147_random.jpg00170_random.jpg00180_random.jpg

Read more...
2009-10-03

MetaGenerator...

I’m getting an insane amount of variety out of very little code.

picture-39.pngpicture-38.pngpicture-37.png

picture-36.pngpicture-34.png

require 'rubygems'
require 'wx'
require 'rubyonacid/factories/meta'
require 'rubyonacid/factories/flash'
require 'rubyonacid/factories/increment'
require 'rubyonacid/factories/loop'
require 'rubyonacid/factories/random'
require 'rubyonacid/factories/sine'
require 'rubyonacid/factories/skip'



class MyApp < Wx::App

  WIDTH = 480
  HEIGHT = 480

  def on_init
 
    @f = RubyOnAcid::MetaFactory.new
    @f.factories << RubyOnAcid::FlashFactory.new
    @f.factories << RubyOnAcid::LoopFactory.new
    @f.factories << RubyOnAcid::RandomFactory.new
    @f.factories << RubyOnAcid::SineFactory.new
    @f.factories << RubyOnAcid::SkipFactory.new
    
    @resetter = RubyOnAcid::SkipFactory.new(0.999)
    
    #Containing frame.
    frame = Wx::Frame.new(nil, :size => [WIDTH, HEIGHT])
    frame.show
 
    #Displays drawing.
    window = Wx::Window.new(frame, :size => [WIDTH, HEIGHT])
 
    #Animate periodically.
    t = Wx::Timer.new(self, 55)
    evt_timer(55) {animate(window)}
    t.start(33)
 
  end
 
  def animate(window)
     window.paint do |surface|
       surface.pen = Wx::Pen.new(
           Wx::Colour.new(
             @f.within(:red, 0, 255).to_i,
             @f.within(:green, 0, 255).to_i,
             @f.within(:blue, 0, 255).to_i,
             @f.within(:alpha, 50, 255).to_i
           ),
           @f.within(:width, 1, 5).to_i
       )
       surface.draw_line(
          @f.within(:x, 0, WIDTH).to_i,
          @f.within(:y, 0, HEIGHT).to_i,
          @f.within(:x2, 0, WIDTH).to_i,
          @f.within(:y2, 0, HEIGHT).to_i
       )
     end
     @f.reset_assignments if @resetter.boolean(:reset)
  end

end

app = MyApp.new
app.main_loop

Read more...
2009-09-30

Guess I'm freaking amazing, then...

We are all motivated by a keen desire for praise, and the better a man is, the more he is inspired to glory.

-Cicero

Read more...