d = %v

Curva paralela (offset)

Usando o comando VetorUnitárioPerpendicular (e seu vetor oposto), 
é simples criar curvas paralelas a uma reta, a uma distância d dada.
Para cada reta, encontramos um par de curvas paralelas.

Ponto

Circunferência

Reta paralela

Seletor decrescente e traço

Usando o comando VetorCurvatura e à ferramenta 
Lugar Geométrico, podemos generalizar o paralelismo 
para muitas curvas (offset). Observemos que, em geral,
as curvas offset não são congruentes com a curva original.

Mas, no caso da circunferência, cujo offset também é uma circunferência,
não precisamos do comando VetorCurvatura ou da ferramenta Lugar Geométrico,
pois basta variar adequadamente o raio da circunferência original.

Se considerarmos um ponto como uma circunferência de raio 0,
obtemos um único offset centrado nele.

Agora ativamos o traço do offset móvel e escolhemos um valor decrescente
(oposto a um seletor “incrementar uma vez”).

Exemplo de uso

Dessa forma, ao fazer offset simultaneamente em um ponto e uma reta, 
podemos visualizar a parábola por contraste de cor.

$\textsf{\LARGE offset}$

Lugar Geométrico

1

2

$\textsf{\LARGE locus 1}$

$\textsf{\LARGE locus 2}$

locus 1

locus 2

G = (-1.5, 2)
H = (4.25, 1)
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.75, 3.5)
B = (2.75, 5)
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' + ""