So... my algebra teacher kept asking us something like "The roots of this equation are 3 and 5, find the equation". There's no single equation, there are a series of equations (a "line" of equations, because the equation depends on a one dimensional term)
So i decided to figure it out, of course

The code's at the bottom of the post, but here's the math:
r1 and r2 are the roots (x intercepts) of f(x)=ax^2+bx+c
m is the x coord of the line of symmetry going through the center of the parabola
since m is equidistant from the x intercepts, we can say
M=(r1+r2)/2
The line of symmetry can also be found using -b/(2*a), so...
M=-b/(2*a)
-2aM=b
so now f(x)=ax^2-2aMx+c
Now, R1 and R2 are solutions of the equation f(x)=0, so...
a(r1)^2-2aM(r1)+c=0
c=-a(r1)^2+2aM(r1)
Plugging that back into f(x)=ax^2-2aMx+c...
f(x)=ax^2-2aMx-a(r1)^2+2aM(r1)
f(x)=a(x2-2Mx-(r1)^2+2M(r1))
which can also be expressed as
f(x)=a(x^2-2Mx+M^2-(r1-M)^2)
so, given two solutions of 0=ax^2+bx+c, you can find a plane [f(x,a)=y] of solutions.
t3h code?
global pixels_per_unit as float
pixels_per_unit=100
sync on
r1 as float
r1=0
r2 as float
r2=0
m as float
m=0
a as float
a=0
do
cls
a=(mousey()-screen height()/2)/pixels_per_unit
if mouseclick()=1 then r1=(mousex()-screen width()/2)/pixels_per_unit
if mouseclick()=2 then r2=(mousex()-screen width()/2)/pixels_per_unit
circle r1*pixels_per_unit+screen width()/2,screen height()/2,6
circle r2*pixels_per_unit+screen width()/2,screen height()/2,6
m=(r1+r2)/2.0
from#=-4
ato#=4
for x#=from# to ato# step 0.005
dot x#*pixels_per_unit+screen width()/2,a*(x#^2-2*m*x#+m^2-(r1-m)^2)*pixels_per_unit+ screen height()/2
next x#
drawGraphPaper(pixels_per_unit,screen width()/2,screen height()/2,4)
sync
loop
end
function drawGraphPaper(PPU as integer, midx as integer, midy as integer, subUnits as integer)
if subunits<=0 then subunits=1
if PPU<=0 then ppu=40
subDist as float
subDist=PPU*1.0/subUnits
counter1 as float =
counter1=-PPU
counter2 as float = 0
w=screen width()
h=screen height()
ink rgb(0,0,40)
line 0,h/2,w,h/2
ink rgb(0,40,0)
line w/2,0,w/2,h
while (counter1+midx<w) or (midx-counter1>0)
inc counter1, PPU
counter2=0
while (counter2<PPU)
inc counter2, subDist
ink rgb(150,150,150),0
line midx+counter1+counter2,midy-2,midx+counter1+counter2,midy+2
line midx-counter1+counter2,midy-2,midx-counter1+counter2,midy+2
endwhile
ink rgb(255,255,255),0
line midx+counter1,midy-5,midx+counter1,midy+5
line midx-counter1,midy-5,midx-counter1,midy+5
endwhile
counter1=-PPU
counter2=0
while (counter1+midy<w) or (midy-counter1>0)
inc counter1, PPU
counter2=0
while (counter2<PPU)
inc counter2, subDist
ink rgb(150,150,150),0
line midx-2,midy+counter1+counter2,midx+2,midy+counter1+counter2
line midx-2,midy-counter1-counter2,midx+2,midy-counter1-counter2
endwhile
ink rgb(255,255,255),0
line midx-4,midy+counter1,midx+4,midy+counter1
line midx-4,midy-counter1,midx+4,midy-counter1
endwhile
endfunction
Click to change r1 and r2, the mouse y controls a.
Now... what would be really interesting would be seeing this only given r1. The shape would then be four dimensional (f(x,r2,a)=y), but could probably be easily visualized by a volumetric display (or a plane changing over some user-controlled variable). It might be worth looking into.