I wanted to create a tattoo combining three childhood magic universes that shaped both my own upbringing and my daughter’s: Harry Potter’s Deathly Hallows, Zelda’s Triforce, and Pokémon’s Poké Ball. My design is two-fold — I have always been drawn to geometry: triangles, inner and outer circles, symmetry and harmony. But I am also a nerd: look closely and you will find all three hidden in the shapes, along with the peace symbol and even Trivial Pursuit.

part1

I started with Harry Potter’s Deathly Hallows — three objects that together make the bearer the Master of Death:

  • The circle — the Resurrection Stone: a magical stone capable of summoning the spirits of deceased loved ones.
  • The triangle — the Cloak of Invisibility: a flawless cloak that perfectly conceals the wearer from all detection, even from Death itself, and never loses its power over time.
  • The vertical line — the Elder Wand: the most powerful and unbeatable wand ever created, passing to a new master whenever its current owner is defeated or disarmed.

part2

Adding Zelda’s Triforce: three lines connecting the midpoints of the triangle’s sides subdivide it into four smaller triangles. The three corner triangles form the Triforce, with the inverted center triangle as the negative space between them.

  • Triforce of Power — embodies the essence of Din. It grants immense physical strength, magical prowess, and near-invulnerability. Most famously held by the antagonist, Ganondorf.
  • Triforce of Wisdom — embodies the essence of Nayru. It grants deep understanding, ancient magic, and keen insight. Traditionally inherited by Princess Zelda.
  • Triforce of Courage — embodies the essence of Farore. It provides the bearer with the bravery and fortitude to overcome darkness and evil. Wielded by the hero, Link.

part3

Adding Pokémon’s Poké Ball: a small filled circle at the center of the inscribed circle. When a Poké Ball is thrown at a target, it opens and converts the Pokémon into energy to capture it. Despite their small, pocket-sized exterior, Poké Balls house a customized, comfortable habitat for the Pokémon living inside.

final

I almost stopped at part3, but something felt off: the Deathly Hallows and the Triforce each contributed 3 elements, while the altitudes had only 1. I also noticed the design only had 1 line of symmetry at that point — I wanted the full 6 that an equilateral triangle is capable of.

Adding the two remaining altitudes — one from each bottom vertex perpendicular to the opposite side. All three altitudes of an equilateral triangle meet at a single center point, which is also the center of the inscribed circle.

make.py

from PIL import Image, ImageDraw
import math

SCALE = 4
SIZE  = 180 * SCALE   # 720px high-res canvas
PAD   = 10            # padding so strokes don't clip
LW    = SCALE * 2     # 8px at 720 -> 2px after downscale

# Equilateral triangle, pointing up, centered in canvas
side  = SIZE - 2 * PAD
tri_h = side * math.sqrt(3) / 2
cx    = SIZE / 2
cy    = SIZE / 2

top_y    = cy - tri_h / 2
bottom_y = cy + tri_h / 2

apex = (cx, top_y)
bl   = (PAD, bottom_y)
br   = (SIZE - PAD, bottom_y)

# Inscribed circle: inradius = tri_h / 3, tangent to all three sides
inradius  = tri_h / 3
ic_center = (cx, bottom_y - inradius)

def new_img():
    img = Image.new('RGB', (SIZE, SIZE), 'white')
    return img, ImageDraw.Draw(img)

def save(img, name):
    img.save(name)
    img.resize((180, 180), Image.LANCZOS).save('thumb_' + name)

def draw_triangle(draw):
    draw.line([apex, bl, br, apex], fill='black', width=LW)

def draw_circle(draw):
    x0 = ic_center[0] - inradius
    y0 = ic_center[1] - inradius
    x1 = ic_center[0] + inradius
    y1 = ic_center[1] + inradius
    draw.ellipse([x0, y0, x1, y1], outline='black', width=LW)

def draw_vline(draw):
    draw.line([apex, (cx, bottom_y)], fill='black', width=LW)

# Triforce midpoints
mid_left  = ((cx + PAD) / 2,          (top_y + bottom_y) / 2)
mid_right = ((cx + SIZE - PAD) / 2,   (top_y + bottom_y) / 2)
mid_base  = (cx,                        bottom_y)

def draw_triforce(draw):
    draw.line([mid_left,  mid_right], fill='black', width=LW)
    draw.line([mid_left,  mid_base],  fill='black', width=LW)
    draw.line([mid_right, mid_base],  fill='black', width=LW)

# part1: triangle + inscribed circle + vertical line (Deathly Hallows)
img, draw = new_img()
draw_triangle(draw)
draw_circle(draw)
draw_vline(draw)
save(img, 'part1.png')

# part2: add Triforce subdivision
draw_triforce(draw)
save(img, 'part2.png')

# part3: add Poke Ball center dot
def draw_pokeball(draw):
    r = SCALE * 7
    x0 = ic_center[0] - r
    y0 = ic_center[1] - r
    x1 = ic_center[0] + r
    y1 = ic_center[1] + r
    draw.ellipse([x0, y0, x1, y1], fill='black')

draw_pokeball(draw)
save(img, 'part3.png')

# final: altitudes from bottom-left and bottom-right vertices
def draw_altitudes(draw):
    draw.line([bl, mid_right], fill='black', width=LW)
    draw.line([br, mid_left],  fill='black', width=LW)

draw_altitudes(draw)
save(img, 'final.png')
img.resize((180, 180), Image.LANCZOS).save('thumb.png')

print("Done")

The designs were created with Claude Code using Python / Pillow. These were the most significant prompts in chronological order:

  1. Create a 180×180 PNG using a 4× high-res canvas (720×720) scaled down with LANCZOS for anti-aliasing; draw an equilateral triangle pointing up, centered in the canvas, with an inscribed circle tangent to all three sides and a vertical line from the apex to the base midpoint — save as part1.png
  2. Add 3 lines connecting the midpoints of the triangle’s sides, subdividing it into 4 smaller triangles (Triforce pattern) — save as part2.png
  3. Add a small filled circle at the incircle center — save as part3.png
  4. Add the two remaining altitudes from the bottom-left and bottom-right vertices to the midpoints of their opposite sides; rename to final.png and also save thumbnail as thumb.png