Python aż tak bardzo nie ssie



Mam mnóstwo rzeczy do opisania z ostatnich dwóch tygodni, ale mi się nie chce. Napiszę więc parę słów o dzisiejszym odkryciu.

Monika w ramach jakiegoś projekty z systemów radiokuminkacyjnych czy innego shitu zaprojektowała pokrycie obszaru stacjami bazowymi, zostało jej tylko zilustrować to graficznie. Wybiłem jej z głowy ręczne kreślenie 269 kółek, przekonując, że do tego typu rzeczy nadają się komputery (chociaż wcześniej przyłapałem ją na robieniu kółek w Inkscapie; narysowała całe dwa).

Ponieważ wczoraj oglądałem między innymi Owena Taylora prezentującego Cairo, to napaliłem się na zrobienie tego raz-dwa w pytongu z użyciem tejże biblioteki. Na drodze stały jedynie dwa problemy - nie znam ani pajtona, ani cairo.

Co mi zupełnie nie przeszkodziło w wyklikaniu wspólnie z Moniką czegoś takiego:

#!/usr/bin/python

import cairo
import math

SZER  = 800
WYS = 800

ZACHX = 1.66    # zachodzenie komorek pionowo
ZACHY = 1.7 # zachodzenie komorek pionowo
PRK = WYS/(16.3*ZACHX)  # promien komorki

file = open("cos.png", "wb")

ctx = cairo.Context()
ctx.set_target_png(file, cairo.FORMAT_ARGB32, SZER, WYS);
ctx.identity_matrix()

## biale tlo
#ctx.set_rgb_color(1, 1, 1)
#ctx.set_line_width(WYS)
#ctx.rectangle(0, 0, SZER, WYS)
#ctx.stroke()

dx = 0

# kolka
ctx.set_line_width(2)
for i in range(17):
    for j in range(16):
        if j < 6:    # w pierwszych 3 rzedach mniejsze przesuniecie
            x = PRK + i*ZACHX*PRK - dx*PRK*ZACHX/3.0
        else:
            x = PRK/1.5 + i*ZACHX*PRK - dx*PRK*ZACHX/3.0
        dx = 1 - dx
        y = PRK/1.25 + j*ZACHY*PRK

#       ctx.set_rgb_color(0, (j^i)/15.0, (i^j)/16.0)
        ctx.set_rgb_color(0, 0, 0)
        if not (j < 6 and i == 16 and dx):   # w pierwszych 3 rzedach po 16
            ctx.arc(x, y , PRK, 0, 2*math.pi)
        ctx.move_to(x, y)
#       ctx.line_to(x, y-2) # kropki
        ctx.stroke()

# ramka niebieska
ctx.set_rgb_color(0, 0, 0)
ctx.set_line_width(2)
ctx.rectangle(2, 2, SZER-4, WYS-4)
ctx.stroke()

ctx.show_page()

Oczywiście jakbym znał pytonga, to by było krótsze i ładniejsze. Efekt jednak został osiągnięty - kwadrat zapełniony kółkami to dokładnie to, co było potrzebne. A ja odczuwam przemożną chęć porysowania sobie więcej za pomocą Cairo i pytonga, bo przypomniały mi się zabawy grafiką z lat młodzieńczych (tj. czasów liceum).

A Firefoks jest gópi, bo nie potrafi wyświetlic <img src="Z.svg" width="100" height="100">. I nie obchodzą mnie żadne <object> o których Doomhammerite coś mamrotał, ja chce normalnie obrazki osadzać!


Archived comments:

remiq 2005-06-03 20:06:57

A można prosić o pokazanie dzieła? :)

DoomHammer 2005-06-03 20:08:31

Ale to jest normalnie, ziomboj :P

...tzn. bedzie :)

zdzichuBG 2005-06-03 20:25:20

Jakie tam dzie*o, po prostu nieca*e trzysta zachodz*cych na siebie k**ek. Zreszt* ka*dy mo*e uruchomi* u siebie i zobaczy*, prawda? http://luez.ds.pg.gda.pl/~zdzichu/kajropajton/ , jest te* wersja ,,turkusowa tapeta dla Moniki'' z szerokimi, kolorowymi granicami zasi*g*w stacji bazowych.

zgoda (jarek) 2005-06-08 22:37:18

Jak widać, Python pomaga wszystkim. Normalnie prawie Mesjasz, nie?

zdzichuBG 2005-06-08 22:38:13

Dokładnie Jarku. Aż się boję, że się kiedyś tego Pythona naucze.

DoomHammer 2005-06-08 23:01:21

ostatnio pomógł mi w sprawdzaniu eMDepiątek, w celu weryfikacji nagranej płyty. Słowniki pajtonowskie to fajna rzecz :)

cpu 2005-06-28 22:25:42

zdzuchuBG -> mozesz podac do siebie jakis kontakt mam pytanie

Comments


Comments powered by Disqus