import math, sys NAR, AMA = "#f04e23", "#f2b705" def bordes(signo, t0, t1, n=24): izq, der = [], [] for k in range(n + 1): t = t0 + (t1 - t0) * k / n y = 18 + 79 * t a = 5 + 9 * t cx = 72 + signo * a * math.cos(2 * math.pi * t) w = 3 + 6 * t izq.append((cx - w, y)); der.append((cx + w, y)) return izq, der def linea(pts): return "M" + " L".join(f"{x:.1f},{y:.1f}" for x, y in pts) def cinta(signo, t0, t1): izq, der = bordes(signo, t0, t1) return linea(izq + der[::-1]) + " Z" def farola(ink="#111", fondo=None, nar=NAR, ama=AMA): bg = f'' if fondo else "" corte = fondo or "#fff" def pieza(col, signo, t0, t1, arriba): out = f'' if arriba: izq, der = bordes(signo, t0, t1) out += "".join(f'' for e in (izq, der)) return out luz = (pieza(ama, 1, 0, .5, False) + pieza(nar, -1, 0, .5, True) + pieza(nar, -1, .5, 1, False) + pieza(ama, 1, .5, 1, True)) poste = f'' cabeza = f'' return f'{bg}{luz}{poste}{cabeza}\n' if __name__ == "__main__": d = sys.argv[1] open(f"{d}/simbolo.svg", "w").write(farola()) open(f"{d}/simbolo-negativo.svg", "w").write(farola("#fff", "#111")) open(f"{d}/simbolo-naranja.svg", "w").write(farola("#111", NAR, nar="#fff"))