villares 2019-05-06 23:33:26 -03:00
rodzic f219e7ab65
commit 88bd808979
13 zmienionych plików z 315 dodań i 15 usunięć

Wyświetl plik

@ -10,8 +10,8 @@
<style> body, html, canvas {padding: 0; margin: 0; overflow: hidden;} </style> <style> body, html, canvas {padding: 0; margin: 0; overflow: hidden;} </style>
<script src="static/p5.js"></script> <script src="static/p5.js"></script>
<script src="static/p5.dom.js"></script> <script src="static/p5.dom.js"></script>
<script src="static/constants.js"></script> <!-- <script src="static/constants.js"></script>
<script src="target/sketch_190505b.js" type="module"></script> --> <script src="target/sketch_190505b.js" type="module"></script>
</head> </head>
<body> <body>

Wyświetl plik

@ -1,6 +1,5 @@
from pytop5js import * from pytop5js import *
w = h = d = 1 w = h = d = 1
# Cubo # Cubo

Wyświetl plik

@ -1,4 +1,4 @@
// Transcrypt'ed from Python, 2019-05-06 00:01:48 // Transcrypt'ed from Python, 2019-05-06 22:22:54
var __name__ = 'org.transcrypt.__runtime__'; var __name__ = 'org.transcrypt.__runtime__';
export var __envir__ = {}; export var __envir__ = {};
__envir__.interpreter_name = 'python'; __envir__.interpreter_name = 'python';

Wyświetl plik

