MCPcopy Create free account
hub / github.com/CNCKitchen/stlTexturizer / pushEdge

Function pushEdge

js/decimation.js:593–624  ·  view source on GitHub ↗
(heap, quadrics, positions, version, v1, v2)

Source from the content-addressed store, hash-verified

591 q[o+7] += c*c; q[o+8] += c*d;
592 q[o+9] += d*d;
593}
594
595function mergeQuadric(q, v1, v2) {
596 const o1 = v1 * 10, o2 = v2 * 10;
597 for (let i = 0; i < 10; i++) q[o1 + i] += q[o2 + i];
598}
599
600function evalQ(q, v, x, y, z) {
601 const o = v * 10;
602 return q[o] * x*x + 2*q[o+1]*x*y + 2*q[o+2]*x*z + 2*q[o+3]*x
603 + q[o+4] * y*y + 2*q[o+5]*y*z + 2*q[o+6]*y
604 + q[o+7] * z*z + 2*q[o+8]*z
605 + q[o+9];
606}
607
608function evalQSum(q, v1, v2, x, y, z) {
609 return evalQ(q, v1, x, y, z) + evalQ(q, v2, x, y, z);
610}
611
612const _s = new Float64Array(3);
613
614function solveQ(q, v1, v2) {
615 const o1 = v1 * 10, o2 = v2 * 10;
616 const a00 = q[o1] + q[o2];
617 const a01 = q[o1+1] + q[o2+1];
618 const a02 = q[o1+2] + q[o2+2];
619 const a11 = q[o1+4] + q[o2+4];
620 const a12 = q[o1+5] + q[o2+5];
621 const a22 = q[o1+7] + q[o2+7];
622 const b0 = -(q[o1+3] + q[o2+3]);
623 const b1 = -(q[o1+6] + q[o2+6]);
624 const b2 = -(q[o1+8] + q[o2+8]);
625
626 const det = a00*(a11*a22 - a12*a12) - a01*(a01*a22 - a12*a02) + a02*(a01*a12 - a11*a02);
627 const maxEl = Math.max(Math.abs(a00), Math.abs(a01), Math.abs(a02), Math.abs(a11), Math.abs(a12), Math.abs(a22));

Callers 1

decimateFunction · 0.85

Calls 3

solveQFunction · 0.85
evalQSumFunction · 0.85
pushMethod · 0.80

Tested by

no test coverage detected