SWCharacter Designer Polished Tool
The destination of the Stage 1 design series. Place a typographic character on the canvas, then use the right-panel controls to set symbol, font, size, fill, stroke, and launch any combination of the three animations. Spin speed is expressed in degrees/second for student accessibility; all other controls carry over from Stage 1c. Download a PNG of your design with the Save Image button.
Open the Designer →SWCharacter Mover 2 Polished Tool
Place a typographic character and watch it wander. Blend Random Walk and Perlin Noise movement with the Perlin Influence slider; control path smoothness with Perlin Speed and turning wildness with Walk Chaos (in degrees). Choose between fading Dots or a Connected Line trail, and pause the animation at any time. All three Stage 1 animations (Breathe, Spin, Cycle Hue) still run on top of the movement.
Open Mover 2 →Chaos Theory Polished Tool
Send a whole word scattering across the canvas — every letter spins and breathes with its own random rhythm. Blend Random Walk and Perlin Noise to shape the chaos, then press Assemble and watch each letter arc home. When the last one snaps into place, all letters equalize into a single synchronized breathing pulse.
Open Chaos Theory →Beale Cipher 3 Polished Tool
Each letter's cipher number is split into individual digit particles that rain into piles, then blast outward in a dense number cloud. Press Assemble to call them home — each letter materialises with a scale-pop burst as its digits snap into place. Key text: A Sound of Thunder by Ray Bradbury.
Open Beale Cipher 3 →Beale Cipher 4 Polished Tool
Fire-themed evolution of BC3: same digit pile & explosion engine, retuned with a blazing palette of reds, oranges, and yellows against a deep red-black canvas. Key text: We Didn’t Start the Fire by Billy Joel.
Open Beale Cipher 4 →Beale Cipher 5 Polished Tool
Patriotic finale: digit particles pulse in red, white, and blue against a deep navy canvas, using the authentic key text of the original Beale legend — the Declaration of Independence. Try encoding LIBERTY or WE THE PEOPLE.
Open Beale Cipher 5 →Beale Cipher Generalized v2
Choose your key text — A Sound of Thunder, We Didn't Start the Fire, or the Declaration of Independence — and watch the cipher animate in the matching colour theme. Dial in Perlin noise flow and animation speed to compare particle behaviours.
Open Generalized Cipher → ← v1 baseline (no noise/speed)Recursion Core CS Concept
A function that calls itself — what it is, why it’s powerful, and exactly how it drives the letter-reveal cascade in every Beale Cipher app. Includes the three rules, a call-stack trace, and hands-on practice challenges.
Open Recursion Tutorial →SWCharacter Class Reference Reference
Full API documentation for the SWCharacter class:
constructor options, all setter methods, how update(dt)
advances each animation, how draw(grid) converts
user coordinates to screen pixels, the breathe sine-wave formula,
and an honest critique of the SketchWaveJS class library design.
Includes a link to the SWCharacter Designer for hands-on exploration.
↓ The Development Path — see how the polished versions above were built, one idea at a time
Stage 1: One Character, One Click
The saga begins here. A single SWCharacter is placed on a
SWGrid when the user clicks the canvas.
A right-panel control panel exposes symbol, font, size, fill color,
stroke, and three independent animations —
Breathe, Spin, and Cycle Hue.
This is the full feature set; every later stage refines how those
controls are organized.
Stage 1a: Color Wells
A UX improvement over Stage 1: the individual H/S/B sliders are replaced with a browser color-well picker plus a single alpha/opacity slider for each color. This is a better mapping to how students think about color — "pick a hue from a palette, then adjust transparency" — and it keeps the panel compact. Default background becomes light gray.
Open Stage 1a →Stage 1b: UI Polish
Same features as Stage 1a. This stage asks a layout question: where should Clear and Save Image live? They move from a dedicated right-panel "Actions" card — which is removed entirely — to buttons below the canvas. Show row,col label moves into the Environment card. One design principle: controls that act on the canvas should live near the canvas.
Open Stage 1b →Stage 1c: Character Accordion
Introduces a Bootstrap accordion inside the Character card. Fill Color, Stroke / Border, and Placement Display collapse into independently expandable sections; Symbol, Font, and Size remain always visible. The panel is shorter on first glance and requires less scrolling to reach the Animation and Environment cards. Multiple sections can be open at once.
Open Stage 1c →Stage 1d: Full-Panel Accordion
Takes accordion one level further: the three top-level cards (Character, Animations, Environment) are themselves collapsed into a single outer accordion. Character starts open; Animations starts collapsed and disabled until a character is placed; Environment starts collapsed. The inner accordion from Stage 1c is preserved inside Character and Animations. Two-level nesting — same data, different hierarchy.
Open Stage 1d →Stage 2: Character Movement
The character wanders the canvas using its SWBug.
Choose between Random Walk and
Perlin Noise steering, adjust speed, and
pick Bounce or Wrap boundary behavior.
The three in-place animations (Breathe, Spin, Hue) still run
on top of the movement — showing that SWCharacter
and SWBug are fully independent layers.
Stage 2a: Angular Velocity Model
A refactoring of Stage 2: the “target-angle lerp” movement model is replaced by an angular velocity model. The ledge-skimming and open-field jitter caused by Perlin noise sampling a wide angle range are eliminated. All controls (Perlin strength, speed, bounce/wrap, trail) are unchanged — only the bug steering logic changes. Same behavior, cleaner physics.
Open Stage 2a →Stage 3: Word Display
Scales from one character to a full word. A word (default: CHAOS) is centered on the grid, each letter in a random color. Press Start and every letter launches on its own independent trajectory with randomized speed, spin rate, and breathing rate. Stop freezes all letters in place; Reset snaps them back to their home positions.
Open Stage 3 →Stage 3a: Refined Word Animation
Polishes Stage 3 for visual quality. The grid hides by default; letters always wrap (bounce removed); movement switches to pure random walk (Perlin removed from angle update). Most importantly: breathing slows to long depth cycles (5–12 s) that produce a foreground/background illusion — letters appear to drift toward and away from the viewer. A letter color picker and a randomize switch are also added.
Open Stage 3a →Stage 4: Bug Trails
Adds polyline trails to every letter's bug. A Show bug trails checkbox reveals each letter's recent path as a fading colored polyline; a Trail length slider (10–200 positions) controls how far back the trail extends. This makes the per-letter motion visible as geometry, turning the canvas into a visual record of where every character has been. All Stage 3a features are retained.
Open Stage 4 →Stage 5: Assemble
Adds an Assemble button. While letters are moving, clicking Assemble causes each letter to steer itself home on a smooth arc using its bug's assemble-steer behavior. Once all letters arrive at their home positions, they breathe in unison — a collective animation that only emerges when the whole word is together. All Stage 4 features are retained.
Open Stage 5 →Stage 5a: Drift Fix
Fixes a subtle bug from Stage 5: assembled letters
drift slowly because SWBug.update() keeps
integrating small residual velocity even after arrival.
The fix is one line per letter: once all letters are home,
their positions are frozen — the bug
position is no longer updated.
Only SWCharacter.update() (breathing) continues.
Same visual effect, no drift.