$\textsf{\LARGE O}$

$\textsf{\LARGE B}$

Entre pontos

$\textsf{\LARGE A}$

Ao contrair as T-circunferências com o rastro ativado, em cada ponto 
do plano, sobrevive a cor correspondente ao centro mais próximo.

Diagrama de Voronoi

Com mais pontos, podemos visualizar o diagrama de Voronoi
e compará-lo com o correspondente à distância euclidiana.

Ponto-Reta

Ponto-Circunferência

Duas curvas

Esqueleto

Eixo medial

Disco bitangente

XA - Xr = 0

XA - XB = 0

XA - |XO - s| = 0

s

tt = 0 (slider from 0 to 1, step 0.01)
O: (-1.57, 2.72)
t = Segment((3, 1), O)
P1: (6, -3)
puntos = Join({CellRange(P1,P11,"point"), {P1}})
vectores = Sequence(puntos(k + 1) - puntos(k), k, 1, 11)
h = 10 (slider from 0 to 10, step 0.02)
h': 10 - h
j': x + (2 * y) - 13 = 0
N': (13 / 3, -4 / 3)
N: (-1 / 3, -4 / 3)
P11: (6, 6)
polígono2 = Polygon(CellRange(P1,P11,"point"))
P10: (1, 6)
P9: (4, 3)
P8: (4, 0)
P7: (0, 0)
m = Line(P7, P7 + (0, 1))
i = Line(P7, P7 + (1, 0))
P6: (0, 7)
P5: (-4, 3)
P4: (-4, -1)
P3: (-2, -1)
k = AngularBisector(P3, P4, P5)
g = Line(P3, P3 + (1, 0))
E: (P3 + P7) / 2
f = Line(E, E + (1, -1))
J = Intersect(f, i)
q4 = Segment(J, E)
F = Intersect(f, g)
q6 = Segment(F, N)
q5 = Segment(E, F)
H: (x(P3), y(P5))
q1 = Segment(P6, H)
l = Line(H, H + (0, 1))
K = Intersect(k, l)
q3 = Segment(K, J)
q2 = Segment(H, K)
P2: (-2, -3)
j = AngularBisector(P10, P11, P1)
S = Intersect(j, j')
q13 = Segment(S, P10)
P = Intersect(Segment[P1, P11], i)
Q: (P8 + P) / 2
q10 = Segment(N', Q)
R: (x(Q), y(P9))
q12 = Segment(R, S)
q11 = Segment(Q, R)
L = Intersect(Segment[P1, P2], m)
M: (P7 + L) / 2
q7 = Segment(N, M)
M': (x(P8), y(M))
q9 = Segment(M', N')
q8 = Segment(M, M')
l4: {q1, q2, q3, q4, q5, q6, q7, q8, q9, q10, q11, q12, q13}
FF = Point(l4)
q = Line(FF, FF + (1, 0))
G = Intersect(Segment[P6, P7], q)
JJ = ClosestPoint(polígono2, FF)
I = (0, 2.25)
r_{1} = Line(O, I)
B: (0, 2)
op1 = false
A = Point(t, tt)
radio = 6 (slider from 0 to 10, step 0.02)
op2 = false
A1: (-1.5, 6.5)
A2 = (0.75, 4.75)
A7 = (11.5, 2.25)
A6 = (4, 3.25)
A9 = (2, 0.75)
A8 = (-1.25, -0.75)
A10 = (6.75, 0.5)
dAB: abs(x(A - B)) + abs(y(A - B))
A3 = (10, 6)
A4 = (6.75, 5.25)
A5: (-1.5, 3.25)
op3 = false
r = OrthogonalLine(O, r_{1})
op4 = false
s: 3
l2: {Polygon[O - (s, 0), O - (0, s), 4]}
aa = PathParameter(A)
c: 0.89359
C: (2.89912, 1.09375)
e: 0.89359
op6 = false
c2 = CurveCartesian(cos(t) + sin(t) + 2, sin((3 * t)) + (2 * cos(t)) + 4, t, 0, (2 * pi))
c1 = CurveCartesian(cos(t) + sin(t), sin((2 * t)) - cos(t) + 1, t, 0, (2 * pi))
S1 = Point(c1)
n1 = CurvatureVector(S1, c1)
cc1 = Circle(S1, h)
s1 = Line(S1, S1 + n1)
S2 = Point(c2)
n2 = CurvatureVector(S2, c2)
s2 = Line(S2, S2 + n2)
cc2 = Circle(S2, h)
n: 290
a = 0.75 (slider from 0 to 9, step 0.01)
cc1b = Polygon(S1 - (h', 0), S1 - (0, h'), 4)
Q1a, Q1b = Intersect(s1, cc1b)
cc2b = Polygon(S2 - (h', 0), S2 - (0, h'), 4)
Q2a, Q2b = Intersect(s2, cc2b)
offset1a = Locus(Q1a, S1)
offset1b = Locus(Q1b, S1)
offset2a = Locus(Q2a, S2)
offset2b = Locus(Q2b, S2)
D: (3.5, 4.5)
polígono1: {Polygon[CellRange(P1,P11,"point")]}
vectoresn = Sequence((h' * (y(vectores(k)), (-x(vectores(k)))) / (abs(y(vectores(k))) + abs(x(vectores(k))))), k, 1, 11)
op5 = false
polígono2' = Polygon(CellRange(P1,P11,"point"))
segmentos = Sequence(Segment[puntos(k) + vectoresn(k), puntos(k + 1) + vectoresn(k)], k, 1, 11)
seg1: segmentos(1)
seg2: segmentos(2)
seg3: segmentos(3)
seg4: segmentos(4)
seg5: segmentos(5)
seg6: segmentos(6)
seg7: segmentos(7)
seg8: segmentos(8)
seg9: segmentos(9)
seg10: segmentos(10)
seg11: segmentos(11)
p = Line(P9, P9 + (1, 1))
q2' = Segment(H, P5)
q3' = Segment(K, P4)
q7' = Segment(N, P2)
q10' = Segment(N', P1)
r2_{1}: abs(x(FF - If[PathParameter[FF] < 0.15, G, JJ])) + abs(y(FF - If[PathParameter[FF] < 0.15, G, JJ]))
q13' = Segment(S, P11)
l5: {Polygon[FF - (0, r2_{1}), FF + (r2_{1}, 0), 4]}
b = PathParameter(FF)
verEjeMedio = true
test = PathParameter(FF)
XA(x, y) = abs(x - x(A)) + abs(y - y(A))
XB(x, y) = abs(x - x(B)) + abs(y - y(B))
Xr(x, y) = abs((x(r) * x) + (y(r) * y) + z(r)) / Max[abs(x(r)), abs(y(r))]
XO(x, y) = abs(x - x(O)) + abs(y - y(O))
T: (1.64, 5.46)
radio': 10 - radio
B1: {Polygon[A1 - (radio', 0), A1 - (0, radio'), 4]}
B2: {Polygon[A2 - (radio', 0), A2 - (0, radio'), 4]}
B3: {Polygon[A3 - (radio', 0), A3 - (0, radio'), 4]}
B4: {Polygon[A4 - (radio', 0), A4 - (0, radio'), 4]}
B5: {Polygon[A5 - (radio', 0), A5 - (0, radio'), 4]}
B6: {Polygon[A6 - (radio', 0), A6 - (0, radio'), 4]}
B7: {Polygon[A7 - (radio', 0), A7 - (0, radio'), 4]}
B8: {Polygon[A8 - (radio', 0), A8 - (0, radio'), 4]}
B9: {Polygon[A9 - (radio', 0), A9 - (0, radio'), 4]}
B10: {Polygon[A10 - (radio', 0), A10 - (0, radio'), 4]}
polígono1a: {Polygon[B - (radio', 0), B - (0, radio'), 4]}
polígono1b: {Polygon[A - (radio', 0), A - (0, radio'), 4]}
cir3: {Polygon[P3 - (0, h'), P3 + (h', 0), 4]}
cir7: {Polygon[P7 - (0, h'), P7 + (h', 0), 4]}
cir8: {Polygon[P8 - (0, h'), P8 + (h', 0), 4]}
cir9: {Polygon[P9 - (0, h'), P9 + (h', 0), 4]}
ec3:=XA - Xr = 0
ec1:=XA - XB = 0
ec4:=XA - abs(XO - s) = 0
d = Segment(O, O + (0, s))

Tool: OpSuma
Elige O y luego dos puntos
Input: O, A, B
Output: O'

C = Midpoint(A, B)
O' = Mirror(O, C)

Tool: OpResta
Elige O, el primer punto y el segundo punto
Input: O, A, B
Output: O'

B' = Mirror(B, O)
C = Midpoint(A, B')
O' = Mirror(O, C)

Tool: OpProducto
Elige O e I, y luego dos puntos
Input: O, I, A, B
Output: E

I' = Mirror(I, O)
B' = Mirror(B, O)
c = Semicircle(I', I)
d = Semicircle(B', B)
f = Line(O, I)
g = OrthogonalLine(O, f)
C = Intersect(c, g, 1)
h = Line(C, A)
D = Intersect(d, g, 1)
i = Line(D, h)
E = Intersect(f, i)

Tool: OpDivisión
Elige O e I, y luego el primer punto y el segundo punto
Input: O, I, A, B
Output: E

f = Line(O, I)
g = OrthogonalLine(O, f)
I' = Mirror(I, O)
c = Semicircle(I', I)
Binv = Mirror(B, c)
Binv' = Mirror(Binv, O)
e = Semicircle(Binv', Binv)
F = Intersect(e, g, 1)
C = Intersect(c, g, 1)
h = Line(C, A)
i = Line(F, h)
E = Intersect(f, i)