@ -1,4 +1,4 @@
// Transcrypt'ed from Python, 2019-05-06 00:01:48 // Transcrypt'ed from Python, 2019-05-06 22:22:55
import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __proxy__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, all, any, assert, bool, bytearray, bytes, callable, chr, deepcopy, delattr, dict, dir, divmod, enumerate, getattr, hasattr, input, isinstance, issubclass, len, list, object, ord, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, setattr, sorted, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __proxy__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, all, any, assert, bool, bytearray, bytes, callable, chr, deepcopy, delattr, dict, dir, divmod, enumerate, getattr, hasattr, input, isinstance, issubclass, len, list, object, ord, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, setattr, sorted, sum, tuple, zip} from './org.transcrypt.__runtime__.js';
var __name__ = 'pytop5js'; var __name__ = 'pytop5js';
export var _P5_INSTANCE = null; export var _P5_INSTANCE = null;
@ -993,6 +993,17 @@ export var TAU = null;
export var TWO_PI = null; export var TWO_PI = null;
export var DEGREES = null; export var DEGREES = null;
export var RADIANS = null; export var RADIANS = null;
export var CLOSE = null;
export var RGB = null;
export var HSB = null;
export var CMYK = null;
export var TOP = null;
export var BOTTOM = null;
export var CENTER = null;
export var LEFT = null;
export var RIGHT = null;
export var SHIFT = null;
export var WEBGL = null;
export var frameCount = null; export var frameCount = null;
export var focused = null; export var focused = null;
export var displayWidth = null; export var displayWidth = null;
@ -1031,7 +1042,6 @@ export var mouseButton = null;
export var mouseIsPressed = null; export var mouseIsPressed = null;
export var touches = null; export var touches = null;
export var pixels = null; export var pixels = null;
export var CLOSE = null;
export var pre_draw = function (p5_instance, draw_func) { export var pre_draw = function (p5_instance, draw_func) {
HALF_PI = p5_instance.HALF_PI; HALF_PI = p5_instance.HALF_PI;
PI = p5_instance.PI; PI = p5_instance.PI;
@ -1040,6 +1050,17 @@ export var pre_draw = function (p5_instance, draw_func) {
TWO_PI = p5_instance.TWO_PI; TWO_PI = p5_instance.TWO_PI;
DEGREES = p5_instance.DEGREES; DEGREES = p5_instance.DEGREES;
RADIANS = p5_instance.RADIANS; RADIANS = p5_instance.RADIANS;
CLOSE = p5_instance.CLOSE;
RGB = p5_instance.RGB;
HSB = p5_instance.HSB;
CMYK = p5_instance.CMYK;
TOP = p5_instance.TOP;
BOTTOM = p5_instance.BOTTOM;
CENTER = p5_instance.CENTER;
LEFT = p5_instance.LEFT;
RIGHT = p5_instance.RIGHT;
SHIFT = p5_instance.SHIFT;
WEBGL = p5_instance.WEBGL;
frameCount = p5_instance.frameCount; frameCount = p5_instance.frameCount;
focused = p5_instance.focused; focused = p5_instance.focused;
displayWidth = p5_instance.displayWidth; displayWidth = p5_instance.displayWidth;
@ -1078,7 +1099,6 @@ export var pre_draw = function (p5_instance, draw_func) {
mouseIsPressed = p5_instance.mouseIsPressed; mouseIsPressed = p5_instance.mouseIsPressed;
touches = p5_instance.touches; touches = p5_instance.touches;
pixels = p5_instance.pixels; pixels = p5_instance.pixels;
CLOSE = p5_instance.CLOSE;
return draw_func (); return draw_func ();
}; };
export var global_p5_injection = function (p5_sketch) { export var global_p5_injection = function (p5_sketch) {

File diff suppressed because one or more lines are too long

Wyświetl plik

@ -747,6 +747,17 @@ TAU = None
TWO_PI = None TWO_PI = None
DEGREES = None DEGREES = None
RADIANS = None RADIANS = None
CLOSE = None
RGB = None
HSB = None
CMYK = None
TOP = None
BOTTOM = None
CENTER = None
LEFT = None
RIGHT = None
SHIFT = None
WEBGL = None
frameCount = None frameCount = None
focused = None focused = None
displayWidth = None displayWidth = None
@ -785,13 +796,12 @@ mouseButton = None
mouseIsPressed = None mouseIsPressed = None
touches = None touches = None
pixels = None pixels = None
CLOSE = None
def pre_draw(p5_instance, draw_func): def pre_draw(p5_instance, draw_func):
""" """
We need to run this before the actual draw to insert and update p5 env variables We need to run this before the actual draw to insert and update p5 env variables
""" """
global HALF_PI, PI, QUARTER_PI, TAU, TWO_PI, DEGREES, RADIANS, frameCount, focused, displayWidth, displayHeight, windowWidth, windowHeight, width, height, disableFriendlyErrors, deviceOrientation, accelerationX, accelerationY, accelerationZ, pAccelerationX, pAccelerationY, pAccelerationZ, rotationX, rotationY, rotationZ, pRotationX, pRotationY, pRotationZ, turnAxis, keyIsPressed, key, keyCode, mouseX, mouseY, pmouseX, pmouseY, winMouseX, winMouseY, pwinMouseX, pwinMouseY, mouseButton, mouseIsPressed, touches, pixels, CLOSE global HALF_PI, PI, QUARTER_PI, TAU, TWO_PI, DEGREES, RADIANS, CLOSE, RGB, HSB, CMYK, TOP, BOTTOM, CENTER, LEFT, RIGHT, SHIFT, WEBGL, frameCount, focused, displayWidth, displayHeight, windowWidth, windowHeight, width, height, disableFriendlyErrors, deviceOrientation, accelerationX, accelerationY, accelerationZ, pAccelerationX, pAccelerationY, pAccelerationZ, rotationX, rotationY, rotationZ, pRotationX, pRotationY, pRotationZ, turnAxis, keyIsPressed, key, keyCode, mouseX, mouseY, pmouseX, pmouseY, winMouseX, winMouseY, pwinMouseX, pwinMouseY, mouseButton, mouseIsPressed, touches, pixels
HALF_PI = p5_instance.HALF_PI HALF_PI = p5_instance.HALF_PI
PI = p5_instance.PI PI = p5_instance.PI
@ -800,6 +810,17 @@ def pre_draw(p5_instance, draw_func):
TWO_PI = p5_instance.TWO_PI TWO_PI = p5_instance.TWO_PI
DEGREES = p5_instance.DEGREES DEGREES = p5_instance.DEGREES
RADIANS = p5_instance.RADIANS RADIANS = p5_instance.RADIANS
CLOSE = p5_instance.CLOSE
RGB = p5_instance.RGB
HSB = p5_instance.HSB
CMYK = p5_instance.CMYK
TOP = p5_instance.TOP
BOTTOM = p5_instance.BOTTOM
CENTER = p5_instance.CENTER
LEFT = p5_instance.LEFT
RIGHT = p5_instance.RIGHT
SHIFT = p5_instance.SHIFT
WEBGL = p5_instance.WEBGL
frameCount = p5_instance.frameCount frameCount = p5_instance.frameCount
focused = p5_instance.focused focused = p5_instance.focused
displayWidth = p5_instance.displayWidth displayWidth = p5_instance.displayWidth
@ -838,7 +859,6 @@ def pre_draw(p5_instance, draw_func):
mouseIsPressed = p5_instance.mouseIsPressed mouseIsPressed = p5_instance.mouseIsPressed
touches = p5_instance.touches touches = p5_instance.touches
pixels = p5_instance.pixels pixels = p5_instance.pixels
CLOSE = p5_instance.CLOSE
return draw_func() return draw_func()

Wyświetl plik

@ -1,6 +1,6 @@
// Transcrypt'ed from Python, 2019-05-06 00:01:48 // Transcrypt'ed from Python, 2019-05-06 22:22:55
import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __proxy__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, all, any, assert, bool, bytearray, bytes, callable, chr, deepcopy, delattr, dict, dir, divmod, enumerate, getattr, hasattr, input, isinstance, issubclass, len, list, object, ord, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, setattr, sorted, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __proxy__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, all, any, assert, bool, bytearray, bytes, callable, chr, deepcopy, delattr, dict, dir, divmod, enumerate, getattr, hasattr, input, isinstance, issubclass, len, list, object, ord, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, setattr, sorted, sum, tuple, zip} from './org.transcrypt.__runtime__.js';
import {CLOSE, DEGREES, HALF_PI, PI, QUARTER_PI, RADIANS, TAU, TWO_PI, _P5_INSTANCE, abs, accelerationX, accelerationY, accelerationZ, acos, alpha, ambientLight, ambientMaterial, angleMode, append, applyMatrix, arc, arrayCopy, asin, atan, atan2, background, beginContour, beginShape, bezier, bezierDetail, bezierPoint, bezierTangent, bezierVertex, blend, blendMode, blue, boolean, box, brightness, byte, camera, ceil, char, circle, color, colorMode, concat, cone, constrain, copy, cos, createCamera, createCanvas, createGraphics, createImage, createNumberDict, createShader, createStringDict, createVector, createWriter, cursor, curve, curveDetail, curvePoint, curveTangent, curveTightness, curveVertex, cylinder, day, debugMode, degrees, deviceMoved, deviceOrientation, deviceShaken, deviceTurned, directionalLight, disableFriendlyErrors, displayDensity, displayHeight, displayWidth, dist, doubleClicked, ellipse, ellipseMode, ellipsoid, endContour, endShape, exp, fill, filter, float, floor, focused, frameCount, frameRate, fullscreen, getURL, getURLParams, getURLPath, global_p5_injection, green, height, hex, hour, httpDo, httpGet, httpPost, hue, image, imageMode, int, join, key, keyCode, keyIsDown, keyIsPressed, keyPressed, keyReleased, keyTyped, lerp, lerpColor, lightness, lights, line, loadBytes, loadFont, loadImage, loadJSON, loadModel, loadPixels, loadShader, loadStrings, loadTable, loadXML, log, loop, mag, map, match, matchAll, max, millis, min, minute, model, month, mouseButton, mouseClicked, mouseDragged, mouseIsPressed, mouseMoved, mousePressed, mouseReleased, mouseWheel, mouseX, mouseY, nf, nfc, nfp, nfs, noCanvas, noCursor, noDebugMode, noFill, noLoop, noSmooth, noStroke, noTint, noise, noiseDetail, noiseSeed, norm, normalMaterial, orbitControl, ortho, pAccelerationX, pAccelerationY, pAccelerationZ, pRotationX, pRotationY, pRotationZ, perspective, pixelDensity, pixels, plane, pmouseX, pmouseY, point, pointLight, pow, pre_draw, preload, print, push, pwinMouseX, pwinMouseY, py_clear, py_get, py_pop, py_sort, py_split, quad, quadraticVertex, radians, random, randomGaussian, randomSeed, rect, rectMode, red, redraw, remove, resetMatrix, resetShader, resizeCanvas, reverse, rotate, rotateX, rotateY, rotateZ, rotationX, rotationY, rotationZ, round, saturation, save, saveCanvas, saveFrames, saveJSON, saveStrings, saveTable, scale, second, set, setAttributes, setCamera, setMoveThreshold, setShakeThreshold, shader, shearX, shearY, shininess, shorten, shuffle, sin, smooth, specularMaterial, sphere, splice, splitTokens, sq, sqrt, square, start_p5, str, stroke, strokeCap, strokeJoin, strokeWeight, subset, tan, text, textAlign, textAscent, textDescent, textFont, textLeading, textSize, textStyle, textWidth, texture, textureMode, textureWrap, tint, torus, touchEnded, touchMoved, touchStarted, touches, translate, triangle, trim, turnAxis, unchar, unhex, updatePixels, vertex, width, winMouseX, winMouseY, windowHeight, windowResized, windowWidth, year} from './pytop5js.js'; import {BOTTOM, CENTER, CLOSE, CMYK, DEGREES, HALF_PI, HSB, LEFT, PI, QUARTER_PI, RADIANS, RGB, RIGHT, SHIFT, TAU, TOP, TWO_PI, WEBGL, _P5_INSTANCE, abs, accelerationX, accelerationY, accelerationZ, acos, alpha, ambientLight, ambientMaterial, angleMode, append, applyMatrix, arc, arrayCopy, asin, atan, atan2, background, beginContour, beginShape, bezier, bezierDetail, bezierPoint, bezierTangent, bezierVertex, blend, blendMode, blue, boolean, box, brightness, byte, camera, ceil, char, circle, color, colorMode, concat, cone, constrain, copy, cos, createCamera, createCanvas, createGraphics, createImage, createNumberDict, createShader, createStringDict, createVector, createWriter, cursor, curve, curveDetail, curvePoint, curveTangent, curveTightness, curveVertex, cylinder, day, debugMode, degrees, deviceMoved, deviceOrientation, deviceShaken, deviceTurned, directionalLight, disableFriendlyErrors, displayDensity, displayHeight, displayWidth, dist, doubleClicked, ellipse, ellipseMode, ellipsoid, endContour, endShape, exp, fill, filter, float, floor, focused, frameCount, frameRate, fullscreen, getURL, getURLParams, getURLPath, global_p5_injection, green, height, hex, hour, httpDo, httpGet, httpPost, hue, image, imageMode, int, join, key, keyCode, keyIsDown, keyIsPressed, keyPressed, keyReleased, keyTyped, lerp, lerpColor, lightness, lights, line, loadBytes, loadFont, loadImage, loadJSON, loadModel, loadPixels, loadShader, loadStrings, loadTable, loadXML, log, loop, mag, map, match, matchAll, max, millis, min, minute, model, month, mouseButton, mouseClicked, mouseDragged, mouseIsPressed, mouseMoved, mousePressed, mouseReleased, mouseWheel, mouseX, mouseY, nf, nfc, nfp, nfs, noCanvas, noCursor, noDebugMode, noFill, noLoop, noSmooth, noStroke, noTint, noise, noiseDetail, noiseSeed, norm, normalMaterial, orbitControl, ortho, pAccelerationX, pAccelerationY, pAccelerationZ, pRotationX, pRotationY, pRotationZ, perspective, pixelDensity, pixels, plane, pmouseX, pmouseY, point, pointLight, pow, pre_draw, preload, print, push, pwinMouseX, pwinMouseY, py_clear, py_get, py_pop, py_sort, py_split, quad, quadraticVertex, radians, random, randomGaussian, randomSeed, rect, rectMode, red, redraw, remove, resetMatrix, resetShader, resizeCanvas, reverse, rotate, rotateX, rotateY, rotateZ, rotationX, rotationY, rotationZ, round, saturation, save, saveCanvas, saveFrames, saveJSON, saveStrings, saveTable, scale, second, set, setAttributes, setCamera, setMoveThreshold, setShakeThreshold, shader, shearX, shearY, shininess, shorten, shuffle, sin, smooth, specularMaterial, sphere, splice, splitTokens, sq, sqrt, square, start_p5, str, stroke, strokeCap, strokeJoin, strokeWeight, subset, tan, text, textAlign, textAscent, textDescent, textFont, textLeading, textSize, textStyle, textWidth, texture, textureMode, textureWrap, tint, torus, touchEnded, touchMoved, touchStarted, touches, translate, triangle, trim, turnAxis, unchar, unhex, updatePixels, vertex, width, winMouseX, winMouseY, windowHeight, windowResized, windowWidth, year} from './pytop5js.js';
var __name__ = '__main__'; var __name__ = '__main__';
var __left0__ = 1; var __left0__ = 1;
export var w = __left0__; export var w = __left0__;

Wyświetl plik

@ -4,5 +4,5 @@
"sources": [ "sources": [
"sketch_190505b.py" "sketch_190505b.py"
], ],
"mappings": "AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AAOA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AAEA;AAGA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAIA;AA9CA" "mappings": "AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AAOA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AAEA;AAGA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAIA;AA7CA"
} }

Plik binarny nie jest wyświetlany.

Wyświetl plik

@ -1,6 +1,5 @@
from pytop5js import * from pytop5js import *
w = h = d = 1 w = h = d = 1
# Cubo # Cubo

Wyświetl plik

@ -0,0 +1,43 @@
"""
Alexandre B A Villares http://abav.lugaralgum.com - GPL v3
A helper for the Processing gifAnimation library (https://github.com/jordanorelli)
ported to Processing 3 by 01010101 (https://github.com/01010101)
Download the library from https://github.com/01010101/GifAnimation/archive/master.zip
This helper was inspired by an example by Art Simon https://github.com/APCSPrinciples/AnimatedGIF/
Put at the start of your sketch:
add_library('gifAnimation')
from gif_exporter import gif_export
and at the end of draw():
gif_export(GifMaker)
"""
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=182, # quality range 0 - 255
delay=170, # this is quick
frames=0): # 0 will stop on keyPressed or frameCount >= 100000
global gifExporter
try:
gifExporter
except NameError:
gifExporter = GifMaker(this, filename + ".gif")
gifExporter.setRepeat(repeat)
gifExporter.setQuality(quality)
gifExporter.setDelay(delay)
gif_export._frame = frameCount
print("gif start")
gifExporter.addFrame()
if (frames == 0 and keyPressed or frameCount - gif_export._frame >= 100000) \
or (frames != 0 and frameCount - gif_export._frame >= frames):
gifExporter.finish()
background(255)
print("gif saved")
del(gifExporter)
return False
else:
return True

