自行车骑鹈鹕
通常的命题是「鹈鹕骑自行车」。这一版把主谓宾颠倒了:自行车长腿、戴盔、握缰,鹈鹕成了坐骑。右侧控制台里的每一个旋钮都实时作用于画面。
图层解剖
整幅画由十一个顶层图组构成,全部是路径、圆与椭圆——没有位图、没有外部字体、没有任何网络请求。点开眼睛可以隐藏图层,「独奏」会把其余图层压到 12% 透明度。
谁在骑谁?
把命题倒过来之后,所有解剖学都得跟着倒过来。自行车需要一副髋关节(座管顶端)、一双膝关节(车架中轴附近)和两只手(车把末端)。它的手套握住缰绳,缰绳绕过鹈鹕上喙的鼻革铜环——所以「车头仰角」滑块一动,缰绳的贝塞尔控制点会立刻重算,两端始终咬合。
空转的曲柄。自行车的脚踩在鹈鹕的肩上,而不是自己的脚踏上。于是曲柄和两个轮组自由旋转——这幅画里唯一在做无用功的零件,正是它最卖力的部分。
鹈鹕的腿是真正的双骨反向运动学:髋部随躯干起伏,蹼足按站立相/摆动相交替贴地与前摆,膝关节由余弦定理解出。步幅、起伏、速度三个滑块直接改写这套解算的参数。
色谱与对比度
颜色取自主题本身:黄昏的霞光、码头的海绿、鹈鹕喙的琥珀、车架的朱红。下面每一格都是当前画面的实际色值,对比度按 WCAG 2.1 相对亮度实时计算——点一下即可复制色号。
徽章含义:P = 对纸色(背景)的对比度,I = 对墨色(描边)的对比度;≥4.5 记 AA,≥3.0 记 AA-Large。切换配色或拾色器时整张表会重新计算。
图注与规格
关于这张图版的制作方式、可验证的离线状态,以及键盘操作。
命题原本出自那个著名的绘图测试:「鹈鹕骑自行车」。这里把主语和宾语换了位置——自行车骑鹈鹕——于是画面必须重新回答一个问题:一辆自行车要怎么才能「骑」?
答案是给它一副身体。座管顶端成了髋,中轴附近成了膝,车把末端的握把成了戴手套的手。头盔扣在头管上方,护目镜下露出两点眼睛和一道笑弧;它微微后仰,像赶车人那样把缰绳收在手里。被骑的鹈鹕则完全不当回事:它照自己的节奏走,喉囊里还塞着一条鱼,尾巴露在外面。
绘制上采用胶印海报的语言:平涂色块、粗墨描边、网点阴影、纸面颗粒,以及故意错开的色版边缘。所有形状都是手写贝塞尔曲线,日轮的光芒、辐条、海浪与滩涂砂粒由脚本按当前参数生成几何——它们同样是真实路径,导出时一并带走。
导出即所见
导出按钮克隆当前 DOM 中的 SVG,把内部 CSS 变量解析成字面色值,再写入宽高与命名空间。因此导出的文件是一个独立、可双击打开的静态图,并且定格在你按下按钮那一帧的姿态:翅膀的角度、迈出去的哪只脚、喉囊张开的程度,全部保留。PNG 走同一条序列化路径,以 2× 分辨率栅格化。
声音
页面的声音全部由 Web Audio 现场合成,没有音频文件:低频噪声经滤波与慢速 LFO 成为海浪,画面里每只鸥掠过时触发一次鸣叫,打车铃时是一组带指数衰减的泛音。右上角的开关一次静音全部。浏览器要求首次交互后才能启动音频,因此第一次点击页面时声音才会真正响起。
正在统计资源请求…
- 画布
- 1200 × 800
- 顶层图组
- —
- 图元总数
- —
- 路径命令
- —
- 当前辐条
- —
- 序列化体积
- —
- 外部请求
- —
- 渲染帧率
- —
- 随机种子
- 1907
- 空格 暂停 / 继续运动
- R 随机一组参数
- S 导出 SVG
- P 导出 PNG
- C 复制 SVG 源码
- B 打车铃
- G 构造辅助线
- W 线框模式
- M 静音 / 恢复声音
- 1–4 切换四套配色