clearScreen ('black') center = { 'x': window.innerWidth / 2, 'y': window.innerHeight / 2 } class Mandala: def __init__(self, text, freq=1, dist=0, \ font_size=32, color='black', \ font='"Noto Mono", "Noto Emoji"', offset=0): self.text = text rad = 360/freq * (Math.PI/180) for i in range(freq): angle = i * rad - offset pos = { 'x': Math.cos(angle - Math.PI/2) * dist, 'y': Math.sin(angle - Math.PI/2) * dist } self.place(pos, angle, font_size, font, color) def place(self, pos, rad, font_size, font, color): el = document.createElement('span') el.innerHTML = self.text el.style['text-shadow'] = '0 0 10px white' el.style['color'] = color el.style['font-size'] = font_size + 'px' el.style['font-family'] = font el.style['position'] = 'absolute' el.style.transform = 'rotate(' + rad + 'rad)' document.body.appendChild(el) style = window.getComputedStyle(el) offset_x = int(style.width) / 2 offset_y = int(style.height) / 2 el.style.top = center.y + pos.y - offset_y + 'px' el.style.left = center.x + pos.x - offset_x + 'px' if __name__=='__main__': Mandala ('๐ŸŒบ', 20, 295, 90, 'pink') Mandala ('๐ŸŽ', 22, 220, 60, 'red') Mandala ('๐Ÿœ', 20, 160, 50, 'orange') Mandala ('๐ŸŒ', 10, 110, 30, 'green') Mandala ('Azรบcar', 6, 70, 18, 'yellow') Mandala ('Somos', 2, 20, 30, 'blue')