123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- #!/usr/bin/python
- '''
- Schotter pdf reproduction
- It design SchotterR
- Author: Luca COnte ''
- Website: polybius.fyi
- Last edited: June 2019
- '''
- import math,cairo,random
- def plotSquares(ctx):
- global rsum
- for i in range(0,w-1):
- rsum += i*rs # add to the random value
- ctx.save()
- ctx.translate(s*i+1.1**i
- *dp, 0)
- for j in range(0,h-1):
-
- rv = random.uniform(-rsum, rsum)
- # here comes the box :-)
- #box = shapes.square(s)
-
- # box position
- #curr_cx = - w*s/2 + i*s + rv*dp ; curr_cy = - h*s/2 + j*s + rv*dp
- # transforms.center_at(box, [curr_cx, curr_cy])
- #
- # # rotate the box of rv degrees around its center
- # transforms.rotate(box, rv, pivot=(curr_cx, curr_cy))
- # draw the damn box
- # plotter.write(box)
- #
- #ctx.rotate(math.pi * 1 / 4)
- ctx.translate(rs*dp*i, s)
- ctx.save()
- ctx.rotate(rv)
- ctx.rectangle(0,0, s, s)
- ctx.restore()
- ctx.stroke()
- ctx.restore()
- #float RGB touple
- FG_RGB_COLOR=(0,0,0)
- #A4 in 300 DPI
- width, height = 3508,2480
- offsetX, offsetY = 100,500
- w = 22 # width (how many squares - es. 22)
- h = 12 # height (how many squares - es. 12)
- s = 100 # square size (es. 15)
- rs = 0.01 # random step (rotation increment in degrees)
- dp = 2.25 # dampen (soften random effect for position)
- rsum = 0 # dummy initial value for rsum
- surface = cairo.PDFSurface ("/tmp/circle.pdf",width,height)
- ctx = cairo.Context (surface)
- ctx.set_source_rgb(FG_RGB_COLOR[0],FG_RGB_COLOR[1],FG_RGB_COLOR[2])
- ctx.set_line_width(1)
- ctx.translate(offsetX, offsetY)
- plotSquares(ctx)
- ctx.show_page()
|