$\textsf{\LARGE r}$

$\textsf{\LARGE F}$

Point by point

A parabola can be defined as the locus of points in the plane
that are equidistant from a line (directrix) and a point outside it (focus).
Locating one point (the vertex) is easy, but how to locate the others?

Locus

Where is the parabola?

we can create a free point with which to test
and mark those positions where the distances are equal.
It is a very didactic job, but it becomes tedious.

we can construct a generic point that creates the locus,
but this construction will only work for this or similar cases. 

VERTEX

Implicit curve (CAS)

X := (x, y) \
XF(x,y) :=Distance(X, \; F)\
Xr(x,y) :=Distance(X,  \; r)

GeoGebra usa algoritmos 
numéricos para crear esta 
curva implícita, por lo que 
en algunos casos pueden 
aparecer pequeños 
errores u omisiones.

XF - Xr = 0

Parallel curves

Mobile offset with trace

d = 0.46 (slider from 0 to 4, step 0.01)
d': 4 - d
G = (-1.5, 2)
H = (4.25, 1)
r = Line(G, H)
F = (0.5, 4)
op2 = false
op3 = false
op1 = true
B = (2.75, 5)
N = Point(r)
M = Point(r)
h = OrthogonalLine(F, r)
A = Intersect(h, r)
I = Midpoint(F, A)
C: (3.22, 3.94)
DD: (4.12, 4.78)
E: (5.22, 6.06)
C' = Mirror(C, h)
DD' = Mirror(DD, h)
E' = Mirror(E, h)
J = (4.26, 2.86)
f = OrthogonalLine(J, r)
K = Intersect(f, r)
j = Segment(J, K)
k = Segment(F, J)
D = Point(Segment[M, N])
g = Segment(F, D)
l = LineBisector(g)
m = OrthogonalLine(D, r)
L = Intersect(l, m)
lugar1 = Locus(L, D)
α = Angle(N, D, L)
O = Intersect(g, l)
β = Angle(F, O, L)
op6 = false
ec1:=XF - Xr = 0
op4 = false
op5 = false
offset1 = Sequence(Translate[r, Vector[(k * UnitOrthogonalVector[r])]], k, 0, 20, 0.2)
offset2 = Sequence(Translate[r, Vector[((-k) * UnitOrthogonalVector[r])]], k, 0, 20, 0.2)
hL = Sequence(Circle[F, k], k, 0, 20, 0.2)
zip1a = RemoveUndefined(Zip[Intersect[c1, c2, 1], c1, hL, c2, offset1])
zip1b = RemoveUndefined(Zip[Intersect[c1, c2, 2], c1, hL, c2, offset1])
zip2a = RemoveUndefined(Zip[Intersect[c1, c2, 1], c1, hL, c2, offset2])
zip2b = RemoveUndefined(Zip[Intersect[c1, c2, 2], c1, hL, c2, offset2])
v: (d' * UnitOrthogonalVector[r])
offset1' = Translate(r, v)
offset2' = Translate(r, Vector[(-v)])
c = Circle(F, d')