GLSL 效果示例
Truchet 拼片:让随机旋转的弧线连成迷宫
更换种子改变路径,但相邻方块的弧线仍然接得上。
在线示例
修改右侧代码,左侧预览会实时更新。
观察什么
更换种子改变路径,但相邻方块的弧线仍然接得上。
实现原理
每个方块只选择两种弧线方向,端点始终落在边中点,所以随机转向后仍能接成路径。
找到控制效果的代码
vec2 q=p*6.,id=floor(q),f=fract(q);if(hash(id)>.5)f.x=1.-f.x;float d=min(abs(length(f)-.5),abs(length(f-1.)-.5));c=mix(c,vec3(.9,.7,.25),1.-smoothstep(.025,.045,d));
动手修改
把单元尺度 q=p*6. 改成 q=p*3.。四分之一圆弧通道会变大,端点仍在格子边缘中点相接。
调试与成本
每格计算两个圆距离,并用 hash(id)>.5 决定是否镜像 f.x。把 .5 提高到 1.,随机翻转就会关闭,显露规则重复的圆弧排列,不需要搜索邻居。