Reflection on "What do Prototypes Prototype?" by Stephanie Houde and Charles Hill
Dec 21, 2024
Reflection on "What do Prototypes Prototype?" by Stephanie Houde and Charles Hill
Dec 21, 2024
// Parametric curve + tangent
x = a * sin(t), y = (b/2) * sin(2t)
function infinityPoint(tau, a, b) {
const x = a * sin(tau);
const y = (b * 0.5) * sin(2 * tau);
const dx = a * cos(tau);
const dy = b * cos(2 * tau);
const ang = atan2(dy, dx); // tangent angle
return { x, y, ang };
}
We draw the track as a polyline (sampled points) and orient all glyphs by rotating to the tangent (rotate(p.ang)
).
behaviors = [
{ name:'SEASONS', slots:32, period: base * PI * FEEDING_CYCLE, hue:30, glyph:'chev' },
{ name:'STROKES', slots: 8, period: base * 1.414 * FIN_STROKES, hue:280, glyph:'bar' },
{ name:'BREATH', slots:12, period: base * 1.618 * SLOW_BREATH, hue:205, glyph:'mark' },
{ name:'BLINK', slots:12, period: base * 2.718, hue:150, glyph:'eye' }
];
Seasons = Turtle feeding cycles
Fin Strokes = Distance Measuring
Breath = Religious Timing/Calendar
Blink = Day/Night Cycle
const seasonHue = seasonalHue(seasonCyc); // amber → green → violet → cyan
stroke(seasonHue, …); drawInfinityPolyline(...);
Track Color
Season color slowly shifts via four stops using seasonalHue()
and wrap-aware lerpHue()
:
const seasonHue = seasonalHue(seasonCyc); // amber → green → violet → cyan
stroke(seasonHue, …); drawInfinityPolyline(...);
Track Color
Season color slowly shifts via four stops using seasonalHue()
and wrap-aware lerpHue()
:
Reflection on "What do Prototypes Prototype?" by Stephanie Houde and Charles Hill
Dec 21, 2024
Reflection on "What do Prototypes Prototype?" by Stephanie Houde and Charles Hill
Dec 21, 2024