d = %v

Curva paralela (offset)

Usando el comando VectorNormalUnitario (y el vector opuesto), es sencillo crear paralelas a una recta, 
a una distancia d dada. Para cada recta, encontramos un par de paralelas.

Punto

Circunferencia

Recta paralela

Deslizador decreciente y rastro

Usando el comando VectorCurvatura y la herramienta Lugar geométrico, 
podemos generalizar el paralelismo a muchas curvas (offset). Observemos que, 
en general, las curvas offset no son semejantes a la curva original.

Pero, en el caso de la circunferencia, cuyo offset también es una circunferencia, 
no necesitamos ni el comando VectorCurvatura ni la herramienta Lugar geométrico, 
ya que basta variar adecuadamente el radio de la circunferencia original.

Si consideramos un punto como una circunferencia de radio 0,
obtenemos un único offset móvil centrado en él.

Ahora añadimos rastro al offset móvil y elegimos un valor decreciente
(opuesto a un deslizador “incrementando una sola vez”).

Ejemplo de uso

Así, haciendo offset simultáneamente sobre un punto y una recta, 
podemos visualizar la parábola por contraste de color.

$\textsf{\LARGE offset}$

Lugar Geométrico

1

2

$\textsf{\LARGE locus 1}$

$\textsf{\LARGE locus 2}$

locus 1

locus 2

G = (-1.5, 1.75)
H = (4.5, 2.75)
i = Line(G, H)
dd = 4 (slider from 0 to 4, step 0.01)
d': 4 - dd
mm: (d' * UnitOrthogonalVector[i])
op2 = false
op4 = false
op3 = false
op1 = false
op6 = false
A = (-2.5, 2.75)
B = (3, 4.25)
r = Line(A, B)
d = 0 (slider from 0 to 4, step 0.01)
n: (d * UnitOrthogonalVector[r])
C = (0, 3.75)
D = (2.5, 3.5)
f = Line(C, D)
E = (4.75, 3.75)
c = Parabola(E, f)
P = Point(c)
nc = CurvatureVector(P, c)
Q: P + (d * nc / abs(nc))
Q': P - (d * nc / abs(nc))
u = Vector(P, Q)
lugar1 = Locus(Q, P)
lugar2 = Locus(Q', P)
F = (0.5, 4)
g = Circle(F, 4.2)
e = Circle(F, 4.2 - d)
e' = Circle(F, 4.2 + d)
h = Circle(F, d)
op7 = false
m: (d * UnitOrthogonalVector[i])
offset2 = Translate(i, mm)
n': (-n)
u': (-u)
offset = Translate(r, Vector[(d * UnitOrthogonalVector[r])])
op5 = false
offset1 = Translate(i, m)
offset1' = Translate(i, Vector[(-m)])
inter1 = Intersect(h, offset1, 1)
inter2 = Intersect(h, offset1, 2)
locus1 = Locus(inter1, d)
locus2 = Locus(inter2, d)
h' = Circle(F, d')
offset' = Translate(r, Vector[((-d) * UnitOrthogonalVector[r])])
offset2' = Translate(i, Vector[(-mm)])
texto9: "d' = " + d' + ""