mirror of
https://github.com/Xevion/processing-projects.git
synced 2026-01-31 14:25:18 -06:00
Chaser easing sketch w/ README update
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
import random, time
|
||||
|
||||
def setup():
|
||||
size(1000, 1000)
|
||||
frameRate(60*1)
|
||||
noLoop()
|
||||
global Mover
|
||||
fromx, fromy = 0, height/2
|
||||
tox, toy = width, height
|
||||
Mover = MovingPoint(fromx, fromy, tox, toy)
|
||||
ellipse(fromx, fromy, 10, 10)
|
||||
ellipse(tox, toy, 10, 10)
|
||||
|
||||
class MovingPoint():
|
||||
def __init__(self, x, y, newx=None, newy=None):
|
||||
self.x, self.y = x, y
|
||||
self.duration = 100
|
||||
if newx == None or newy == None:
|
||||
if not newx == None and newy == None:
|
||||
print("newx and newy not set properly ({})".format((newx, newy)))
|
||||
self.running = False
|
||||
else:
|
||||
self.start(newx, newy)
|
||||
|
||||
# Function that begins the movement of the point
|
||||
def start(self, newx, newy):
|
||||
self.frame = 0
|
||||
self.oldx, self.oldy = self.x, self.y
|
||||
self.newx, self.newy = newx, newy
|
||||
self.running = True
|
||||
|
||||
# Function that ends the movement of the point
|
||||
def end(self):
|
||||
self.frame = self.duration
|
||||
self.oldx, self.oldy, self.newx, self.newy = 0, 0, 0, 0
|
||||
self.running = False
|
||||
|
||||
def tick(self):
|
||||
if self.running:
|
||||
self.frame += 1
|
||||
self.x = self.easeInQuart(self.frame, self.oldx, self.newx-self.oldx, self.duration)
|
||||
self.y = self.easeInQuart(self.frame, self.oldy, self.newy-self.oldy, self.duration)
|
||||
if self.frame >= self.duration:
|
||||
print("finished")
|
||||
self.end()
|
||||
ellipse(self.x, self.y, 1, 1)
|
||||
|
||||
def isRunning(self):
|
||||
return self.running
|
||||
|
||||
# t=Current Time b=Start Value c=Change in Value d=Duration
|
||||
def easeInQuart(self, t, b, c, d):
|
||||
t, d = float(t), float(d)
|
||||
t = t / d
|
||||
return c * t * t * t * t + b
|
||||
|
||||
def reset():
|
||||
old = g.fillColor
|
||||
fill(204, 204, 204)
|
||||
rect(0, 0, width, height)
|
||||
fill(old)
|
||||
|
||||
def draw():
|
||||
global Mover
|
||||
if Mover.isRunning():
|
||||
Mover.tick()
|
||||
else:
|
||||
x, y = random.randint(0, width), random.randint(0, height)
|
||||
print("Going to {}".format((x,y)))
|
||||
Mover.start(x, y)
|
||||
|
||||
def mouseClicked():
|
||||
loop()
|
||||
|
||||
Reference in New Issue
Block a user