Wyświetl plik

@ -0,0 +1,132 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from javax.swing import JOptionPane
"""
This will hpefully switch between Arduino (Firmata) variable input and
nice sliders based on Peter Farell's Sliders htts://twitter.com/hackingmath
https://github.com/hackingmath/python-sliders http://farrellpolymath.com/
"""
class Input:
def __init__(self):
# start, end, default
A = Slider(0, 1023, 128)
B = Slider(0, 1023, 128)
C = Slider(0, 1023, 128)
D = Slider(0, 1023, 128)
A.position(40, height - 70)
B.position(40, height - 30)
C.position(width - 140, height - 70)
D.position(width - 140, height - 30)
self.sliders = {1: A, 2: B, 3: C, 4: D}
def analog(self, pin):
return self.sliders[pin].val
def update(self):
for pin, slider in self.sliders.iteritems():
slider.update()
def keyPressed(self):
if key == 'a':
self.sliders[1].down = True
if key == 'd':
self.sliders[1].up = True
if key == 's':
self.sliders[2].down = True
if key == 'w':
self.sliders[2].up = True
if keyCode == LEFT:
self.sliders[3].down = True
if keyCode == RIGHT:
self.sliders[3].up = True
if keyCode == DOWN:
self.sliders[4].down = True
if keyCode == UP:
self.sliders[4].up = True
def keyReleased(self):
if key == 'a':
self.sliders[1].down = False
if key == 'd':
self.sliders[1].up = False
if key == 's':
self.sliders[2].down = False
if key == 'w':
self.sliders[2].up = False
if keyCode == LEFT:
self.sliders[3].down = False
if keyCode == RIGHT:
self.sliders[3].up = False
if keyCode == DOWN:
self.sliders[4].down = False
if keyCode == UP:
self.sliders[4].up = False
def digital(self, pin):
space_pressed = keyPressed and key == ' '
if self.source:
if pin == 13:
return self.arduino.digitalRead(13) or space_pressed
else:
return arduino.digitalRead(pin)
else:
return space_pressed
class Slider:
SLIDERS = []
def __init__(self, low, high, default):
'''slider has range from low to high
and is set to default'''
self.low = low
self.high = high
self.val = default
self.clicked = False
self.up, self.down = False, False
Slider.SLIDERS.append(self)
def position(self, x, y):
'''slider's position on screen'''
self.x = x
self.y = y
# the position of the rect you slide:
self.rectx = self.x + map(self.val, self.low, self.high, 0, 120)
self.recty = self.y - 10
def update(self):
'''updates the slider'''
pushStyle()
rectMode(CENTER)
# black translucid rect behind slider
fill(0, 100)
noStroke()
rect(self.x + 60, self.y, 130, 20)
# gray line behind slider
strokeWeight(4)
stroke(200)
line(self.x, self.y, self.x + 120, self.y)
# press mouse to move slider
if (self.x < mouseX < self.x + 120 and
self.y < mouseY < self.y + 20):
fill(250)
textSize(10)
text(str(int(self.val)), self.rectx, self.recty + 35)
if mousePressed:
self.rectx = mouseX
# key usage
if self.up:
self.rectx += 1
if self.down:
self.rectx -= 1
# constrain rectangle
self.rectx = constrain(self.rectx, self.x, self.x + 120)
# draw rectangle
strokeWeight(1)
fill(255)
rect(self.rectx, self.recty + 10, 10, 20)
self.val = map(self.rectx, self.x, self.x + 120, self.low, self.high)
popStyle()

