Ruby でグラフィック表示のできる Gem 'Ruby 2D' で遊んでみました。アニメーションをしています。三角が丸たちの上にあります。色は半透明になっています。
コード。
ruby2d_sample2.rb
require 'ruby2d' Width = 500 C = 15 #円の数 R = 20 #円の半径 L = 150 #三角形の一辺の長さ set width: Width, height: Width circles = C.times.map { Circle.new x: rand(R..Width - R), y: rand(R..Width - R), radius: R, color: Color.new([rand, rand, rand, 0.8]), z: 0 } cvs = circles.map {[rand(-3.0..3.0), rand(-3.0..3.0)]} #円の移動ベクトル triangle = 4.times.map {|i| cn = Width / 2.0 xs = [cn - L / 2.0, cn + L / 2.0] height = L * 0.866 case i when 0, 1 j = i * 2 - 1 x1, y1 = xs[0], cn - height / 2 * j x2, y2 = xs[1], cn - height / 2 * j x3, y3 = cn, cn + height / 2 * j else j = i * 2 - 5 x1, y1 = cn - height / 2 * j, xs[0] x2, y2 = cn - height / 2 * j, xs[1] x3, y3 = cn + height / 2 * j, cn end Triangle.new x1: x1, y1: y1, x2: x2, y2: y2, x3: x3, y3: y3, color: "#FAB536", z: 10, opacity: 0.8 } triangle.each(&:remove) h = {0=>0, 1=>2, 2=>1, 3=>3} t = 0 update do #円の移動 circles.zip(cvs).each do |c, vec| c.x += vec[0] c.y += vec[1] c.x = Width + R if c.x < -R c.y = Width + R if c.y < -R c.x = -R if c.x > Width + R c.y = -R if c.y > Width + R end #三角形の回転 k = t / 100 % 4 triangle[h[k]].add triangle[h[(k - 1) % 4]].remove t += 1 end show
'Ruby 2D' についてはこちらで紹介しています。
obelisk.hatenablog.com