# The Nature of Code # http://natureofcode.com # NOC_1_11_motion101_acceleration_array load_library :vecmath class Mover TOP_SPEED = 6 attr_reader :location, :velocity, :topspeed_squared def initialize(width, height) @location = Vec2D.new(rand(width/2), rand(height/2)) @velocity = Vec2D.new(0, 0) @topspeed_squared = TOP_SPEED * TOP_SPEED end def update mouse = Vec2D.new(mouse_x, mouse_y) acceleration = mouse - location acceleration.normalize! acceleration *= 0.2 @velocity += acceleration @velocity.set_mag(TOP_SPEED) if velocity.mag_squared > topspeed_squared @location += velocity end def display stroke(0) stroke_weight(2) fill(127) ellipse(location.x, location.y, 48, 48) end end def setup size(800, 200) @movers = Array.new(20) { Mover.new(width, height) } end def draw background(255) @movers.each do |mover| mover.update mover.display end end
Experiments with ruby-processing (processing-2.2.1) and JRubyArt for processing-3.0
Tuesday, 18 February 2014
Nature of Code examples now ported to ruby
Thanks to Pierre-Pat, Shiffmans the nature of code examples have now been ported to ruby-processing, get them here. Naturally enough PVectors were retained in the examples (the code after all originally comes from Dan Shiffman). I am not a big fan of the PVector class (which I think is trying to do too much, which is why I created the vecmath library for ruby-processing) so here is one of examples that could easily use the Vec2D class instead of PVector:-
Labels:
nature of code,
pierre-pat,
PVector,
ruby-processing,
vecmath
Subscribe to:
Post Comments (Atom)
Followers
About Me
- monkstone
- I have developed JRubyArt and propane new versions of ruby-processing for JRuby-9.1.5.0 and processing-3.2.2
No comments:
Post a Comment