#!/usr/bin/env python3
"""
AeThex Logo Generator - Generative Art
Creates multiple logo variations programmatically
"""
import random
import math
from pathlib import Path
# Brand colors
COLORS = {
'purple_light': '#A855F7',
'purple': '#8B5CF6',
'purple_dark': '#7C3AED',
'cyan': '#06B6D4',
'cyan_light': '#22D3EE',
'white': '#FFFFFF',
}
def create_svg_header(width=200, height=200):
"""Create SVG header with gradients"""
return f''''
# Logo Variation 1: Geometric Hexagon Network
def generate_hex_network():
svg = create_svg_header()
# Hexagon points
cx, cy = 100, 100
radius = 60
points = []
for i in range(6):
angle = math.pi / 3 * i - math.pi / 2
x = cx + radius * math.cos(angle)
y = cy + radius * math.sin(angle)
points.append(f"{x:.1f},{y:.1f}")
svg += f' \n'
# Inner nodes (cloud network)
nodes = [
(70, 85), (100, 75), (130, 85),
(80, 105), (120, 105),
(100, 115)
]
# Connection lines
connections = [(0, 1), (1, 2), (3, 4), (0, 3), (2, 4), (1, 5), (3, 5), (4, 5)]
for start, end in connections:
x1, y1 = nodes[start]
x2, y2 = nodes[end]
svg += f' \n'
# Draw nodes
for x, y in nodes:
svg += f' \n'
svg += create_svg_footer()
return svg
# Logo Variation 2: Abstract Letter A
def generate_letter_a(style='geometric'):
svg = create_svg_header()
if style == 'geometric':
# Modern geometric A
svg += ' \n'
svg += f' \n'
svg += f' \n'
svg += f' \n'
svg += f' \n'
svg += f' \n'
svg += f' \n'
svg += ' \n'
elif style == 'rounded':
# Rounded A with flow
svg += ' \n'
svg += f' \n'
svg += f' \n'
svg += f' \n'
svg += ' \n'
svg += create_svg_footer()
return svg
# Logo Variation 3: Particle Cloud
def generate_particle_cloud():
svg = create_svg_header()
# Create cloud of particles forming "A" shape
random.seed(42) # Consistent randomness
# Generate particles
for i in range(80):
# A-shape distribution
y = random.uniform(40, 160)
# Make it A-shaped: narrower at top, wider at bottom
top_width = 20
bottom_width = 80
width = top_width + (bottom_width - top_width) * (y - 40) / 120
# Left or right side of A
side = random.choice([-1, 1])
x_offset = random.uniform(0, width/2) * side
# Middle gap (crossbar area)
if 90 < y < 110:
if abs(x_offset) < 15:
continue # Skip middle to create A shape
x = 100 + x_offset
# Vary size
radius = random.uniform(1, 3)
# Color gradient based on position
if y < 100:
color = COLORS['purple_light']
else:
color = COLORS['cyan'] if random.random() > 0.5 else COLORS['purple']
opacity = random.uniform(0.4, 1.0)
svg += f' \n'
svg += create_svg_footer()
return svg
# Logo Variation 4: Minimalist Icon
def generate_minimal_icon():
svg = create_svg_header()
# Simple shapes only
svg += ' \n'
# Triangle (simplified A)
svg += f' \n'
# Connection bar
svg += f' \n'
# Small dots
svg += f' \n'
svg += f' \n'
svg += f' \n'
svg += ' \n'
svg += create_svg_footer()
return svg
# Logo Variation 5: Infinity Engine
def generate_infinity():
svg = create_svg_header()
# Infinity symbol with code/cloud elements
svg += ' \n'
svg += f' \n'
# Nodes at intersections
positions = [(-20, 0), (20, 0), (-40, 12), (40, 12), (-40, -12), (40, -12)]
for x, y in positions:
svg += f' \n'
svg += ' \n'
svg += create_svg_footer()
return svg
# Logo Variation 6: Code Brackets
def generate_code_brackets():
svg = create_svg_header()
svg += ' \n'
# Left bracket
svg += f' \n'
# Right bracket
svg += f' \n'
# Center element (cloud)
svg += f' \n'
svg += f' \n'
svg += f' \n'
svg += f' \n'
svg += ' \n'
svg += create_svg_footer()
return svg
# Logo Variation 7: Neural Network
def generate_neural_net():
svg = create_svg_header()
# Layer nodes
layer1 = [(50, 50), (50, 100), (50, 150)]
layer2 = [(100, 75), (100, 125)]
layer3 = [(150, 100)]
# Draw connections
svg += ' \n'
for n1 in layer1:
for n2 in layer2:
svg += f' \n'
for n2 in layer2:
for n3 in layer3:
svg += f' \n'
svg += ' \n'
# Draw nodes
for x, y in layer1:
svg += f' \n'
for x, y in layer2:
svg += f' \n'
for x, y in layer3:
svg += f' \n'
svg += create_svg_footer()
return svg
# Generate all variations
def main():
output_dir = Path('assets/generated-logos')
output_dir.mkdir(exist_ok=True)
variations = {
'hex-network.svg': generate_hex_network(),
'letter-a-geometric.svg': generate_letter_a('geometric'),
'letter-a-rounded.svg': generate_letter_a('rounded'),
'particle-cloud.svg': generate_particle_cloud(),
'minimal-icon.svg': generate_minimal_icon(),
'infinity-engine.svg': generate_infinity(),
'code-brackets.svg': generate_code_brackets(),
'neural-network.svg': generate_neural_net(),
}
for filename, svg_content in variations.items():
filepath = output_dir / filename
filepath.write_text(svg_content)
print(f"ā Generated: {filepath}")
print(f"\nā
Generated {len(variations)} logo variations in {output_dir}/")
print("\nOpen them in a browser to preview!")
if __name__ == '__main__':
main()