processing.py : trails using oop

trails in processing.py
trails in processing.py

in this post, we’ll explain how to add trails using an oop approach.

a trail is basically objects that appear where the primary objects passed

in nature, trails are made by particles of the primary object but in programming, one simple approach is to draw other shapes albeit more small

the full code

there is the full processing.py code :

# github.com/abdur-rahmaanj
class MouseTrail:
    def __init__(self):
        self.history = []
        
    def update(self):
        self.history.append([mouseX, mouseY])
        if len(self.history)  > 200:
            self.history.pop(0)
            
    def display_mouse(self):
        fill(100, 100, 100, 100)
        ellipse(mouseX, mouseY, 50, 50)
        
    def display_trail(self):
        beginShape()
        stroke(0)
        strokeWeight(1)
        noFill()
        for v in self.history:
            vertex(v[0], v[1])
        endShape()
        
    def run(self):
        self.update()
        self.display_mouse()
        self.display_trail()

trail = None

def setup():
    global trail
    trail = MouseTrail()
    size(500, 500)
    
def draw():
    global trail
    background(255)
    trail.run()

explanations

in the constructor,

        self.history = []

is basically a simple list

we added to the list on each call of the update method. then if there are more than 200 elements in the list, we remove one element

        self.history.append([mouseX, mouseY])
        if len(self.history)  > 200:
            self.history.pop(0)

for the shapes, we just draw vertices (hey lines) joining all the points in the list

    def display_trail(self):
        beginShape()
        stroke(0)
        strokeWeight(1)
        noFill()
        for v in self.history:
            vertex(v[0], v[1])
        endShape()

finally the run method is included for convenience so that we need to only call one method !

    def run(self):
        self.update()
        self.display_mouse()
        self.display_trail()

in setup, we just define a new object

    trail = MouseTrail()

then in draw we call the run method

    trail.run()

conclusion

adding oop allows for much more flexibility than hardcoding it all !

here it is in action :

Leave a Comment

Your email address will not be published. Required fields are marked *