Ejes: símbolo feminista en Igualdad y bala rota en Pueblos libres
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
879764b6a9
commit
3509b6dd38
16 changed files with 59 additions and 44 deletions
|
|
@ -103,29 +103,44 @@ def fronteras(o, col):
|
|||
linea(o, [(x + 4, y - 4), (x - 4, y + 4)], col, 4)
|
||||
|
||||
def igualdad(o, col):
|
||||
# El signo igual, en dos barras de spray con chorreones.
|
||||
relleno(o, [(14, 50), (126, 46), (126, 76), (14, 80)], col)
|
||||
relleno(o, [(14, 100), (126, 96), (126, 126), (14, 130)], col)
|
||||
for x, y, l in ((30, 79, 14), (100, 75, 10), (46, 129, 22), (112, 126, 14)):
|
||||
# El símbolo feminista: anillo en zigzag y la cruz de debajo, con chorreones.
|
||||
cx, cy, r, pts = 70, 58, 40, []
|
||||
for i in range(180):
|
||||
a = 2 * math.pi * i / 179
|
||||
rr = r - (0 if i % 2 else 11) + random.uniform(-1.5, 1.5)
|
||||
pts.append((cx + rr * math.cos(a), cy + rr * math.sin(a)))
|
||||
o.append(f'<path d="M{" L".join(f"{x:.1f},{y:.1f}" for x, y in pts)}" fill="none" stroke="{col}" stroke-width="3.2" stroke-linejoin="round" filter="url(#spray)"/>')
|
||||
relleno(o, [(63, 96), (77, 96), (77, 160), (63, 160)], col)
|
||||
relleno(o, [(46, 120), (94, 120), (94, 134), (46, 134)], col)
|
||||
for x, y, l in ((52, 134, 12), (88, 134, 18), (66, 160, 10), (74, 160, 6)):
|
||||
chorreon(o, x, y, l, col)
|
||||
|
||||
def eslabon(o, cx, cy, ang, col, roto=False):
|
||||
# Un eslabón: óvalo a pulso; el roto se abre por un extremo.
|
||||
ca, sa, pts = math.cos(ang), math.sin(ang), []
|
||||
for k in range(29 if roto else 37):
|
||||
t = 2 * math.pi * (k / 36 + (.12 if roto else 0))
|
||||
x, y = 19 * math.cos(t), 11 * math.sin(t)
|
||||
pts.append((cx + x * ca - y * sa, cy + x * sa + y * ca))
|
||||
linea(o, pts, col, 7)
|
||||
def girar(pts, ang, ox, oy, dx, dy):
|
||||
ca, sa = math.cos(ang), math.sin(ang)
|
||||
return [(ox + (x - ox) * ca - (y - oy) * sa + dx, oy + (x - ox) * sa + (y - oy) * ca + dy) for x, y in pts]
|
||||
|
||||
def pueblos(o, col):
|
||||
# Una cadena rota: dos tramos enlazados que se abren en el centro, con chispas en el corte.
|
||||
eslabon(o, 20, 118, -.3, col)
|
||||
eslabon(o, 48, 108, -.3, col, roto=True)
|
||||
eslabon(o, 92, 108, .3 + math.pi, col, roto=True)
|
||||
eslabon(o, 120, 118, .3, col)
|
||||
for a in (-2.5, -2.0, -1.57, -1.14, -.64):
|
||||
linea(o, [(70 + 16 * math.cos(a), 96 + 16 * math.sin(a)), (70 + 36 * math.cos(a), 96 + 36 * math.sin(a))], col, 5)
|
||||
# Una bala rota: la punta salta hacia un lado y el casquillo se queda, con chispas en el corte.
|
||||
punta = [(70, 30), (76, 35), (81, 43), (84, 52), (85, 62), (85, 80), (78, 77), (72, 82), (64, 76), (55, 79), (55, 62), (56, 52), (59, 43), (64, 35)]
|
||||
grieta_a = [(85, 80), (78, 77), (72, 82), (64, 76), (55, 79)]
|
||||
casquillo = [(55, 90), (63, 86), (70, 92), (77, 86), (85, 90), (85, 128), (55, 128)]
|
||||
grieta_b = [(55, 90), (63, 86), (70, 92), (77, 86), (85, 90)]
|
||||
culote = [(52, 132), (88, 132), (88, 150), (52, 150)]
|
||||
giro_a = lambda pts: girar(pts, -.38, 70, 80, -4, 6)
|
||||
giro_b = lambda pts: girar(pts, .08, 70, 120, 6, 8)
|
||||
relleno(o, giro_a(punta), col)
|
||||
linea(o, giro_a(punta[10:] + punta[:6]), col, 3)
|
||||
linea(o, giro_a(grieta_a), col, 3.5)
|
||||
relleno(o, giro_b(casquillo), col)
|
||||
relleno(o, giro_b(culote), col)
|
||||
linea(o, giro_b([(55, 90), (55, 128), (52, 132), (52, 150), (88, 150), (88, 132), (85, 128), (85, 90)]), col, 3)
|
||||
linea(o, giro_b(grieta_b), col, 3.5)
|
||||
for a in (-.5, 0, .45):
|
||||
linea(o, [(96 + 6 * math.cos(a), 92 + 6 * math.sin(a)), (96 + 20 * math.cos(a), 92 + 20 * math.sin(a))], col, 4)
|
||||
for a in (2.7, 3.2):
|
||||
linea(o, [(46 + 6 * math.cos(a), 96 + 6 * math.sin(a)), (46 + 18 * math.cos(a), 96 + 18 * math.sin(a))], col, 4)
|
||||
for x, l in ((60, 12), (74, 18), (84, 8)):
|
||||
chorreon(o, x, 160, l, col)
|
||||
|
||||
os.makedirs(OUT, exist_ok=True)
|
||||
for n, (nombre, col) in enumerate(EJES.items()):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue