Toxiclibs geometry introducing Gfx, TVec2D and Toxi::Rect

See Calling Toxiclibs form JRubyArt for why we use Gfx, and Toxi prefix, and why we use TVec2D and not Vec2D.

Gfx::ToxiclibsSupport is used to render the rect and circle, it provides convenience functions that can render toxiclibs objects (in this case to screen), but it is not absolutely required to use toxiclibs. Gfx::ToxiclibsSupport uses the underlying JRubyArt app, and must be intialized with self, do this in setup. The Rect class is basically a 2D bounding box that can grow to contain a point as in this sketch. TVec2D is very similar to the JRubyArt built in Vec2D, but is a pure java class and a core class in toxiclibs.

require 'toxiclibs'

attr_reader :points, :bounds, :gfx

def settings
  size(400,400)
end

def setup
  sketch_title 'Test Rect'
  @points = []
  @bounds = Toxi::Rect.new(200, 200, 0, 0)
  @gfx = Gfx::ToxiclibsSupport.new(self)
end

def draw
  background(255)
  no_fill
  stroke(0)
  gfx.rect(bounds)
  fill(255, 0, 0)
  no_stroke
  points.each { |p| gfx.circle(p, 5) }
end

def mouse_pressed
  p = TVec2D.new(mouse_x, mouse_y)
  points << p
  bounds.grow_to_contain_point(p)
end