Wyświetl plik

@ -0,0 +1,87 @@
# Alexandre B A Villares - https://abav.lugaralgum.com/sketch-a-day
# Based on s097 - 180407
add_library('GifAnimation')
from gif_exporter import *
from inputs import *
def setup():
global input, GIF_EXPORT
fullScreen()
#size(600, 600)
rectMode(CENTER) # retângulos desenhados pelo centro
colorMode(HSB) # linha em preto
strokeWeight(2) # espessura de linha 2px
noFill() # sem preenchimento
frameRate(30) # deixa um pouco mais lento
GIF_EXPORT = False
input = Input()
def draw():
background(200) # fundo cinza claro
# 0 a 63, número de linhas e colunas na grade
grid_elem = int(input.analog(1) / 16)
# 0 a 63, tamanho base de cada quadrado
elem_size = int(input.analog(2) / 16)
# 0 a 63, ativa faixa entre -64 e 63 para randomizar tamanho
rand_size = int(input.analog(3) / 16)
# 0 a 63, ativa faixa equivalente para randomizar a posição
rand_posi = int(input.analog(4) / 16)
# trava a randomização entre os ciclos de draw
# mas varia com o número de colunas na grade
randomSeed(int(input.analog(1)) / 4)
# calcula o espaçamento entre os quadrandos
spac_size = int(width / (grid_elem + 1))
# para cada coluna um x
for x in range(spac_size / 2, width, spac_size):
# para cada linha um y
for y in range(spac_size / 2, width, spac_size):
# sorteia um tamanho (se o rand_size > 0)
square_size = elem_size + rand_size * random(-1, 1)
stroke(square_size * 3, 255, 128)
rect(x + rand_posi * random(-1, 1), # desenha um quadrado
y + rand_posi * random(-1, 1),
square_size,
square_size)
# uncomment next lines to export GIF
global GIF_EXPORT
if not frameCount % 20 and GIF_EXPORT:
GIF_EXPORT = gif_export(GifMaker,
frames=1000,
delay=300,
filename=SKETCH_NAME)
# Updates reading or draws sliders and checks mouse dragging / keystrokes
input.update()
def keyPressed():
global GIF_EXPORT
if key == 'p': # save PNG
saveFrame("####.png")
if key == 'g': # save GIF
GIF_EXPORT = True
if key == 'h':
input.help()
input.keyPressed()
def keyReleased():
input.keyReleased()
def settings():
from os import path
global SKETCH_NAME
SKETCH_NAME = path.basename(sketchPath())
OUTPUT = ".png"
println(
"""
![{0}](2019/{0}/{0}{1})
[{0}](https://github.com/villares/sketch-a-day/tree/master/2019/{0}) [[Py.Processing](https://villares.github.io/como-instalar-o-processing-modo-python/index-EN)]
""".format(SKETCH_NAME, OUTPUT)
)