add precision

gui
Felix Pankratz 3 years ago
parent 97201be02f
commit 9d0f51bad4

@ -17,6 +17,8 @@ AMPLITUDE = 25
MONOCHROME = True MONOCHROME = True
# background black? White otherwise: # background black? White otherwise:
DARK_BG = True DARK_BG = True
# precision of the calculation
PRECISION = 10000
def main(): def main():
@ -26,7 +28,9 @@ def main():
ctx.scale(WIDTH, HEIGHT) # Normalizing the canvas ctx.scale(WIDTH, HEIGHT) # Normalizing the canvas
wave_height = 1/WAVES wave_height = 1/WAVES
lastpoints = [(x/1000, 0) for x in range(1000)] step_size = 1/PRECISION
lastpoints = [(x/PRECISION, 0) for x in range(PRECISION+1)]
if DARK_BG: if DARK_BG:
# make bg black # make bg black
ctx.rectangle(0, 0, 1, 1) ctx.rectangle(0, 0, 1, 1)
@ -45,7 +49,8 @@ def main():
while x < 1: while x < 1:
y = math.sin(x*AMPLITUDE + (num * WAVE_OFFSET) ) * 0.1 y = math.sin(x*AMPLITUDE + (num * WAVE_OFFSET) ) * 0.1
points.append((x, ( (y/4) + ((0.5+num)*wave_height)))) points.append((x, ( (y/4) + ((0.5+num)*wave_height))))
x += 0.001 x += step_size
print(f'Draw {len(points)} points for curve {num}')
if not MONOCHROME: if not MONOCHROME:
ctx.set_source_rgb(r, g, b) ctx.set_source_rgb(r, g, b)
else: else:
@ -54,9 +59,10 @@ def main():
ctx.move_to(*points[0]) ctx.move_to(*points[0])
for p in points[1:]: for p in points[1:]:
ctx.line_to(*p) ctx.line_to(*p)
ctx.set_line_width(0.002) ctx.set_line_width(step_size) #0.002)
ctx.stroke() ctx.stroke()
# fill area above # fill area above
ctx.set_line_width(step_size)
for pos in range(len(points)): for pos in range(len(points)):
ctx.move_to(*points[pos]) ctx.move_to(*points[pos])
ctx.line_to(*lastpoints[pos]) ctx.line_to(*lastpoints[pos])

Loading…
Cancel
Save