Recta-Circunferencia (R-C)

Rectas (R-R)

Punto-Circunferencia (P-C)

Punto-Recta (P-R)

Puntos (P-P)

Comprobar

Circunferencias (C-C)

 d' + q d = k 

Casos

Curvas

Rectángulo (R-R q=1)

Elipse (P-P q=1)

Hipérbola (P-P q=-1, k≠0)

Circunferencia (P-P q=0)

Caracol de Pascal (P-P q=2)

Parábola (P-R q=-1)

Mediatriz (P-P q=-1, k=0)

Bisectrices (R-R q=-1, k=0)

Romboide (R-R q=1.5)

Activar offset

O: (0, 0)
I: (1, 0)
s = Line(O, I)
t': 2
op5 = false
op4 = false
op3 = false
t = 3
c = Circle(O, t)
r = Line(O, (3, 4))
op2 = false
op1 = true
C: (1.4, 3.8)
O' = Point(s)
c' = Circle(O', t')
Pc' = ClosestPoint(c', C)
Pc = ClosestPoint(c, C)
Pd = ClosestPoint(r, C)
A: (-3, 0)
Ps = ClosestPoint(s, C)
q = 2 (slider from -3 to 3, step 0.1)
h = 6 (slider from 0 to 6, step 0.01)
k = 6 (slider from -8 to 8, step 0.1)
comprobar = false
s1 = Segment(C, A)
i = OrthogonalLine(C, r)
s3 = Segment(C, Pd)
kk: Distance[C, If[op1 ∨ op2 ∨ op3, A, If[op4, Ps, Pc']]] + (q * Distance[C, If[op1, O, If[op2 ∨ op4 ∨ op5, Pd, Pc]]])
textoComprueba: "k = " + kk + ""
s4 = Segment(C, Pc)
s2 = Segment(O, C)
op6 = false
s5 = Segment(C, Pc')
opCasos = true
opCurvas = false
opCurva7 = false
opCurva2 = false
opCurva3 = false
opCurva1 = false
opCurva5 = false
opCurva6 = false
opCurva4 = false
opCurva9 = false
opCurva8 = false
s3b = Segment(C, Ps)
test: s5 + (q * s3)
texto1 = If(op1, "CUÁRTICA (ÓVALO CARTESIANO)", op2, "CUÁRTICA (PRODUCTO DE 2 CÓNICAS)", op3, "GRADO 8 (PRODUCTO DE 2 ÓVALOS CARTESIANOS)", op4, "CUÁRTICA (PRODUCTO DE 4 RECTAS)", op5, "GRADO 6 (PRODUCTO DE 2 CÓNICAS Y 2 RECTAS)", op6, "GRADO 12 (PRODUCTO DE 3 ÓVALOS CARTESIANOS)", "")
ci1':=(((4 * q^(2)) * XO^(2)) * XA^(2)) = (k^(2) - XA^(2) - (q^(2) * XO^(2)))^(2)
ci1:=XA + (q * XO) = k
ci2:=XA + (q * Xr) = k
ci2':=XA^(2) = (k + (q * Xr))^(2)
ci3:=XA + (q * abs(XO - t)) = k
ci3a:=(((4 * q^(2)) * XA^(2)) * XO^(2)) = ((k + (q * t))^(2) - XA^(2) - (q^(2) * XO^(2)))^(2)
ci3b:=(((4 * q^(2)) * XA^(2)) * XO^(2)) = ((k - (q * t))^(2) - XA^(2) - (q^(2) * XO^(2)))^(2)
ci4:=Xs + (q * Xr) = k
ci5:=abs(XO' - t') + (q * Xr) = k
ci5a:=((4 * t'^(2)) * XO'^(2)) = ((k - (q * Xr))^(2) - XO'^(2) - t'^(2))^(2)
ci5b:=XO'^(2) = (k + t' + (q * Xr))^(2)
ci6a:=(((4 * q^(2)) * XO^(2)) * XO'^(2)) = ((k + t' + (q * t))^(2) - XO'^(2) - (q^(2) * XO^(2)))^(2)
ci6b:=(((4 * q^(2)) * XO^(2)) * XO'^(2)) = ((k - t' + (q * t))^(2) - XO'^(2) - (q^(2) * XO^(2)))^(2)
ci6c:=(((4 * q^(2)) * XO^(2)) * XO'^(2)) = ((k + t' - (q * t))^(2) - XO'^(2) - (q^(2) * XO^(2)))^(2)
ci6:=abs(XO' - t') + (q * abs(XO - t)) = k
op7 = false
h': 6 - h
c1 = Circle(O, t + h')
c2 = Circle(O, t - h')
c1' = Circle(O', t' + k - (q * h'))
c2' = Circle(O', t' - (k - (q * h')))
sA = Circle(A, k - (q * h'))
sO = Circle(O, h')
d1a = Translate(r, Vector[(h' * UnitOrthogonalVector[r])])
d1b = Translate(r, Vector[((-h') * UnitOrthogonalVector[r])])
d2b = Translate(s, Vector[(((-k) + (q * h')) * UnitOrthogonalVector[s])])
d2a = Translate(s, Vector[((k - (q * h')) * UnitOrthogonalVector[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)