Points (P-P)

Point-Line (P-L)

Point-Circle (P-C)

Lines (L-L)

Line-Circle (L-C)

Checking

Circles (C-C)

 d' d^q = k 

Cases

Curves

T-Cassini ovals (P-P q=1)

T-Lemniscate (P-P q=1, k=OA²/4)

T-Circle (P-P q=0)

Not T-circle (P-P q=-1 k≠1)

T-Perp.Bisec. (P-P q=-1, k=1)

T-Quartics (P-L q=1)

Activate offset

t': 2
O': (3.9856, -0.5088)
XO(x, y) = abs(x) + abs(y)
q = 1 (slider from -3 to 3, step 0.1)
op1 = true
op2 = false
I: (1, 0)
op3 = false
op4 = false
op5 = false
O: (0, 0)
s = Line(O, I)
r = Line(O, (3, 4))
C: (1.4, 3.8)
Ps = ClosestPoint(s, C)
Pd = ClosestPoint(r, C)
t = 3
c: {Polygon[O - (t, 0), O - (0, t), 4]}
Pc = ClosestPoint(c, C)
A: (3.25, -1)
c': {Polygon[O' - (t', 0), O' - (0, t'), 4]}
Pc' = ClosestPoint(c', C)
h = 6 (slider from 0 to 6, step 0.02)
k = 8 (slider from 0 to 8, step 0.1)
comprobar = false
s1 = Segment(C, A)
i = OrthogonalLine(C, r)
s3 = Segment(C, Pd)
kk: (XO(C - If[op1 ∨ op2 ∨ op3, A, If[op4, Ps, Pc']]) * (XO(C - If[op1, O, If[op2 ∨ op4 ∨ op5, Pd, Pc]]))^(q))
textoComprueba: "k = " + kk + ""
s4 = Segment(C, Pc)
s2 = Segment(O, C)
op6 = false
XA(x, y) = abs(x - x(A)) + abs(y - y(A))
XO'(x, y) = abs(x - x(O')) + abs(y - y(O'))
s5 = Segment(C, Pc')
opCasos = true
opCurvas = false
opCurva2 = false
opCurva3 = false
opCurva1 = false
opCurva4 = false
opCurva5 = false
opCurva6 = false
ci1:=(XA * XO^(q)) = k
ci3:=(XA * (abs(XO - t))^(q)) = k
f(h) = k / h^(q)
a: (abs(O - A))^(2) / 4
Xr(x, y) = abs((x(r) * x) + (y(r) * y) + z(r)) / Max[abs(x(r)), abs(y(r))]
Xs(x, y) = abs((x(s) * x) + (y(s) * y) + z(s)) / Max[abs(x(s)), abs(y(s))]
ci2:=(XA * Xr^(q)) = k
ci4:=(Xs * Xr^(q)) = k
ci5:=(abs(XO' - t') * Xr^(q)) = k
ci6:=(abs(XO' - t') * (abs(XO - t))^(q)) = k
m: ((-x(r))) / y(r)
op7 = false
h': 6 - h
c1: {Polygon[O - (t + h', 0), O - (0, t + h'), 4]}
c2: {Polygon[O - (Max[t - h', 0], 0), O - (0, Max[t - h', 0]), 4]}
c1': {Polygon[O' - (t' + f(h'), 0), O' - (0, t' + f(h')), 4]}
c2': {Polygon[O' - (Max[t' - f(h'), 0], 0), O' - (0, Max[t' - f(h'), 0]), 4]}
sA: {Polygon[A - (f(h'), 0), A - (0, f(h')), 4]}
r1a = Translate(r, If[y(r) ≤ (-x(r)) ∨ y(r) ≟ 0, (h', 0), (0, (-h'))])
r1b = Translate(r, If[y(r) ≤ (-x(r)) ∨ y(r) ≟ 0, ((-h'), 0), (0, h')])
sO: {Polygon[O - (h', 0), O - (0, h'), 4]}
r2a = Translate(s, If[y(s) ≤ (-x(s)) ∨ y(s) ≟ 0, ((-f(h')), 0), (0, f(h'))])
r2b = Translate(s, If[y(s) ≤ (-x(s)) ∨ y(s) ≟ 0, (f(h'), 0), (0, (-f(h')))])

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)