z1 = -tile_th/2 - protr / interlock_fine_slope;
z3 = -tile_th/2 + protr / interlock_fine_slope;
+ yprotr = negative ? -protr : protr;
+
INREFFRAME(left_cnr, right_cnr) {
for (vsect = [ // zs0 zs1 ys0, ys1
[ -tile_th-plusth, plusth, 0, 0],
- [ z1, z2, 0, protr],
- [ z2, z3, protr, 0],
+ [ z1, z2, 0, yprotr],
+ [ z2, z3, yprotr, 0],
]) {
zs0 = vsect[0];
zs1 = vsect[1];
zsd = zs1-zs0;
ys0 = vsect[2];
- ys1 = vsect[2];
+ ys1 = vsect[3];
ysd = ys1-ys0;
- m = [ [ 1,0,0,0 ],
- [ 0,1,0,0 ],
- [ 0,0,1,zs0 ],
- [ 0,0,0,1 ] ];
- echo(m);
+ sl = ysd/zsd;
+ m = [ [ 1,0, 0, 0 ],
+ [ 0,1, -sl, -ys0 ],
+ [ 0,0, 1, zs0 ],
+ [ 0,0, 0, 1 ] ];
multmatrix(m)
linear_extrude(height=zsd, convexity=10)
InterlockEdgePlan(negative, nlobes, length);