kopia lustrzana https://github.com/villares/sketch-a-day
				
				
				
			
			
			
			
				main
			
			
		
		
							rodzic
							
								
									59f85dfef9
								
							
						
					
					
						commit
						4fa6585ae3
					
				
										
											Plik binarny nie jest wyświetlany.
										
									
								
							| 
		 Po Szerokość: | Wysokość: | Rozmiar: 80 KiB  | 
										
											Plik binarny nie jest wyświetlany.
										
									
								
							| 
		 Po Szerokość: | Wysokość: | Rozmiar: 88 KiB  | 
										
											Plik binarny nie jest wyświetlany.
										
									
								
							| 
		 Po Szerokość: | Wysokość: | Rozmiar: 83 KiB  | 
										
											Plik binarny nie jest wyświetlany.
										
									
								
							| 
		 Po Szerokość: | Wysokość: | Rozmiar: 74 KiB  | 
										
											Plik binarny nie jest wyświetlany.
										
									
								
							| 
		 Po Szerokość: | Wysokość: | Rozmiar: 69 KiB  | 
| 
						 | 
				
			
			@ -0,0 +1,79 @@
 | 
			
		|||
 | 
			
		||||
pontos = []
 | 
			
		||||
novos_pontos = []
 | 
			
		||||
arrastando = -1
 | 
			
		||||
offset_curva = 10
 | 
			
		||||
novo_offset_curva = 10
 | 
			
		||||
 | 
			
		||||
def setup():
 | 
			
		||||
    size(500, 500)
 | 
			
		||||
    novos_pontos[:] = pontos[:] = sorteia_pontos()
 | 
			
		||||
 | 
			
		||||
def sorteia_pontos():
 | 
			
		||||
    pontos = []
 | 
			
		||||
    for _ in range(5):
 | 
			
		||||
        x, y = random(width * .2, width * .8), random(height * .2, height * .8)
 | 
			
		||||
        pontos.append((x, y))
 | 
			
		||||
    return pontos
 | 
			
		||||
 | 
			
		||||
def draw():
 | 
			
		||||
    # background(240, 250, 250)
 | 
			
		||||
    fill(240, 250, 250, 10)
 | 
			
		||||
    noStroke()
 | 
			
		||||
    rect(0, 0, width, height)
 | 
			
		||||
    draw_pontos(pontos, offset_curva, handle=True)
 | 
			
		||||
    # draw_pontos(novos_pontos, novo_offset_curva, handle=True)
 | 
			
		||||
 | 
			
		||||
    if frameCount % 2 == 0:
 | 
			
		||||
        for i, (x0, y0) in enumerate(pontos):
 | 
			
		||||
            x1, y1 = novos_pontos[i]
 | 
			
		||||
            if (x0, y0) != (x1, y1):
 | 
			
		||||
                pontos[i] = (lerp(x0, x1, .2), lerp(y0, y1, .2))
 | 
			
		||||
        global offset_curva
 | 
			
		||||
        offset_curva = lerp(novo_offset_curva, offset_curva, .8)
 | 
			
		||||
 | 
			
		||||
def draw_pontos(pontos, offset, handle=False):
 | 
			
		||||
    for i, (x0, y0) in enumerate(pontos):
 | 
			
		||||
        x1, y1 = pontos[i - 1]
 | 
			
		||||
        noFill()
 | 
			
		||||
        stroke(0)
 | 
			
		||||
        strokeWeight(2)
 | 
			
		||||
        curva(x0, y0, x1, y1, offset)
 | 
			
		||||
        if handle and dist(mouseX, mouseY, x0, y0) < 10:
 | 
			
		||||
            stroke(255, 0, 0)
 | 
			
		||||
            strokeWeight(1)
 | 
			
		||||
            circle(x0, y0, 10)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def curva(x1, y1, x2, y2, offset=0):
 | 
			
		||||
    L = dist(x1, y1, x2, y2)
 | 
			
		||||
    with pushMatrix():
 | 
			
		||||
        translate(x1, y1)
 | 
			
		||||
        angle = atan2(x1 - x2, y2 - y1)
 | 
			
		||||
        rotate(angle)
 | 
			
		||||
        cx = (L / 2) * offset / 10.
 | 
			
		||||
        bezier(0, 0, -cx, L * .50, +cx, L * .50, 0, L)
 | 
			
		||||
 | 
			
		||||
def mousePressed():
 | 
			
		||||
    global arrastando
 | 
			
		||||
    for i, (x0, y0) in enumerate(pontos):
 | 
			
		||||
        if dist(mouseX, mouseY, x0, y0) < 10:
 | 
			
		||||
            arrastando = i
 | 
			
		||||
 | 
			
		||||
def mouseReleased():
 | 
			
		||||
    global arrastando
 | 
			
		||||
    arrastando = -1
 | 
			
		||||
 | 
			
		||||
def mouseDragged():
 | 
			
		||||
    if arrastando >= 0:
 | 
			
		||||
        novos_pontos[arrastando] = (mouseX, mouseY)
 | 
			
		||||
 | 
			
		||||
def mouseWheel(e):
 | 
			
		||||
    global novo_offset_curva
 | 
			
		||||
    novo_offset_curva += e.getCount() / 5.
 | 
			
		||||
 | 
			
		||||
def keyPressed():
 | 
			
		||||
    if key == ' ':
 | 
			
		||||
        novos_pontos[:] = sorteia_pontos()
 | 
			
		||||
    if key == 's':
 | 
			
		||||
        saveFrame("####.png")
 | 
			
		||||
		Ładowanie…
	
		Reference in New Issue