# fraction_sums.rb, by Martin Prout attr_reader :f, :two, :three, :four, :five, :six def setup sketch_title 'Math Blackboard' @f = createFont('Arial', 24, true) half = 1 / 2r # since ruby 2.1.0 (and jruby-9.0.0.0) third = 1 / 3r quarter = 1 / 4r fifth = 1 / 5r sixth = 1 / 6r seventh = 1 / 7r format2 = '%s + %s = %s' format3 = '%s + %s + %s = %s' format4 = '%s + %s + %s + %s = %s' format5 = '%s + %s + %s + %s + %s = %s' format6 = '%s + %s + %s + %s + %s + %s = %s' sum2 = half + third result2 = numeric_to_mixed_number(sum2) @two = format(format2, half, third, result2) sum3 = half + third + quarter result3 = numeric_to_mixed_number(sum3) @three = format(format3, half, third, quarter, result3) sum4 = half + third + quarter + fifth result4 = numeric_to_mixed_number(sum4) @four = format(format4, half, third, quarter, fifth, result4) sum5 = half + third + quarter + fifth + sixth result5 = numeric_to_mixed_number(sum5) @five = format(format5, half, third, quarter, fifth, sixth, result5) sum6 = half + third + quarter + fifth + sixth + seventh result6 = numeric_to_mixed_number(sum6) @six = format(format6, half, third, quarter, fifth, sixth, seventh, result6) end def draw background 10 text_font(f, 24) fill(220) text('Math Blackboard JRubyArt', 110, 50) text(two, 100, 80) text(three, 100, 105) text(four, 100, 130) text(five, 100, 155) text(six, 100, 180) end def numeric_to_mixed_number(amount) amount_as_integer = amount.to_i if (amount_as_integer != amount.to_f) && (amount_as_integer > 0) fraction = amount - amount_as_integer format('%s %s', amount_as_integer, fraction) else amount.to_s end end def settings size 640, 250 smooth 4 end
Experiments with ruby-processing (processing-2.2.1) and JRubyArt for processing-3.0
Wednesday, 16 September 2015
Fraction Sums
Tuesday, 15 September 2015
Bresenham's Algorithm in JRubyArt
After ruby-processing version, published by norioc on qiita
# ruby-processing sketch # http://qiita.com/norioc/items/99514cb659aad03ab7d7 # http://aidiary.hatenablog.com/entry/20050402/1251514618 N = 15 attr_reader :rows, :cols def setup sketch_title 'Bresenham`s Algorithm' @rows = height / N @cols = width / N end def settings size 400, 400 end def build_line(from:, to:) next_x = from.x next_y = from.y delta_x = to.x - from.x delta_y = to.y - from.y step_x = delta_x < 0 ? -1 : 1 step_y = delta_y < 0 ? -1 : 1 delta_x = (delta_x * 2).abs delta_y = (delta_y * 2).abs b_line = Array.new(1, Vec2D.new(next_x, next_y)) if delta_x > delta_y fraction = delta_y - delta_x / 2 while next_x != to.x if fraction >= 0 next_y += step_y fraction -= delta_x end next_x += step_x fraction += delta_y b_line << Vec2D.new(next_x, next_y) end else fraction = delta_x - delta_y / 2 while next_y != to.y if fraction >= 0 next_x += step_x fraction -= delta_y end next_y += step_y fraction += delta_x b_line << Vec2D.new(next_x, next_y) end end b_line end def draw background 255 translate width / 2, height / 2 rect_mode CENTER no_fill stroke 60 (0..rows).each do |i| (0..cols).each do |j| rect((j - cols / 2) * N, (i - rows / 2) * N, N, N) end end x = mouse_x - width / 2 + N / 2 y = mouse_y - height / 2 + N / 2 b_line = build_line(from: Vec2D.new, to: Vec2D.new(x / N, y / N)) unless b_line.empty? fill color('#C7B097') b_line.each { |v| rect(v.x * N, v.y * N, N, N) } end stroke color('#0000FF') stroke_width 2 line 0, 0, mouse_x - width / 2, mouse_y - height / 2 stroke 0 stroke_width 1 end
Labels:
Bresenhams algorithm,
jruby,
JRubyArt
Subscribe to:
Posts (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