diff --git a/python/particles.py b/python/particles.py index 8449ca6..e0f3b42 100644 --- a/python/particles.py +++ b/python/particles.py @@ -150,4 +150,1391 @@ class Particles(Scene): # triangle(mouseX, mouseY, x2, y2, x3, y3, 9) - # lineTri(mouseX, mouseY, x2, y2, x3, y3, 8) \ No newline at end of file + # lineTri(mouseX, mouseY, x2, y2, x3, y3, 8) + +from scene import Scene +from triangles import draw_line +from triangles import lineTri +import math +white = 63 +fire1 = 6 +fire2 = 5 +fire3 = 4 +fire4 = 3 +fire5 = 2 +fire6 = 56 + +water1 = 31 +water2 = 30 +water3 = 29 +water4 = 28 + +fireGradient = [white, white, fire1, fire1, fire2, fire3, fire4, fire3, fire4, fire5, fire6, fire6, fire6] +waterGradient = [white, white, water1, water2, water3, water4, water4] + +oldMouseX = 0 +oldMouseY = 0 + +mouseVelX = 0 +mouseVelY = 0 + + +def tri(x1,y1,x2,y2,x3,y3,c): + draw_line(x1,y1,x2,y2,c) + draw_line(x2,y2,x3,y3,c) + draw_line(x1,y1,x3,y3,c) + +class Particle: + def __init__(self, x, y, velX, velY): + self.x = x + self.y = y + self.velX = velX + self.velY = velY + self.c = fireGradient[0] + self.size = 5 + +class Particles(Scene): + + def __init__(self): + super().__init__() + self.fireParts = [] + self.waterParts = [] + for i in range(10): + self.fireParts.append(Particle(width/2, height/2, rnd(-1, 1), rnd(-1, 1))) + self.waterParts.append(Particle(width/2, height/2, rnd(-1, 1), rnd(-1, 1))) + + self.counter = 0 + self.title = "Particles" + + + def update(self): + global mouseVelX + global mouseVelY + + global oldMouseX + global oldMouseY + + mouseVelX = (mouseX - oldMouseX) + mouseVelY = (mouseY - oldMouseY) + + oldMouseX = mouseX + oldMouseY = mouseY + + self.counter += 1 + + for p in self.fireParts[:]: + p.x += p.velX + p.y += p.velY + p.velX += rnd(-0.3,0.3) + p.velY += rnd(-0.3,0.3) + + idx = int(p.size / 5.0 * len(fireGradient) - 1) + + p.c = fireGradient[(len(fireGradient) - 1) - idx] + + if(p.size < 1): + p.size -= 0.01 + else: + p.size -= 0.05 + if(p.size < 0): + self.fireParts.remove(p) + + for p in self.waterParts[:]: + p.x += p.velX + p.y += p.velY + p.velX += rnd(-0.3,0.3) + p.velY += rnd(-0.3,0.3) + + idx = int(p.size / 5.0 * len(waterGradient) - 1) + + p.c = waterGradient[(len(waterGradient) - 1) - idx] + + if(p.size < 1): + p.size -= 0.01 + else: + p.size -= 0.05 + if(p.size < 0): + self.waterParts.remove(p) + + + + if(mouse(0)): + rad = sin(self.counter * 0.01) * 50 + x1 = mouseX + (sin(self.counter * 0.1) * rad) + y1 = mouseY + (cos(self.counter * 0.1) * rad) + + x2 = mouseX + (sin(self.counter * 0.1 + (3.141592653)) * rad) + y2 = mouseY + (cos(self.counter * 0.1 + (3.141592653)) * rad) + for i in range(10): + self.fireParts.append(Particle(x1, y1, rnd(-1,1) + mouseVelX * 0.25, rnd(-1,1) + mouseVelY * 0.25)) + self.waterParts.append(Particle(x2, y2, rnd(-1,1) + mouseVelX * 0.25, rnd(-1,1) + mouseVelY * 0.25)) + + def draw(self): + clear(0) + for p in self.fireParts: + if(p.size <= 1): + pixel(p.x, p.y, p.c) + else: + circle(p.x, p.y, int(p.size), p.c) + + for p in self.waterParts: + if(p.size <= 1): + pixel(p.x, p.y, p.c) + else: + circle(p.x, p.y, int(p.size), p.c) + text("C to add particles, T to toggle palette", 3, 3, 59) + text("C to add particles, T to toggle palette", 2, 2, 31) + text("Num Particles: " + str(len(self.fireParts) + len(self.waterParts)), 3, 16, 59) + text("Num Particles: " + str(len(self.fireParts) + len(self.waterParts)), 2, 15, 30) + text("FPS: " + str(fps()), 3, 29, 59) + text("FPS: " + str(fps()), 2, 28, 29) + # triangle(10, 10, 50, 10, mouseX, mouseY, 5) + # lineTri(10, 10, 50, 10, mouseX, mouseY, 9) + pixel(mouseX, mouseY, 9) + cx = width/2 + cy = height/2 + ang = math.atan2(mouseY - cy, mouseX - cx) + dist = math.sqrt(math.pow(mouseX - cx, 2) + math.pow(mouseY - cy, 2)) + + x2 = cx + cos(ang + (math.pi * 2 / 3)) * dist + y2 = cy + sin(ang + (math.pi * 2 / 3)) * dist + + x3 = cx + cos(ang + (math.pi * 2 / 3 * 2)) * dist + y3 = cy + sin(ang + (math.pi * 2 / 3 * 2)) * dist + + # triangle(mouseX, mouseY, x2, y2, x3, y3, 9) + + # lineTri(mouseX, mouseY, x2, y2, x3, y3, 8) + +from scene import Scene +from triangles import draw_line +from triangles import lineTri +import math +white = 63 +fire1 = 6 +fire2 = 5 +fire3 = 4 +fire4 = 3 +fire5 = 2 +fire6 = 56 + +water1 = 31 +water2 = 30 +water3 = 29 +water4 = 28 + +fireGradient = [white, white, fire1, fire1, fire2, fire3, fire4, fire3, fire4, fire5, fire6, fire6, fire6] +waterGradient = [white, white, water1, water2, water3, water4, water4] + +oldMouseX = 0 +oldMouseY = 0 + +mouseVelX = 0 +mouseVelY = 0 + + +def tri(x1,y1,x2,y2,x3,y3,c): + draw_line(x1,y1,x2,y2,c) + draw_line(x2,y2,x3,y3,c) + draw_line(x1,y1,x3,y3,c) + +class Particle: + def __init__(self, x, y, velX, velY): + self.x = x + self.y = y + self.velX = velX + self.velY = velY + self.c = fireGradient[0] + self.size = 5 + +class Particles(Scene): + + def __init__(self): + super().__init__() + self.fireParts = [] + self.waterParts = [] + for i in range(10): + self.fireParts.append(Particle(width/2, height/2, rnd(-1, 1), rnd(-1, 1))) + self.waterParts.append(Particle(width/2, height/2, rnd(-1, 1), rnd(-1, 1))) + + self.counter = 0 + self.title = "Particles" + + + def update(self): + global mouseVelX + global mouseVelY + + global oldMouseX + global oldMouseY + + mouseVelX = (mouseX - oldMouseX) + mouseVelY = (mouseY - oldMouseY) + + oldMouseX = mouseX + oldMouseY = mouseY + + self.counter += 1 + + for p in self.fireParts[:]: + p.x += p.velX + p.y += p.velY + p.velX += rnd(-0.3,0.3) + p.velY += rnd(-0.3,0.3) + + idx = int(p.size / 5.0 * len(fireGradient) - 1) + + p.c = fireGradient[(len(fireGradient) - 1) - idx] + + if(p.size < 1): + p.size -= 0.01 + else: + p.size -= 0.05 + if(p.size < 0): + self.fireParts.remove(p) + + for p in self.waterParts[:]: + p.x += p.velX + p.y += p.velY + p.velX += rnd(-0.3,0.3) + p.velY += rnd(-0.3,0.3) + + idx = int(p.size / 5.0 * len(waterGradient) - 1) + + p.c = waterGradient[(len(waterGradient) - 1) - idx] + + if(p.size < 1): + p.size -= 0.01 + else: + p.size -= 0.05 + if(p.size < 0): + self.waterParts.remove(p) + + + + if(mouse(0)): + rad = sin(self.counter * 0.01) * 50 + x1 = mouseX + (sin(self.counter * 0.1) * rad) + y1 = mouseY + (cos(self.counter * 0.1) * rad) + + x2 = mouseX + (sin(self.counter * 0.1 + (3.141592653)) * rad) + y2 = mouseY + (cos(self.counter * 0.1 + (3.141592653)) * rad) + for i in range(10): + self.fireParts.append(Particle(x1, y1, rnd(-1,1) + mouseVelX * 0.25, rnd(-1,1) + mouseVelY * 0.25)) + self.waterParts.append(Particle(x2, y2, rnd(-1,1) + mouseVelX * 0.25, rnd(-1,1) + mouseVelY * 0.25)) + + def draw(self): + clear(0) + for p in self.fireParts: + if(p.size <= 1): + pixel(p.x, p.y, p.c) + else: + circle(p.x, p.y, int(p.size), p.c) + + for p in self.waterParts: + if(p.size <= 1): + pixel(p.x, p.y, p.c) + else: + circle(p.x, p.y, int(p.size), p.c) + text("C to add particles, T to toggle palette", 3, 3, 59) + text("C to add particles, T to toggle palette", 2, 2, 31) + text("Num Particles: " + str(len(self.fireParts) + len(self.waterParts)), 3, 16, 59) + text("Num Particles: " + str(len(self.fireParts) + len(self.waterParts)), 2, 15, 30) + text("FPS: " + str(fps()), 3, 29, 59) + text("FPS: " + str(fps()), 2, 28, 29) + # triangle(10, 10, 50, 10, mouseX, mouseY, 5) + # lineTri(10, 10, 50, 10, mouseX, mouseY, 9) + pixel(mouseX, mouseY, 9) + cx = width/2 + cy = height/2 + ang = math.atan2(mouseY - cy, mouseX - cx) + dist = math.sqrt(math.pow(mouseX - cx, 2) + math.pow(mouseY - cy, 2)) + + x2 = cx + cos(ang + (math.pi * 2 / 3)) * dist + y2 = cy + sin(ang + (math.pi * 2 / 3)) * dist + + x3 = cx + cos(ang + (math.pi * 2 / 3 * 2)) * dist + y3 = cy + sin(ang + (math.pi * 2 / 3 * 2)) * dist + + # triangle(mouseX, mouseY, x2, y2, x3, y3, 9) + + # lineTri(mouseX, mouseY, x2, y2, x3, y3, 8) + +from scene import Scene +from triangles import draw_line +from triangles import lineTri +import math +white = 63 +fire1 = 6 +fire2 = 5 +fire3 = 4 +fire4 = 3 +fire5 = 2 +fire6 = 56 + +water1 = 31 +water2 = 30 +water3 = 29 +water4 = 28 + +fireGradient = [white, white, fire1, fire1, fire2, fire3, fire4, fire3, fire4, fire5, fire6, fire6, fire6] +waterGradient = [white, white, water1, water2, water3, water4, water4] + +oldMouseX = 0 +oldMouseY = 0 + +mouseVelX = 0 +mouseVelY = 0 + + +def tri(x1,y1,x2,y2,x3,y3,c): + draw_line(x1,y1,x2,y2,c) + draw_line(x2,y2,x3,y3,c) + draw_line(x1,y1,x3,y3,c) + +class Particle: + def __init__(self, x, y, velX, velY): + self.x = x + self.y = y + self.velX = velX + self.velY = velY + self.c = fireGradient[0] + self.size = 5 + +class Particles(Scene): + + def __init__(self): + super().__init__() + self.fireParts = [] + self.waterParts = [] + for i in range(10): + self.fireParts.append(Particle(width/2, height/2, rnd(-1, 1), rnd(-1, 1))) + self.waterParts.append(Particle(width/2, height/2, rnd(-1, 1), rnd(-1, 1))) + + self.counter = 0 + self.title = "Particles" + + + def update(self): + global mouseVelX + global mouseVelY + + global oldMouseX + global oldMouseY + + mouseVelX = (mouseX - oldMouseX) + mouseVelY = (mouseY - oldMouseY) + + oldMouseX = mouseX + oldMouseY = mouseY + + self.counter += 1 + + for p in self.fireParts[:]: + p.x += p.velX + p.y += p.velY + p.velX += rnd(-0.3,0.3) + p.velY += rnd(-0.3,0.3) + + idx = int(p.size / 5.0 * len(fireGradient) - 1) + + p.c = fireGradient[(len(fireGradient) - 1) - idx] + + if(p.size < 1): + p.size -= 0.01 + else: + p.size -= 0.05 + if(p.size < 0): + self.fireParts.remove(p) + + for p in self.waterParts[:]: + p.x += p.velX + p.y += p.velY + p.velX += rnd(-0.3,0.3) + p.velY += rnd(-0.3,0.3) + + idx = int(p.size / 5.0 * len(waterGradient) - 1) + + p.c = waterGradient[(len(waterGradient) - 1) - idx] + + if(p.size < 1): + p.size -= 0.01 + else: + p.size -= 0.05 + if(p.size < 0): + self.waterParts.remove(p) + + + + if(mouse(0)): + rad = sin(self.counter * 0.01) * 50 + x1 = mouseX + (sin(self.counter * 0.1) * rad) + y1 = mouseY + (cos(self.counter * 0.1) * rad) + + x2 = mouseX + (sin(self.counter * 0.1 + (3.141592653)) * rad) + y2 = mouseY + (cos(self.counter * 0.1 + (3.141592653)) * rad) + for i in range(10): + self.fireParts.append(Particle(x1, y1, rnd(-1,1) + mouseVelX * 0.25, rnd(-1,1) + mouseVelY * 0.25)) + self.waterParts.append(Particle(x2, y2, rnd(-1,1) + mouseVelX * 0.25, rnd(-1,1) + mouseVelY * 0.25)) + + def draw(self): + clear(0) + for p in self.fireParts: + if(p.size <= 1): + pixel(p.x, p.y, p.c) + else: + circle(p.x, p.y, int(p.size), p.c) + + for p in self.waterParts: + if(p.size <= 1): + pixel(p.x, p.y, p.c) + else: + circle(p.x, p.y, int(p.size), p.c) + text("C to add particles, T to toggle palette", 3, 3, 59) + text("C to add particles, T to toggle palette", 2, 2, 31) + text("Num Particles: " + str(len(self.fireParts) + len(self.waterParts)), 3, 16, 59) + text("Num Particles: " + str(len(self.fireParts) + len(self.waterParts)), 2, 15, 30) + text("FPS: " + str(fps()), 3, 29, 59) + text("FPS: " + str(fps()), 2, 28, 29) + # triangle(10, 10, 50, 10, mouseX, mouseY, 5) + # lineTri(10, 10, 50, 10, mouseX, mouseY, 9) + pixel(mouseX, mouseY, 9) + cx = width/2 + cy = height/2 + ang = math.atan2(mouseY - cy, mouseX - cx) + dist = math.sqrt(math.pow(mouseX - cx, 2) + math.pow(mouseY - cy, 2)) + + x2 = cx + cos(ang + (math.pi * 2 / 3)) * dist + y2 = cy + sin(ang + (math.pi * 2 / 3)) * dist + + x3 = cx + cos(ang + (math.pi * 2 / 3 * 2)) * dist + y3 = cy + sin(ang + (math.pi * 2 / 3 * 2)) * dist + + # triangle(mouseX, mouseY, x2, y2, x3, y3, 9) + + # lineTri(mouseX, mouseY, x2, y2, x3, y3, 8) + +from scene import Scene +from triangles import draw_line +from triangles import lineTri +import math +white = 63 +fire1 = 6 +fire2 = 5 +fire3 = 4 +fire4 = 3 +fire5 = 2 +fire6 = 56 + +water1 = 31 +water2 = 30 +water3 = 29 +water4 = 28 + +fireGradient = [white, white, fire1, fire1, fire2, fire3, fire4, fire3, fire4, fire5, fire6, fire6, fire6] +waterGradient = [white, white, water1, water2, water3, water4, water4] + +oldMouseX = 0 +oldMouseY = 0 + +mouseVelX = 0 +mouseVelY = 0 + + +def tri(x1,y1,x2,y2,x3,y3,c): + draw_line(x1,y1,x2,y2,c) + draw_line(x2,y2,x3,y3,c) + draw_line(x1,y1,x3,y3,c) + +class Particle: + def __init__(self, x, y, velX, velY): + self.x = x + self.y = y + self.velX = velX + self.velY = velY + self.c = fireGradient[0] + self.size = 5 + +class Particles(Scene): + + def __init__(self): + super().__init__() + self.fireParts = [] + self.waterParts = [] + for i in range(10): + self.fireParts.append(Particle(width/2, height/2, rnd(-1, 1), rnd(-1, 1))) + self.waterParts.append(Particle(width/2, height/2, rnd(-1, 1), rnd(-1, 1))) + + self.counter = 0 + self.title = "Particles" + + + def update(self): + global mouseVelX + global mouseVelY + + global oldMouseX + global oldMouseY + + mouseVelX = (mouseX - oldMouseX) + mouseVelY = (mouseY - oldMouseY) + + oldMouseX = mouseX + oldMouseY = mouseY + + self.counter += 1 + + for p in self.fireParts[:]: + p.x += p.velX + p.y += p.velY + p.velX += rnd(-0.3,0.3) + p.velY += rnd(-0.3,0.3) + + idx = int(p.size / 5.0 * len(fireGradient) - 1) + + p.c = fireGradient[(len(fireGradient) - 1) - idx] + + if(p.size < 1): + p.size -= 0.01 + else: + p.size -= 0.05 + if(p.size < 0): + self.fireParts.remove(p) + + for p in self.waterParts[:]: + p.x += p.velX + p.y += p.velY + p.velX += rnd(-0.3,0.3) + p.velY += rnd(-0.3,0.3) + + idx = int(p.size / 5.0 * len(waterGradient) - 1) + + p.c = waterGradient[(len(waterGradient) - 1) - idx] + + if(p.size < 1): + p.size -= 0.01 + else: + p.size -= 0.05 + if(p.size < 0): + self.waterParts.remove(p) + + + + if(mouse(0)): + rad = sin(self.counter * 0.01) * 50 + x1 = mouseX + (sin(self.counter * 0.1) * rad) + y1 = mouseY + (cos(self.counter * 0.1) * rad) + + x2 = mouseX + (sin(self.counter * 0.1 + (3.141592653)) * rad) + y2 = mouseY + (cos(self.counter * 0.1 + (3.141592653)) * rad) + for i in range(10): + self.fireParts.append(Particle(x1, y1, rnd(-1,1) + mouseVelX * 0.25, rnd(-1,1) + mouseVelY * 0.25)) + self.waterParts.append(Particle(x2, y2, rnd(-1,1) + mouseVelX * 0.25, rnd(-1,1) + mouseVelY * 0.25)) + + def draw(self): + clear(0) + for p in self.fireParts: + if(p.size <= 1): + pixel(p.x, p.y, p.c) + else: + circle(p.x, p.y, int(p.size), p.c) + + for p in self.waterParts: + if(p.size <= 1): + pixel(p.x, p.y, p.c) + else: + circle(p.x, p.y, int(p.size), p.c) + text("C to add particles, T to toggle palette", 3, 3, 59) + text("C to add particles, T to toggle palette", 2, 2, 31) + text("Num Particles: " + str(len(self.fireParts) + len(self.waterParts)), 3, 16, 59) + text("Num Particles: " + str(len(self.fireParts) + len(self.waterParts)), 2, 15, 30) + text("FPS: " + str(fps()), 3, 29, 59) + text("FPS: " + str(fps()), 2, 28, 29) + # triangle(10, 10, 50, 10, mouseX, mouseY, 5) + # lineTri(10, 10, 50, 10, mouseX, mouseY, 9) + pixel(mouseX, mouseY, 9) + cx = width/2 + cy = height/2 + ang = math.atan2(mouseY - cy, mouseX - cx) + dist = math.sqrt(math.pow(mouseX - cx, 2) + math.pow(mouseY - cy, 2)) + + x2 = cx + cos(ang + (math.pi * 2 / 3)) * dist + y2 = cy + sin(ang + (math.pi * 2 / 3)) * dist + + x3 = cx + cos(ang + (math.pi * 2 / 3 * 2)) * dist + y3 = cy + sin(ang + (math.pi * 2 / 3 * 2)) * dist + + # triangle(mouseX, mouseY, x2, y2, x3, y3, 9) + + # lineTri(mouseX, mouseY, x2, y2, x3, y3, 8) + +from scene import Scene +from triangles import draw_line +from triangles import lineTri +import math +white = 63 +fire1 = 6 +fire2 = 5 +fire3 = 4 +fire4 = 3 +fire5 = 2 +fire6 = 56 + +water1 = 31 +water2 = 30 +water3 = 29 +water4 = 28 + +fireGradient = [white, white, fire1, fire1, fire2, fire3, fire4, fire3, fire4, fire5, fire6, fire6, fire6] +waterGradient = [white, white, water1, water2, water3, water4, water4] + +oldMouseX = 0 +oldMouseY = 0 + +mouseVelX = 0 +mouseVelY = 0 + + +def tri(x1,y1,x2,y2,x3,y3,c): + draw_line(x1,y1,x2,y2,c) + draw_line(x2,y2,x3,y3,c) + draw_line(x1,y1,x3,y3,c) + +class Particle: + def __init__(self, x, y, velX, velY): + self.x = x + self.y = y + self.velX = velX + self.velY = velY + self.c = fireGradient[0] + self.size = 5 + +class Particles(Scene): + + def __init__(self): + super().__init__() + self.fireParts = [] + self.waterParts = [] + for i in range(10): + self.fireParts.append(Particle(width/2, height/2, rnd(-1, 1), rnd(-1, 1))) + self.waterParts.append(Particle(width/2, height/2, rnd(-1, 1), rnd(-1, 1))) + + self.counter = 0 + self.title = "Particles" + + + def update(self): + global mouseVelX + global mouseVelY + + global oldMouseX + global oldMouseY + + mouseVelX = (mouseX - oldMouseX) + mouseVelY = (mouseY - oldMouseY) + + oldMouseX = mouseX + oldMouseY = mouseY + + self.counter += 1 + + for p in self.fireParts[:]: + p.x += p.velX + p.y += p.velY + p.velX += rnd(-0.3,0.3) + p.velY += rnd(-0.3,0.3) + + idx = int(p.size / 5.0 * len(fireGradient) - 1) + + p.c = fireGradient[(len(fireGradient) - 1) - idx] + + if(p.size < 1): + p.size -= 0.01 + else: + p.size -= 0.05 + if(p.size < 0): + self.fireParts.remove(p) + + for p in self.waterParts[:]: + p.x += p.velX + p.y += p.velY + p.velX += rnd(-0.3,0.3) + p.velY += rnd(-0.3,0.3) + + idx = int(p.size / 5.0 * len(waterGradient) - 1) + + p.c = waterGradient[(len(waterGradient) - 1) - idx] + + if(p.size < 1): + p.size -= 0.01 + else: + p.size -= 0.05 + if(p.size < 0): + self.waterParts.remove(p) + + + + if(mouse(0)): + rad = sin(self.counter * 0.01) * 50 + x1 = mouseX + (sin(self.counter * 0.1) * rad) + y1 = mouseY + (cos(self.counter * 0.1) * rad) + + x2 = mouseX + (sin(self.counter * 0.1 + (3.141592653)) * rad) + y2 = mouseY + (cos(self.counter * 0.1 + (3.141592653)) * rad) + for i in range(10): + self.fireParts.append(Particle(x1, y1, rnd(-1,1) + mouseVelX * 0.25, rnd(-1,1) + mouseVelY * 0.25)) + self.waterParts.append(Particle(x2, y2, rnd(-1,1) + mouseVelX * 0.25, rnd(-1,1) + mouseVelY * 0.25)) + + def draw(self): + clear(0) + for p in self.fireParts: + if(p.size <= 1): + pixel(p.x, p.y, p.c) + else: + circle(p.x, p.y, int(p.size), p.c) + + for p in self.waterParts: + if(p.size <= 1): + pixel(p.x, p.y, p.c) + else: + circle(p.x, p.y, int(p.size), p.c) + text("C to add particles, T to toggle palette", 3, 3, 59) + text("C to add particles, T to toggle palette", 2, 2, 31) + text("Num Particles: " + str(len(self.fireParts) + len(self.waterParts)), 3, 16, 59) + text("Num Particles: " + str(len(self.fireParts) + len(self.waterParts)), 2, 15, 30) + text("FPS: " + str(fps()), 3, 29, 59) + text("FPS: " + str(fps()), 2, 28, 29) + # triangle(10, 10, 50, 10, mouseX, mouseY, 5) + # lineTri(10, 10, 50, 10, mouseX, mouseY, 9) + pixel(mouseX, mouseY, 9) + cx = width/2 + cy = height/2 + ang = math.atan2(mouseY - cy, mouseX - cx) + dist = math.sqrt(math.pow(mouseX - cx, 2) + math.pow(mouseY - cy, 2)) + + x2 = cx + cos(ang + (math.pi * 2 / 3)) * dist + y2 = cy + sin(ang + (math.pi * 2 / 3)) * dist + + x3 = cx + cos(ang + (math.pi * 2 / 3 * 2)) * dist + y3 = cy + sin(ang + (math.pi * 2 / 3 * 2)) * dist + + # triangle(mouseX, mouseY, x2, y2, x3, y3, 9) + + # lineTri(mouseX, mouseY, x2, y2, x3, y3, 8) + +from scene import Scene +from triangles import draw_line +from triangles import lineTri +import math +white = 63 +fire1 = 6 +fire2 = 5 +fire3 = 4 +fire4 = 3 +fire5 = 2 +fire6 = 56 + +water1 = 31 +water2 = 30 +water3 = 29 +water4 = 28 + +fireGradient = [white, white, fire1, fire1, fire2, fire3, fire4, fire3, fire4, fire5, fire6, fire6, fire6] +waterGradient = [white, white, water1, water2, water3, water4, water4] + +oldMouseX = 0 +oldMouseY = 0 + +mouseVelX = 0 +mouseVelY = 0 + + +def tri(x1,y1,x2,y2,x3,y3,c): + draw_line(x1,y1,x2,y2,c) + draw_line(x2,y2,x3,y3,c) + draw_line(x1,y1,x3,y3,c) + +class Particle: + def __init__(self, x, y, velX, velY): + self.x = x + self.y = y + self.velX = velX + self.velY = velY + self.c = fireGradient[0] + self.size = 5 + +class Particles(Scene): + + def __init__(self): + super().__init__() + self.fireParts = [] + self.waterParts = [] + for i in range(10): + self.fireParts.append(Particle(width/2, height/2, rnd(-1, 1), rnd(-1, 1))) + self.waterParts.append(Particle(width/2, height/2, rnd(-1, 1), rnd(-1, 1))) + + self.counter = 0 + self.title = "Particles" + + + def update(self): + global mouseVelX + global mouseVelY + + global oldMouseX + global oldMouseY + + mouseVelX = (mouseX - oldMouseX) + mouseVelY = (mouseY - oldMouseY) + + oldMouseX = mouseX + oldMouseY = mouseY + + self.counter += 1 + + for p in self.fireParts[:]: + p.x += p.velX + p.y += p.velY + p.velX += rnd(-0.3,0.3) + p.velY += rnd(-0.3,0.3) + + idx = int(p.size / 5.0 * len(fireGradient) - 1) + + p.c = fireGradient[(len(fireGradient) - 1) - idx] + + if(p.size < 1): + p.size -= 0.01 + else: + p.size -= 0.05 + if(p.size < 0): + self.fireParts.remove(p) + + for p in self.waterParts[:]: + p.x += p.velX + p.y += p.velY + p.velX += rnd(-0.3,0.3) + p.velY += rnd(-0.3,0.3) + + idx = int(p.size / 5.0 * len(waterGradient) - 1) + + p.c = waterGradient[(len(waterGradient) - 1) - idx] + + if(p.size < 1): + p.size -= 0.01 + else: + p.size -= 0.05 + if(p.size < 0): + self.waterParts.remove(p) + + + + if(mouse(0)): + rad = sin(self.counter * 0.01) * 50 + x1 = mouseX + (sin(self.counter * 0.1) * rad) + y1 = mouseY + (cos(self.counter * 0.1) * rad) + + x2 = mouseX + (sin(self.counter * 0.1 + (3.141592653)) * rad) + y2 = mouseY + (cos(self.counter * 0.1 + (3.141592653)) * rad) + for i in range(10): + self.fireParts.append(Particle(x1, y1, rnd(-1,1) + mouseVelX * 0.25, rnd(-1,1) + mouseVelY * 0.25)) + self.waterParts.append(Particle(x2, y2, rnd(-1,1) + mouseVelX * 0.25, rnd(-1,1) + mouseVelY * 0.25)) + + def draw(self): + clear(0) + for p in self.fireParts: + if(p.size <= 1): + pixel(p.x, p.y, p.c) + else: + circle(p.x, p.y, int(p.size), p.c) + + for p in self.waterParts: + if(p.size <= 1): + pixel(p.x, p.y, p.c) + else: + circle(p.x, p.y, int(p.size), p.c) + text("C to add particles, T to toggle palette", 3, 3, 59) + text("C to add particles, T to toggle palette", 2, 2, 31) + text("Num Particles: " + str(len(self.fireParts) + len(self.waterParts)), 3, 16, 59) + text("Num Particles: " + str(len(self.fireParts) + len(self.waterParts)), 2, 15, 30) + text("FPS: " + str(fps()), 3, 29, 59) + text("FPS: " + str(fps()), 2, 28, 29) + # triangle(10, 10, 50, 10, mouseX, mouseY, 5) + # lineTri(10, 10, 50, 10, mouseX, mouseY, 9) + pixel(mouseX, mouseY, 9) + cx = width/2 + cy = height/2 + ang = math.atan2(mouseY - cy, mouseX - cx) + dist = math.sqrt(math.pow(mouseX - cx, 2) + math.pow(mouseY - cy, 2)) + + x2 = cx + cos(ang + (math.pi * 2 / 3)) * dist + y2 = cy + sin(ang + (math.pi * 2 / 3)) * dist + + x3 = cx + cos(ang + (math.pi * 2 / 3 * 2)) * dist + y3 = cy + sin(ang + (math.pi * 2 / 3 * 2)) * dist + + # triangle(mouseX, mouseY, x2, y2, x3, y3, 9) + + # lineTri(mouseX, mouseY, x2, y2, x3, y3, 8) + +from scene import Scene +from triangles import draw_line +from triangles import lineTri +import math +white = 63 +fire1 = 6 +fire2 = 5 +fire3 = 4 +fire4 = 3 +fire5 = 2 +fire6 = 56 + +water1 = 31 +water2 = 30 +water3 = 29 +water4 = 28 + +fireGradient = [white, white, fire1, fire1, fire2, fire3, fire4, fire3, fire4, fire5, fire6, fire6, fire6] +waterGradient = [white, white, water1, water2, water3, water4, water4] + +oldMouseX = 0 +oldMouseY = 0 + +mouseVelX = 0 +mouseVelY = 0 + + +def tri(x1,y1,x2,y2,x3,y3,c): + draw_line(x1,y1,x2,y2,c) + draw_line(x2,y2,x3,y3,c) + draw_line(x1,y1,x3,y3,c) + +class Particle: + def __init__(self, x, y, velX, velY): + self.x = x + self.y = y + self.velX = velX + self.velY = velY + self.c = fireGradient[0] + self.size = 5 + +class Particles(Scene): + + def __init__(self): + super().__init__() + self.fireParts = [] + self.waterParts = [] + for i in range(10): + self.fireParts.append(Particle(width/2, height/2, rnd(-1, 1), rnd(-1, 1))) + self.waterParts.append(Particle(width/2, height/2, rnd(-1, 1), rnd(-1, 1))) + + self.counter = 0 + self.title = "Particles" + + + def update(self): + global mouseVelX + global mouseVelY + + global oldMouseX + global oldMouseY + + mouseVelX = (mouseX - oldMouseX) + mouseVelY = (mouseY - oldMouseY) + + oldMouseX = mouseX + oldMouseY = mouseY + + self.counter += 1 + + for p in self.fireParts[:]: + p.x += p.velX + p.y += p.velY + p.velX += rnd(-0.3,0.3) + p.velY += rnd(-0.3,0.3) + + idx = int(p.size / 5.0 * len(fireGradient) - 1) + + p.c = fireGradient[(len(fireGradient) - 1) - idx] + + if(p.size < 1): + p.size -= 0.01 + else: + p.size -= 0.05 + if(p.size < 0): + self.fireParts.remove(p) + + for p in self.waterParts[:]: + p.x += p.velX + p.y += p.velY + p.velX += rnd(-0.3,0.3) + p.velY += rnd(-0.3,0.3) + + idx = int(p.size / 5.0 * len(waterGradient) - 1) + + p.c = waterGradient[(len(waterGradient) - 1) - idx] + + if(p.size < 1): + p.size -= 0.01 + else: + p.size -= 0.05 + if(p.size < 0): + self.waterParts.remove(p) + + + + if(mouse(0)): + rad = sin(self.counter * 0.01) * 50 + x1 = mouseX + (sin(self.counter * 0.1) * rad) + y1 = mouseY + (cos(self.counter * 0.1) * rad) + + x2 = mouseX + (sin(self.counter * 0.1 + (3.141592653)) * rad) + y2 = mouseY + (cos(self.counter * 0.1 + (3.141592653)) * rad) + for i in range(10): + self.fireParts.append(Particle(x1, y1, rnd(-1,1) + mouseVelX * 0.25, rnd(-1,1) + mouseVelY * 0.25)) + self.waterParts.append(Particle(x2, y2, rnd(-1,1) + mouseVelX * 0.25, rnd(-1,1) + mouseVelY * 0.25)) + + def draw(self): + clear(0) + for p in self.fireParts: + if(p.size <= 1): + pixel(p.x, p.y, p.c) + else: + circle(p.x, p.y, int(p.size), p.c) + + for p in self.waterParts: + if(p.size <= 1): + pixel(p.x, p.y, p.c) + else: + circle(p.x, p.y, int(p.size), p.c) + text("C to add particles, T to toggle palette", 3, 3, 59) + text("C to add particles, T to toggle palette", 2, 2, 31) + text("Num Particles: " + str(len(self.fireParts) + len(self.waterParts)), 3, 16, 59) + text("Num Particles: " + str(len(self.fireParts) + len(self.waterParts)), 2, 15, 30) + text("FPS: " + str(fps()), 3, 29, 59) + text("FPS: " + str(fps()), 2, 28, 29) + # triangle(10, 10, 50, 10, mouseX, mouseY, 5) + # lineTri(10, 10, 50, 10, mouseX, mouseY, 9) + pixel(mouseX, mouseY, 9) + cx = width/2 + cy = height/2 + ang = math.atan2(mouseY - cy, mouseX - cx) + dist = math.sqrt(math.pow(mouseX - cx, 2) + math.pow(mouseY - cy, 2)) + + x2 = cx + cos(ang + (math.pi * 2 / 3)) * dist + y2 = cy + sin(ang + (math.pi * 2 / 3)) * dist + + x3 = cx + cos(ang + (math.pi * 2 / 3 * 2)) * dist + y3 = cy + sin(ang + (math.pi * 2 / 3 * 2)) * dist + + # triangle(mouseX, mouseY, x2, y2, x3, y3, 9) + + # lineTri(mouseX, mouseY, x2, y2, x3, y3, 8) + +from scene import Scene +from triangles import draw_line +from triangles import lineTri +import math +white = 63 +fire1 = 6 +fire2 = 5 +fire3 = 4 +fire4 = 3 +fire5 = 2 +fire6 = 56 + +water1 = 31 +water2 = 30 +water3 = 29 +water4 = 28 + +fireGradient = [white, white, fire1, fire1, fire2, fire3, fire4, fire3, fire4, fire5, fire6, fire6, fire6] +waterGradient = [white, white, water1, water2, water3, water4, water4] + +oldMouseX = 0 +oldMouseY = 0 + +mouseVelX = 0 +mouseVelY = 0 + + +def tri(x1,y1,x2,y2,x3,y3,c): + draw_line(x1,y1,x2,y2,c) + draw_line(x2,y2,x3,y3,c) + draw_line(x1,y1,x3,y3,c) + +class Particle: + def __init__(self, x, y, velX, velY): + self.x = x + self.y = y + self.velX = velX + self.velY = velY + self.c = fireGradient[0] + self.size = 5 + +class Particles(Scene): + + def __init__(self): + super().__init__() + self.fireParts = [] + self.waterParts = [] + for i in range(10): + self.fireParts.append(Particle(width/2, height/2, rnd(-1, 1), rnd(-1, 1))) + self.waterParts.append(Particle(width/2, height/2, rnd(-1, 1), rnd(-1, 1))) + + self.counter = 0 + self.title = "Particles" + + + def update(self): + global mouseVelX + global mouseVelY + + global oldMouseX + global oldMouseY + + mouseVelX = (mouseX - oldMouseX) + mouseVelY = (mouseY - oldMouseY) + + oldMouseX = mouseX + oldMouseY = mouseY + + self.counter += 1 + + for p in self.fireParts[:]: + p.x += p.velX + p.y += p.velY + p.velX += rnd(-0.3,0.3) + p.velY += rnd(-0.3,0.3) + + idx = int(p.size / 5.0 * len(fireGradient) - 1) + + p.c = fireGradient[(len(fireGradient) - 1) - idx] + + if(p.size < 1): + p.size -= 0.01 + else: + p.size -= 0.05 + if(p.size < 0): + self.fireParts.remove(p) + + for p in self.waterParts[:]: + p.x += p.velX + p.y += p.velY + p.velX += rnd(-0.3,0.3) + p.velY += rnd(-0.3,0.3) + + idx = int(p.size / 5.0 * len(waterGradient) - 1) + + p.c = waterGradient[(len(waterGradient) - 1) - idx] + + if(p.size < 1): + p.size -= 0.01 + else: + p.size -= 0.05 + if(p.size < 0): + self.waterParts.remove(p) + + + + if(mouse(0)): + rad = sin(self.counter * 0.01) * 50 + x1 = mouseX + (sin(self.counter * 0.1) * rad) + y1 = mouseY + (cos(self.counter * 0.1) * rad) + + x2 = mouseX + (sin(self.counter * 0.1 + (3.141592653)) * rad) + y2 = mouseY + (cos(self.counter * 0.1 + (3.141592653)) * rad) + for i in range(10): + self.fireParts.append(Particle(x1, y1, rnd(-1,1) + mouseVelX * 0.25, rnd(-1,1) + mouseVelY * 0.25)) + self.waterParts.append(Particle(x2, y2, rnd(-1,1) + mouseVelX * 0.25, rnd(-1,1) + mouseVelY * 0.25)) + + def draw(self): + clear(0) + for p in self.fireParts: + if(p.size <= 1): + pixel(p.x, p.y, p.c) + else: + circle(p.x, p.y, int(p.size), p.c) + + for p in self.waterParts: + if(p.size <= 1): + pixel(p.x, p.y, p.c) + else: + circle(p.x, p.y, int(p.size), p.c) + text("C to add particles, T to toggle palette", 3, 3, 59) + text("C to add particles, T to toggle palette", 2, 2, 31) + text("Num Particles: " + str(len(self.fireParts) + len(self.waterParts)), 3, 16, 59) + text("Num Particles: " + str(len(self.fireParts) + len(self.waterParts)), 2, 15, 30) + text("FPS: " + str(fps()), 3, 29, 59) + text("FPS: " + str(fps()), 2, 28, 29) + # triangle(10, 10, 50, 10, mouseX, mouseY, 5) + # lineTri(10, 10, 50, 10, mouseX, mouseY, 9) + pixel(mouseX, mouseY, 9) + cx = width/2 + cy = height/2 + ang = math.atan2(mouseY - cy, mouseX - cx) + dist = math.sqrt(math.pow(mouseX - cx, 2) + math.pow(mouseY - cy, 2)) + + x2 = cx + cos(ang + (math.pi * 2 / 3)) * dist + y2 = cy + sin(ang + (math.pi * 2 / 3)) * dist + + x3 = cx + cos(ang + (math.pi * 2 / 3 * 2)) * dist + y3 = cy + sin(ang + (math.pi * 2 / 3 * 2)) * dist + + # triangle(mouseX, mouseY, x2, y2, x3, y3, 9) + + # lineTri(mouseX, mouseY, x2, y2, x3, y3, 8) + +from scene import Scene +from triangles import draw_line +from triangles import lineTri +import math +white = 63 +fire1 = 6 +fire2 = 5 +fire3 = 4 +fire4 = 3 +fire5 = 2 +fire6 = 56 + +water1 = 31 +water2 = 30 +water3 = 29 +water4 = 28 + +fireGradient = [white, white, fire1, fire1, fire2, fire3, fire4, fire3, fire4, fire5, fire6, fire6, fire6] +waterGradient = [white, white, water1, water2, water3, water4, water4] + +oldMouseX = 0 +oldMouseY = 0 + +mouseVelX = 0 +mouseVelY = 0 + + +def tri(x1,y1,x2,y2,x3,y3,c): + draw_line(x1,y1,x2,y2,c) + draw_line(x2,y2,x3,y3,c) + draw_line(x1,y1,x3,y3,c) + +class Particle: + def __init__(self, x, y, velX, velY): + self.x = x + self.y = y + self.velX = velX + self.velY = velY + self.c = fireGradient[0] + self.size = 5 + +class Particles(Scene): + + def __init__(self): + super().__init__() + self.fireParts = [] + self.waterParts = [] + for i in range(10): + self.fireParts.append(Particle(width/2, height/2, rnd(-1, 1), rnd(-1, 1))) + self.waterParts.append(Particle(width/2, height/2, rnd(-1, 1), rnd(-1, 1))) + + self.counter = 0 + self.title = "Particles" + + + def update(self): + global mouseVelX + global mouseVelY + + global oldMouseX + global oldMouseY + + mouseVelX = (mouseX - oldMouseX) + mouseVelY = (mouseY - oldMouseY) + + oldMouseX = mouseX + oldMouseY = mouseY + + self.counter += 1 + + for p in self.fireParts[:]: + p.x += p.velX + p.y += p.velY + p.velX += rnd(-0.3,0.3) + p.velY += rnd(-0.3,0.3) + + idx = int(p.size / 5.0 * len(fireGradient) - 1) + + p.c = fireGradient[(len(fireGradient) - 1) - idx] + + if(p.size < 1): + p.size -= 0.01 + else: + p.size -= 0.05 + if(p.size < 0): + self.fireParts.remove(p) + + for p in self.waterParts[:]: + p.x += p.velX + p.y += p.velY + p.velX += rnd(-0.3,0.3) + p.velY += rnd(-0.3,0.3) + + idx = int(p.size / 5.0 * len(waterGradient) - 1) + + p.c = waterGradient[(len(waterGradient) - 1) - idx] + + if(p.size < 1): + p.size -= 0.01 + else: + p.size -= 0.05 + if(p.size < 0): + self.waterParts.remove(p) + + + + if(mouse(0)): + rad = sin(self.counter * 0.01) * 50 + x1 = mouseX + (sin(self.counter * 0.1) * rad) + y1 = mouseY + (cos(self.counter * 0.1) * rad) + + x2 = mouseX + (sin(self.counter * 0.1 + (3.141592653)) * rad) + y2 = mouseY + (cos(self.counter * 0.1 + (3.141592653)) * rad) + for i in range(10): + self.fireParts.append(Particle(x1, y1, rnd(-1,1) + mouseVelX * 0.25, rnd(-1,1) + mouseVelY * 0.25)) + self.waterParts.append(Particle(x2, y2, rnd(-1,1) + mouseVelX * 0.25, rnd(-1,1) + mouseVelY * 0.25)) + + def draw(self): + clear(0) + for p in self.fireParts: + if(p.size <= 1): + pixel(p.x, p.y, p.c) + else: + circle(p.x, p.y, int(p.size), p.c) + + for p in self.waterParts: + if(p.size <= 1): + pixel(p.x, p.y, p.c) + else: + circle(p.x, p.y, int(p.size), p.c) + text("C to add particles, T to toggle palette", 3, 3, 59) + text("C to add particles, T to toggle palette", 2, 2, 31) + text("Num Particles: " + str(len(self.fireParts) + len(self.waterParts)), 3, 16, 59) + text("Num Particles: " + str(len(self.fireParts) + len(self.waterParts)), 2, 15, 30) + text("FPS: " + str(fps()), 3, 29, 59) + text("FPS: " + str(fps()), 2, 28, 29) + # triangle(10, 10, 50, 10, mouseX, mouseY, 5) + # lineTri(10, 10, 50, 10, mouseX, mouseY, 9) + pixel(mouseX, mouseY, 9) + cx = width/2 + cy = height/2 + ang = math.atan2(mouseY - cy, mouseX - cx) + dist = math.sqrt(math.pow(mouseX - cx, 2) + math.pow(mouseY - cy, 2)) + + x2 = cx + cos(ang + (math.pi * 2 / 3)) * dist + y2 = cy + sin(ang + (math.pi * 2 / 3)) * dist + + x3 = cx + cos(ang + (math.pi * 2 / 3 * 2)) * dist + y3 = cy + sin(ang + (math.pi * 2 / 3 * 2)) * dist + + # triangle(mouseX, mouseY, x2, y2, x3, y3, 9) + + # lineTri(mouseX, mouseY, x2, y2, x3, y3, 8) + diff --git a/src/Graphics/Graphics.cpp b/src/Graphics/Graphics.cpp index 7726b3f..4a29b4b 100644 --- a/src/Graphics/Graphics.cpp +++ b/src/Graphics/Graphics.cpp @@ -242,8 +242,9 @@ void Graphics::Clear(int paletteIndex) { void Graphics::Pixel(int x, int y, int paletteIndex) { paletteIndex = Clamp(paletteIndex, 0, m_paletteByID.size() - 1); + x *= 2; + y *= 2; if(x < 0 || y < 0 || x >= m_screenWidth || y >= m_screenHeight) return; - m_virtualScreenColorBuffer[y * m_screenWidth + x] = paletteIndex; }