Points (P-P)

Point-Line (P-L)

Point-Circle (P-C)

Lines (L-L)

Line-Circle (L-C)

Checking

Circles (C-C)

 d' + q d = k 

Cases

Curves

Rectangle (L-L q=0.8)

T-Ellipse (P-P q=1)

T-Hyperbola (P-P q=-1 k≠0)

T-Circle (P-P q=0)

T-Pascal's snail (P-P q=2)

T-Parabola (P-L q=-1)

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

Bisectors (L-L q=-1, k=0)

Rhomboid (L-L q=1.5)

Activate offset

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