--- fract/mandelzoom.cgi 2001/02/25 05:49:07 1.2 +++ fract/mandelzoom.cgi 2001/02/26 11:26:15 1.8 @@ -3,19 +3,24 @@ import cgi, Image, ImageDraw, sys, math from string import atoi, atof +# This is to get backtrace output sys.stderr = sys.stdout +# Uncomment this to get the backtrace more readable +#print "Content-Type: text/plain" +#print "" + form= cgi.FieldStorage() # Image size if form.has_key('width'): width= atoi(form['width'].value) else: - width= 570 + width= 480 if form.has_key('height'): height= atoi(form['height'].value) else: - height= 570 + height= 480 xmax, ymax = width-1, height-1 # Coordinate maximums @@ -23,17 +28,17 @@ if form.has_key('cx'): cx= atof(form['cx'].value) else: - cx= 0 + cx= 0.0 if form.has_key('cy'): cy= atof(form['cy'].value) else: - cy= 0 + cy= 0.0 if form.has_key('diag'): diag= atof(form['diag'].value) else: - diag= math.sqrt(8) + diag= math.sqrt(32) # sqrt(4**2 + 4**2) debug= form.has_key('debug') @@ -42,19 +47,16 @@ else: maxiter= 270 -#print "Content-Type: text/plain" -#print "" - # If type!=image, then output an HTML page, not an image if not (form.has_key('type') and form['type'].value == "image"): print """Content-Type: text/html
-+After changing any settings, don't forget to change the "Zoom" setting +to "Pan" if you don't want to zoom when applying them. """ sys.exit(0) -c1, c2 = (-2+2j), (2-2j) # Corner coordinates +# Figure out c1 and c2 from width, height, diag, cx, and cy. +# Diagonal in pixels +diagp= math.sqrt(width**2 + height**2) +# Scale between pixels and coordinates +scale= diagp/diag +x= (width/2.0)/scale +y= (height/2.0)/scale + +c1= cx - x + (cy - y) * (0+1j) +c2= cx + x + (cy + y) * (0+1j) + +#print width, height, diag, cx, cy, diagp, scale, x, y, c1, c2 +#sys.exit(0) + +#c1, c2 = (-2+2j), (2-2j) # Corner coordinates # Force c1 to be upper left and c2 to be lower right c1, c2= complex(min(c1.real, c2.real), max(c1.imag, c2.imag)), \