vlok.py

Created by numworks-nl

Created on February 18, 2021

882 Bytes

Met dit script kan je een vlok tekenen volgens de Koch-curve met n-etappes (met n als gehele positieve getallen) in de kleur die gedefinieerd is in seg(). De functie seg(xa, ya, xb, yb, r, v, b) tekent segmenten A(xa, ya) en B(xb, yb) in de kleur (r, v, b). We kunnen gewoon intypen: seg(xa, ya, xb, yb), de kleur zal dan standaard magenta zijn.


from math import *
from kandinsky import *
from cmath import *
def seg(xa,ya,xb,yb,r=250,v=0,b=250):
  col=color(r,v,b)
  if xa==xb :
    if ya<yb:
      y=ya
      bs=yb
    else :
      y=yb
      bs=ya
    while y<=bs:
      set_pixel(int(xa),int(y),col)
      y=y+1
  else:
    m=(yb-ya)/(xb-xa)
    p=ya-m*xa
    if xa<xb:
      x=xa
      bs=xb
    else :
      x=xb
      bs=xa
    while x<=bs:
      y=m*x+p
      set_pixel(int(x),int(y),col)
      x=x+1
    
def motief(za, zb, n):
  if n==0:
      seg(za.real,za.imag,zb.real,zb.imag)
  else:
      zc=za+(zb-za)/3
      zd=za+2*(zb-za)/3
      ze=zc+(zd-zc)*exp(pi/3*1j)
      motief(za, zc, n-1)
      motief(zc, ze, n-1)
      motief(ze, zd, n-1)
      motief(zd, zb, n-1)

def vlok(n):
  z1=50+165*1j
  z2=230+165*1j
  z3=z2+(z1-z2)*exp(pi/3*1j)
  motief(z1, z2, n)
  motief(z2, z3, n)
  motief(z3, z1, n)