GTK+ で落書き 18(Ruby)

どうでもよいのですが、遊んでみました。
20190729010046
種がそれっぽく描けない…。

oekaki_sample24.rb

require 'oekaki'
include Math

rs = 64 * (270 - 45)
rd = 64 * 90

Oekaki.app do
  draw do
    clear
    
    red   = color(0xffff, 0, 0)
    green = color(0, 0xffff, 0)
    black = color(0, 0, 0)
    
    arc2 = ->(fill, x, y, r, d1, d2, color = nil) {
      arc(fill, x - r, y - r, 2 * r, 2 * r, d1, d2, color)
    }
    
    arc2.(true, 150, 50, 180, rs, rd, green)
    arc2.(true, 150, 50, 150, rs, rd, red)
    
    n = 8
    n.times do |i|
      red_r = 80 + rand(3)
      rad = PI * (225 + 10 + (70.0 / n) * i) / 180
      
      circle(true, 150 + red_r * cos(rad), 50 - red_r * sin(rad), 3, black)
      red_r += 15
      circle(true, 150 + red_r * cos(rad), 50 - red_r * sin(rad), 3, black)
    end
  end
end

二重の扇形を描くのに組み込みのメソッド arc() では描きにくいので、arc2.() という関数を作りました。中心の座標と半径を与えれば描けます。

描画には自作の Gem 'oekaki' を使っています。
oekaki | RubyGems.org | your community gem host
GTK+でお絵かきしてみた(Ruby) - Camera Obscura