Something I forgot about parabolas
by sonone, Jul 13, 2023, 2:22 PM
I was recently making a calculator program to generate equations for various graphs, and while researching parabolas I came across something I had forgotten about.
Most of us probably learned parabolas as
or
, right? But they are much more than an equation. Take a horizontal line and any point in a plane. We call the line the directrix and the point the focus. ![[asy]
size(100);
draw((-5,0)--(5,0), darkgreen,Arrows(TeXHead));
dot((0,3), red);
label("directrix",(0,0),S,darkgreen);
label("focus",(0,3),N,red);
[/asy]](//latex.artofproblemsolving.com/5/0/3/5038eaaf5c5b61d8e58e06311bb18ec2c4ce8b61.png)
To generate a parabola, we take the locus of points equidistant from the focus and directrix.
![[asy]
size(100);
pair parabola(pair focus, real directrix, real x) {
pair vertex = (focus.x, (focus.y-directrix)/2);
real mindist = vertex.y-directrix;
return (x, 1/(4*mindist)*x^2-vertex.x/(2*mindist)+vertex.x^2/(2*mindist)+vertex.y);
}
draw((-5,0)--(5,0), darkgreen,Arrows(TeXHead));
dot((0,3), red);
pair p1 = parabola((0,3),0,-2);
draw((-2,0)--p1--(0,3), blue);
dot(p1,green);
[/asy]](//latex.artofproblemsolving.com/a/1/1/a11597b9bb89d413fbf04a9bc91143b55e8874f5.png)
If we do this for a lot a points we get something like this:
![[asy]
size(100);
pair parabola(pair focus, real directrix, real x) {
pair vertex = (focus.x, (focus.y-directrix)/2);
real mindist = vertex.y-directrix;
return (x, 1/(4*mindist)*x^2-vertex.x/(2*mindist)+vertex.x^2/(2*mindist)+vertex.y);
}
draw((-5,0)--(5,0), darkgreen,Arrows(TeXHead));
dot((0,3), red);
pair last = parabola((0,3),0,-4);
for (real i = -4; i <= 4; ++i) {
pair p1 = parabola((0,3),0,i);
draw(last--p1,orange);
last = p1;
draw((i,0)--p1--(0,3), blue);
dot(p1,green);
}
dot((0,3), red);
[/asy]](//latex.artofproblemsolving.com/b/e/b/beb4dc99e21271f86aef3c7c9290155e74e25645.png)
Note that the vertex of the parabola is where the distance is minimized.
This definition seems trivial, but it gets interesting when the line is not horizontal:
![[asy]
size(100);
pair parabola(pair focus, real directrix, real x) {
pair vertex = (focus.x, (focus.y-directrix)/2);
real mindist = vertex.y-directrix;
return (1/(4*mindist)*x^2-vertex.x/(2*mindist)+vertex.x^2/(2*mindist)+vertex.y,x);
}
draw((0,-5)--(0,5), darkgreen,Arrows(TeXHead));
dot((3,0), red);
pair last = parabola((0,3),0,-4);
for (real i = -4; i <= 4; i+=.5) {
pair p1 = parabola((0,3),0,i);
draw(last--p1,orange);
last = p1;
}
dot((3,0), red);
[/asy]](//latex.artofproblemsolving.com/1/f/5/1f5a8557e954d36a0a454b18cf9a162e52e89a73.png)
You can even create slanted parabolas (although you do end up with implicit equations):
![[asy]
size(100);
pair parabola(pair focus, real directrix, real x) {
pair vertex = (focus.x, (focus.y-directrix)/2);
real mindist = vertex.y-directrix;
return (x, 1/(4*mindist)*x^2-vertex.x/(2*mindist)+vertex.x^2/(2*mindist)+vertex.y);
}
picture para;
draw(para,(-5,0)--(5,0), darkgreen,Arrows(TeXHead));
dot(para,(0,3), red);
pair last = parabola((0,3),0,-4);
for (real i = -4; i <= 4; i+=.2) {
pair p1 = parabola((0,3),0,i);
draw(para,last--p1,orange);
last = p1;
}
dot(para,(0,3), red);
add(rotate(-60)*para);
[/asy]](//latex.artofproblemsolving.com/a/4/1/a41de293a5a5c31b0ad83c379bf38971a8161943.png)
I hope you enjoyed!
Most of us probably learned parabolas as


![[asy]
size(100);
draw((-5,0)--(5,0), darkgreen,Arrows(TeXHead));
dot((0,3), red);
label("directrix",(0,0),S,darkgreen);
label("focus",(0,3),N,red);
[/asy]](http://latex.artofproblemsolving.com/5/0/3/5038eaaf5c5b61d8e58e06311bb18ec2c4ce8b61.png)
To generate a parabola, we take the locus of points equidistant from the focus and directrix.
![[asy]
size(100);
pair parabola(pair focus, real directrix, real x) {
pair vertex = (focus.x, (focus.y-directrix)/2);
real mindist = vertex.y-directrix;
return (x, 1/(4*mindist)*x^2-vertex.x/(2*mindist)+vertex.x^2/(2*mindist)+vertex.y);
}
draw((-5,0)--(5,0), darkgreen,Arrows(TeXHead));
dot((0,3), red);
pair p1 = parabola((0,3),0,-2);
draw((-2,0)--p1--(0,3), blue);
dot(p1,green);
[/asy]](http://latex.artofproblemsolving.com/a/1/1/a11597b9bb89d413fbf04a9bc91143b55e8874f5.png)
If we do this for a lot a points we get something like this:
![[asy]
size(100);
pair parabola(pair focus, real directrix, real x) {
pair vertex = (focus.x, (focus.y-directrix)/2);
real mindist = vertex.y-directrix;
return (x, 1/(4*mindist)*x^2-vertex.x/(2*mindist)+vertex.x^2/(2*mindist)+vertex.y);
}
draw((-5,0)--(5,0), darkgreen,Arrows(TeXHead));
dot((0,3), red);
pair last = parabola((0,3),0,-4);
for (real i = -4; i <= 4; ++i) {
pair p1 = parabola((0,3),0,i);
draw(last--p1,orange);
last = p1;
draw((i,0)--p1--(0,3), blue);
dot(p1,green);
}
dot((0,3), red);
[/asy]](http://latex.artofproblemsolving.com/b/e/b/beb4dc99e21271f86aef3c7c9290155e74e25645.png)
Note that the vertex of the parabola is where the distance is minimized.
This definition seems trivial, but it gets interesting when the line is not horizontal:
![[asy]
size(100);
pair parabola(pair focus, real directrix, real x) {
pair vertex = (focus.x, (focus.y-directrix)/2);
real mindist = vertex.y-directrix;
return (1/(4*mindist)*x^2-vertex.x/(2*mindist)+vertex.x^2/(2*mindist)+vertex.y,x);
}
draw((0,-5)--(0,5), darkgreen,Arrows(TeXHead));
dot((3,0), red);
pair last = parabola((0,3),0,-4);
for (real i = -4; i <= 4; i+=.5) {
pair p1 = parabola((0,3),0,i);
draw(last--p1,orange);
last = p1;
}
dot((3,0), red);
[/asy]](http://latex.artofproblemsolving.com/1/f/5/1f5a8557e954d36a0a454b18cf9a162e52e89a73.png)
You can even create slanted parabolas (although you do end up with implicit equations):
![[asy]
size(100);
pair parabola(pair focus, real directrix, real x) {
pair vertex = (focus.x, (focus.y-directrix)/2);
real mindist = vertex.y-directrix;
return (x, 1/(4*mindist)*x^2-vertex.x/(2*mindist)+vertex.x^2/(2*mindist)+vertex.y);
}
picture para;
draw(para,(-5,0)--(5,0), darkgreen,Arrows(TeXHead));
dot(para,(0,3), red);
pair last = parabola((0,3),0,-4);
for (real i = -4; i <= 4; i+=.2) {
pair p1 = parabola((0,3),0,i);
draw(para,last--p1,orange);
last = p1;
}
dot(para,(0,3), red);
add(rotate(-60)*para);
[/asy]](http://latex.artofproblemsolving.com/a/4/1/a41de293a5a5c31b0ad83c379bf38971a8161943.png)
I hope you enjoyed!