kopia lustrzana https://github.com/villares/sketch-a-day
				
				
				
			
			
			
			
				main
			
			
		
		
							rodzic
							
								
									2a5505f8f0
								
							
						
					
					
						commit
						b545a7f1e8
					
				| 
						 | 
				
			
			@ -0,0 +1,44 @@
 | 
			
		|||
"""
 | 
			
		||||
Alexandre B A Villares http://abav.lugaralgum.com - GPL v3 
 | 
			
		||||
 | 
			
		||||
A helper for the Processing gifAnimation library https://github.com/extrapixel/gif-animation/tree/3.0
 | 
			
		||||
Download from https://github.com/villares/processing-play/blob/master/export_GIF/unzip_and_move_to_libraries_GifAnimation.zip
 | 
			
		||||
This helper was inspired by an example by Art Simon https://github.com/APCSPrinciples/AnimatedGIF/
 | 
			
		||||
 | 
			
		||||
v2019_09_23
 | 
			
		||||
 | 
			
		||||
# add at the start of your sketch:
 | 
			
		||||
  add_library('gifAnimation')
 | 
			
		||||
  from gif_animation_helper import gif_export
 | 
			
		||||
# add at the end of draw():
 | 
			
		||||
  gif_export(GifMaker, "filename")
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
def gif_export(GifMaker,             # gets a reference to the library
 | 
			
		||||
               filename="exported",  # .gif will be added
 | 
			
		||||
               repeat=0,             # 0 makes it an "endless" animation
 | 
			
		||||
               quality=100,          # quality range 0 - 255
 | 
			
		||||
               delay=50,            # this is quick
 | 
			
		||||
               frames=0,             # 0 will stop on keyPressed or frameCount >= 100000
 | 
			
		||||
               finish=False):        # force stop
 | 
			
		||||
    global gifExporter
 | 
			
		||||
    try:
 | 
			
		||||
        gifExporter
 | 
			
		||||
    except NameError:
 | 
			
		||||
        gifExporter = GifMaker(this, filename + ".gif")
 | 
			
		||||
        gifExporter.setRepeat(repeat)
 | 
			
		||||
        gifExporter.setQuality(quality)
 | 
			
		||||
        gifExporter.setDelay(delay)
 | 
			
		||||
        print("gif recording started")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    gifExporter.addFrame()
 | 
			
		||||
 | 
			
		||||
    if (frames == 0 and keyPressed and key == "e" or
 | 
			
		||||
        frames != 0 and frameCount >= frames):
 | 
			
		||||
        finish = True
 | 
			
		||||
                
 | 
			
		||||
    if finish:
 | 
			
		||||
        gifExporter.finish()
 | 
			
		||||
        print("gif saved, exit")
 | 
			
		||||
        exit()
 | 
			
		||||
										
											Plik binarny nie jest wyświetlany.
										
									
								
							| 
		 Po Szerokość: | Wysokość: | Rozmiar: 4.1 MiB  | 
| 
						 | 
				
			
			@ -0,0 +1,69 @@
 | 
			
		|||
# inspired by https://twitter.com/beesandbombs/status/1247567578802855938?s=20
 | 
			
		||||
add_library('GifAnimation')
 | 
			
		||||
from gif_animation_helper import gif_export
 | 
			
		||||
 | 
			
		||||
s_size = 50
 | 
			
		||||
COLORS = [color(255, 255, 0),
 | 
			
		||||
          color(255, 0, 0),
 | 
			
		||||
          color(0, 0, 255),
 | 
			
		||||
          ]
 | 
			
		||||
 | 
			
		||||
def setup():
 | 
			
		||||
    size(400, 400)
 | 
			
		||||
    blendMode(ADD)  # DIFFERENCE # ECVLUSION
 | 
			
		||||
    rectMode(CENTER)
 | 
			
		||||
    init()
 | 
			
		||||
 | 
			
		||||
def init():
 | 
			
		||||
    from itertools import product
 | 
			
		||||
    global origin, target, current
 | 
			
		||||
    origin = []
 | 
			
		||||
    target = []
 | 
			
		||||
    # grid = ((-1, -1), (-1, 0), (0, 0), (0, -1))
 | 
			
		||||
    grid = product(range(-2, 2), repeat=2)
 | 
			
		||||
 | 
			
		||||
    for p in grid:
 | 
			
		||||
        h_size = s_size / 2
 | 
			
		||||
        off_x, off_y = h_size + p[0] * s_size, h_size + p[1] * s_size
 | 
			
		||||
        for _ in COLORS:
 | 
			
		||||
            origin.append((width / 2. + off_x,
 | 
			
		||||
                           height / 2. + off_y,
 | 
			
		||||
                           0,
 | 
			
		||||
                           s_size))
 | 
			
		||||
            target.append((random(s_size, width - s_size),
 | 
			
		||||
                           random(s_size, height - s_size),
 | 
			
		||||
                           random(-HALF_PI, HALF_PI),
 | 
			
		||||
                           random(s_size, s_size * 1.5)))
 | 
			
		||||
    current = origin[:]
 | 
			
		||||
 | 
			
		||||
def draw():
 | 
			
		||||
    background(0)
 | 
			
		||||
    noFill()
 | 
			
		||||
    strokeWeight(5)
 | 
			
		||||
    t = .5 - cos(radians(frameCount % 360)) / 2.  # map(mouseX, 0, width, 0, 1)
 | 
			
		||||
    for i, origin_i in enumerate(origin):
 | 
			
		||||
        stroke(COLORS[i % len(COLORS)])
 | 
			
		||||
        x, y, r, s = lerp_sequence(origin_i, target[i], t)
 | 
			
		||||
        pushMatrix()
 | 
			
		||||
        translate(x, y)
 | 
			
		||||
        rotate(r)
 | 
			
		||||
        circle(0, 0, s)
 | 
			
		||||
        popMatrix()
 | 
			
		||||
 | 
			
		||||
    if frameCount < 360:
 | 
			
		||||
        if frameCount % 2:
 | 
			
		||||
           gif_export(GifMaker, "animation")
 | 
			
		||||
    else:
 | 
			
		||||
        gif_export(GifMaker, "animation", finish=True)
 | 
			
		||||
 | 
			
		||||
    # if frameCount % 360 == 0:
 | 
			
		||||
    #     init()
 | 
			
		||||
 | 
			
		||||
def lerp_sequence(a, b, t):
 | 
			
		||||
    c = []
 | 
			
		||||
    for c_a, c_b in zip(a, b):
 | 
			
		||||
        c.append(lerp(c_a, c_b, t))
 | 
			
		||||
    return c
 | 
			
		||||
 | 
			
		||||
def keyPressed():
 | 
			
		||||
    init()
 | 
			
		||||
		Ładowanie…
	
		Reference in New Issue