checkpoint belt emboss test
This commit is contained in:
parent
9cbcf0df21
commit
dbd0994569
1 changed files with 32 additions and 5 deletions
|
|
@ -629,22 +629,24 @@ FDM.slice = function(settings, widget, onupdate, ondone) {
|
||||||
let dy = Math.abs(height - maxY * (1 / Math.sqrt(2)));
|
let dy = Math.abs(height - maxY * (1 / Math.sqrt(2)));
|
||||||
let dz = Math.abs(length - ((lastZ - firstZ) * Math.sqrt(2)));
|
let dz = Math.abs(length - ((lastZ - firstZ) * Math.sqrt(2)));
|
||||||
if (dy < 0.1 && dz < 1) {
|
if (dy < 0.1 && dz < 1) {
|
||||||
console.log('FOUND', { firstI, lastI, minX, maxX, maxY });
|
// console.log('FOUND', { firstI, lastI, minX, maxX, maxY });
|
||||||
let span = lastI - firstI - 2; // x = down the belt
|
let span = lastI - firstI - 2; // x = down the belt
|
||||||
let tall = width * 2;
|
let tall = width * 2;
|
||||||
let can = new self.OffscreenCanvas(span, tall);
|
let can = new self.OffscreenCanvas(span, tall);
|
||||||
let ctx = can.getContext("2d");
|
let ctx = can.getContext("2d");
|
||||||
ctx.scale(0.6, 1);
|
ctx.scale(1.2, 1);
|
||||||
ctx.font = '24px sans-serif';
|
ctx.font = '24px sans-serif';
|
||||||
ctx.fillStyle = 'black';
|
// ctx.fillStyle = 'black';
|
||||||
ctx.textBaseline = "bottom";
|
ctx.textBaseline = "bottom";
|
||||||
ctx.fillText(text, 1, tall - 1);
|
ctx.fillText(text, 1, tall - 1);
|
||||||
let img = ctx.getImageData(0, 0, span, tall).data.buffer;
|
let img = ctx.getImageData(0, 0, span, tall).data.buffer;
|
||||||
let rgb = new Uint32Array(img);
|
let rgb = new Uint32Array(img);
|
||||||
console.log({ img, rgb, p: rgb.filter(v => v) });
|
// console.log({ img, rgb, p: rgb.filter(v => v) });
|
||||||
for (let x=0; x<span; x++) {
|
for (let x=0; x<span; x++) {
|
||||||
let str = '';
|
let str = '';
|
||||||
let maxp = 0;
|
let maxp = 0;
|
||||||
|
let lines = [];
|
||||||
|
let start, end;
|
||||||
for (let y=tall-1; y>=0; y--) {
|
for (let y=tall-1; y>=0; y--) {
|
||||||
let pix = rgb[y * span + x];
|
let pix = rgb[y * span + x];
|
||||||
pix = (
|
pix = (
|
||||||
|
|
@ -654,8 +656,33 @@ FDM.slice = function(settings, widget, onupdate, ondone) {
|
||||||
) / 3;
|
) / 3;
|
||||||
str += pix > 30 ? '*' : '-';
|
str += pix > 30 ? '*' : '-';
|
||||||
maxp = Math.max(maxp, pix);
|
maxp = Math.max(maxp, pix);
|
||||||
|
if (pix > 30) {
|
||||||
|
if (start >= 0) {
|
||||||
|
end = tall - y;
|
||||||
|
} else {
|
||||||
|
start = tall - y;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (start >= 0 && end > start) {
|
||||||
|
lines.push({ start, end });
|
||||||
|
}
|
||||||
|
start = end = undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log((x).toString().padStart(2,0),str,maxp | 0,lines);
|
||||||
|
if (lines.length) {
|
||||||
|
let slice = slices[firstI + x + 1];
|
||||||
|
let supps = slice.supports = slice.supports || [];
|
||||||
|
let z = slice.z;
|
||||||
|
let y = z - smin - (lineWidth / 2);
|
||||||
|
for (let line of lines) {
|
||||||
|
supps.push(base.newPolygon()
|
||||||
|
.add(minX + line.start / 2, y, z)
|
||||||
|
.add(minX + line.end / 2, y, z)
|
||||||
|
.setOpen()
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
console.log((x).toString().padStart(2,0),str,maxp | 0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue