|
PIDDLE Sample 2
PIDDLESample 2# This program generates a rainbow spectrum, # and also plots the individual components. import piddle import math def makeCanvas(): "Create a Canvas object." import piddleQD return piddleQD.QDCanvas() def plot(f,canvas,offset=0): for i in range(0,100): x = float(i)/100 canvas.drawLine(i*3+offset,250, i*3+offset,250-100*f(x)) def showColors(colors): global canvas try: canvas.clear() except: canvas = makeCanvas() # draw a black background for the spectrum canvas.drawRect( 0,0,300,100, edgeColor=piddle.black, fillColor=piddle.black ) # draw the spectrum for i in range(len(colors)): canvas.drawLine(i,20,i,80, colors[i]) # plot the components of the spectrum canvas.defaultLineColor = piddle.red plot(redfunc, canvas) canvas.defaultLineColor = piddle.blue plot(bluefunc, canvas, 1) canvas.defaultLineColor = piddle.green plot(greenfunc, canvas, 2) # update the canvas canvas.flush() def bluefunc(x): return 1.0 / (1.0 + math.exp(-10*(x-0.6))) def redfunc(x): return 1.0 / (1.0 + math.exp(10*(x-0.5))) return out def greenfunc(x): return 1 - pow(redfunc(x+0.2),2) - bluefunc(x-0.3) def genColors(n=100): out = [None]*n; for i in range(n): x = float(i)/n out[i] = piddle.Color(redfunc(x), greenfunc(x), bluefunc(x)); return out showColors(genColors(300)) http://www.strout.net/info/coding/python/piddle/sample2.html Last Updated: 3/22/99 . . . . . . webmaster@strout.net |