From 23fea974a4369282905abf36f051bbbfc7e36863 Mon Sep 17 00:00:00 2001 From: Tom Black Date: Thu, 20 Sep 2018 21:09:43 -0700 Subject: Add `Circle` class --- lib/ruby2d.rb | 1 + lib/ruby2d/circle.rb | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 lib/ruby2d/circle.rb (limited to 'lib') diff --git a/lib/ruby2d.rb b/lib/ruby2d.rb index 823512f..6dc72dc 100644 --- a/lib/ruby2d.rb +++ b/lib/ruby2d.rb @@ -7,6 +7,7 @@ require 'ruby2d/window' require 'ruby2d/dsl' require 'ruby2d/quad' require 'ruby2d/line' +require 'ruby2d/circle' require 'ruby2d/rectangle' require 'ruby2d/square' require 'ruby2d/triangle' diff --git a/lib/ruby2d/circle.rb b/lib/ruby2d/circle.rb new file mode 100644 index 0000000..4f87828 --- /dev/null +++ b/lib/ruby2d/circle.rb @@ -0,0 +1,28 @@ +# circle.rb + +module Ruby2D + class Circle + include Renderable + + attr_reader :color + attr_accessor :x, :y, :radius, :sectors + + def initialize(opts = {}) + @x = opts[:x] || 25 + @y = opts[:y] || 25 + @radius = opts[:radius] || 25 + @sectors = opts[:sectors] || 20 + @z = opts[:z] || 0 + self.color = opts[:color] || 'white' + add + end + + def color=(c) + @color = Color.from(c) + end + + def contains?(x, y) + Math.sqrt((x - @x)**2 + (y - @y)**2) <= @radius + end + end +end -- cgit v1.2.3