Rotar cierto ángulo

Reflejar en un diámetro

Celda primitiva

Aplicar simetrías

Azulejo

Centro de rotación

Copiar el rosetón

Dibujo libre

Rastro

Color manual

Q: Corner[pincel, 1] + (0.05, 0)
CRot' = (8.52, 0.34)
CRot = (-1.42, 3.94)
uu = Vector(CRot, CRot')
A0: CRot - (2, 0)
A: A0 + uu
AA0 = Rotate(A0, 18°, CRot)
AB0 = Rotate(A0, 300°, CRot)
e = CircleArc(CRot, AA0, AB0)
F = Point(e)
n: round((360 * ° / Angle[A0, CRot, F]))
α: (360 * ° / n)
B0 = If(α  <  360°, Rotate[A0, α, CRot], Rotate[A0, 359.9°, CRot])
B: B0 + uu
k = 2.8 (slider from -5 to 5, step 0.1)
B' = Dilate(B, k, CRot')
rB = Line(CRot', B')
A' = Dilate(A, k, CRot')
rA = Line(CRot', A')
g = Circle(CRot', A')
f = Circle(CRot, A0)
R0: CRot' + (0.78, 1.47)
yQ = -0.96
xQ = 9.8 (slider from 2.26 to 20, step 0.01)
J2 = Mirror(B0, CRot)
C2: A + J2 - A0
rota = false
E = (-2.58, -2.3000000000000003)
fi = 1.618033988749895
d = Circle(E, 1 / fi)
G = Point(d)
β0 = Angle(E + (0.5, 0), E, G)
β = If(rota, round((10 * β0)) / 10, 0°)
H = (0.2, -4.88)
A1 = 1
A2 = 2
xGoma = -0.9 (slider from -1.4 to -0.9, step 0.01)
yGoma = -1.82 (slider from -2 to -1.7, step 0.01)
azulM = 22 (slider from 0 to 100, step 1)
rojoM = 70 (slider from 0 to 100, step 1)
verdeM = 54 (slider from 0 to 100, step 1)
reflejo = false
motivo = true
isometrías = false
patrón = true
rotación = false
copia = false
libre = false
rastro = false
manual = false
b = Ray(CRot', A')
qx = Circle(CRot', Q)
qy = Ray(CRot', Q)
Qx = Intersect(qx, b)
PuntoGoma: (xGoma, yGoma)
A3: (2 * A2) - A1
A4: (2 * A3) - A2
A5: (2 * A4) - A3
A6: (2 * A5) - A4
A7: (2 * A6) - A5
A8: (2 * A7) - A6
A9: (2 * A8) - A7
A10: (2 * A9) - A8
A11: (2 * A10) - A9
A12: (2 * A11) - A10
A13: (2 * A12) - A11
A14: (2 * A13) - A12
A15: (2 * A14) - A13
A16: (2 * A15) - A14
A17: (2 * A16) - A15
A18: (2 * A17) - A16
A19: (2 * A18) - A17
A20: (2 * A19) - A18
azulA: (Distance[Q, A'] / Distance[CRot', A'] * 0.8)
rojoA: Distance[Q, rB] / Distance[A', rB]
rojo = If(manual, rojoM / 100, rojoA)
verdeA: Distance[Q, rA] / Distance[B', rA]
verde = If(manual, verdeM / 100, verdeA)
azul = If(manual, azulM / 100, azulA)
muestraColor: {Polygon[H, H + (1, 0), H + (1, fi), H + (0, fi)]}
texto1: "% Rojo = " + rojoM + "

% Verde = " + verdeM + "

% Azul = " + azulM
texto2: "Ángulo rotado = " + β
F2 = Mirror(A0, CRot)
F' = Mirror(F, CRot)
QR = Mirror(Q, CRot')
PPP: (xQ, yQ)
celda = CircleSector(CRot, A0, B0)
ε = 2
Ros0: A0
cisne2 = Translate(cisne1, uu)
cisne3 = Dilate(cisne2, k, CRot')
listaCisneRos = Sequence(Rotate[cisne1, (s * α), CRot], s, 1, n - 1)
rectas1 = Sequence(Segment[Rotate[CRot', (s * α), CRot'], Rotate[A', (s * α), CRot']], s, 1, n)
Esq1 = If(α  <  180°, Rotate[Ros0, α / 10, CRot], Rotate[Ros0, 12°, CRot])
Esq2 = If(α  <  ε, Rotate[Ros0, (0.75 * α), CRot], Rotate[Ros0, 1.33, CRot])
patron = CircleSector(CRot', A', B')
texto3: "Orden " + n
I = Point(g)
I' = Mirror(I, CRot')
h = Segment(I', I)
listaCisne = Sequence(Rotate[cisne3, (s * α) + (0 * x(F)), CRot'], s, 1, n - 1)
baseCopia: {Circle[CRot', A']}
cisne4 = Mirror(cisne3, h)
Qy = Intersect(g, qy)
test: (AffineRatio[CRot', A', Qx] ≥ 0) ∧ (AffineRatio[CRot', A', Qx] ≤ 1) ∧ libre ∧ rastro ∧ (Angle[A', CRot', Qy] ≤ α)
listaP = Sequence(Rotate[Q, (s * α), CRot'], s, 0, n - 1)
B1 = Element(listaP, A1)
B2 = Element(listaP, A2)
B3 = Element(listaP, A3)
B4 = Element(listaP, A4)
B5 = Element(listaP, A5)
B6 = Element(listaP, A6)
B7 = Element(listaP, A7)
B8 = Element(listaP, A8)
B9 = Element(listaP, A9)
B10 = Element(listaP, A10)
B11 = Element(listaP, A11)
B12 = Element(listaP, A12)
B13 = Element(listaP, A13)
B14 = Element(listaP, A14)
B16 = Element(listaP, A16)
B15 = Element(listaP, A15)
B17 = Element(listaP, A17)
B18 = Element(listaP, A18)
B19 = Element(listaP, A19)
B20 = Element(listaP, A20)
c = Circle(CRot', A')
listaCisne2reflejo = Sequence(Rotate[cisne4, (s * α) + β + (0 * x(F)), CRot'], s, 0, n - 1)
listaCisne2 = Sequence(Rotate[cisne3, (s * α) + β + (0 * x(F)), CRot'], s, 0, n - 1)