Sierpinski carpet: Difference between revisions

m
Line 4,967:
{{libheader|JRubyArt}}
<lang ruby>
require 'picrate'
attr_reader :limit
 
class SierpinskiCarpet < Processing::App
def settings
attr_reader :limit
size(540, 540)
end
 
def setup
sketch_title 'Sierpinski Carpet'
n = 4
@limit = width / 3**(n - 1)
fill( 0)
background( 255)
no_stroke
rectangles(0, 0, width / 3)
# draw first hole
end
rect(width / 3, height / 3, width / 3, width / 3)
holes(width / 3, height / 3, width / 3)
end
 
def in_carpet?(xxpos, yypos)
!(xxpos == 1 && yypos == 1)
end
 
def holesrectangles(xxpos, yypos, sdim)
return if sdim < limit
 
grid(3, 3) do |row, col|
xc = x - s
yc offset_x = yxpos + row -* sdim
grid(3, 3) do |row, offset_y = ypos + col| * dim
next rect(offset_x, offset_y, dim, dim) unless in_carpet?(row, col)
rectangles(offset_x, offset_y, dim / 3)
end
end
 
def settings
xx = xc + row * s
size(540729, 540729)
yy = yc + col * s
len = s / 3
rect(xx + len, yy + len, len, len)
holes(xx + s / 3, yy + s / 3, s / 3)
end
end
 
SierpinskiCarpet.new
 
</lang>
 
Anonymous user