LINUX.ORG.RU

Программа генерации квадратных мозаик через Python-Cairo


0

2

Написал простенькую программку. Генерирует «сетку» из цветных квадратиков.
В принципе, может быть полезна для подбора (генерации) цветовой палитры.

Думаю также над созданием аналогичной программки, но - для треугольников, многоугольников. Нужен какой-то красивый алгоритм разбиения плоскости на многоугольники + сборка их в виде массивов координат [(x1,y1,x2,y2,...)].

Вот исходный код для квадратных мозаик:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import cairo
import sys

argc = len(sys.argv)
if (argc < 7): sys.exit()
W, NX, c1, c2, c3, filename_o = sys.argv[1:7]
W, NX, c1, c2, c3 = map(int,[W, NX, c1, c2, c3])
H = W
NY = NX
SIZEX = W/NX
SIZEY = H/NY

surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, W, H)
ctx = cairo.Context(surface)
a = range(256)
r = g = b = 0 # Надо как-то стартовать не с #000000 (Black).
for i in xrange(NY):
  for j in xrange(NX):
    x1 = (j+0)*SIZEX
    x2 = (j+1)*SIZEX
    y1 = (i+0)*SIZEY
    y2 = (i+1)*SIZEY
    # эти выражения можно изменить (будет другой узор),
    r = (g+b+c1)%256
    g = (r+b+c2)%256
    b = (r+g+b+c3)%256
    #print r,g,b
    ctx.rectangle(x1,y1,x2,y2)
    ctx.set_source_rgb(r/256.0,g/256.0,b/256.0)
    ctx.fill_preserve()
    ctx.set_source_rgb(0,0,0)
    ctx.stroke()
    ctx.fill()
Страничка проекта (с картинками): http://php.kirovnet.ru/pydpoly.html

★★★★★

Искать на сорцфордже генераторы сеток.
Они конечно не для того совсем, но плоскость на многоугольники расбить смогут.

knkd
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.