three-stdlib 2.10.2 → 2.10.3
Sign up to get free protection for your applications and to get access to all the features.
- package/curves/NURBSUtils.cjs.js +1 -1
- package/curves/NURBSUtils.js +11 -11
- package/exporters/STLExporter.cjs.js +1 -1
- package/exporters/STLExporter.js +1 -1
- package/index.cjs.js +1 -1
- package/package.json +1 -1
package/curves/NURBSUtils.cjs.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("three");
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("three");function e(t,e,o){const r=o.length-t-1;if(e>=o[r])return r-1;if(e<=o[t])return t;let l=t,n=r,c=Math.floor((l+n)/2);for(;e<o[c]||e>=o[c+1];)e<o[c]?n=c:l=c,c=Math.floor((l+n)/2);return c}function o(t,e,o,r){const l=[],n=[],c=[];l[0]=1;for(let s=1;s<=o;++s){n[s]=e-r[t+1-s],c[s]=r[t+s]-e;let o=0;for(let t=0;t<s;++t){const e=c[t+1],r=n[s-t],i=l[t]/(e+r);l[t]=o+e*i,o=r*i}l[s]=o}return l}function r(t,e,o,r,l){const n=[];for(let t=0;t<=o;++t)n[t]=0;const c=[];for(let t=0;t<=r;++t)c[t]=n.slice(0);const s=[];for(let t=0;t<=o;++t)s[t]=n.slice(0);s[0][0]=1;const i=n.slice(0),f=n.slice(0);for(let r=1;r<=o;++r){i[r]=e-l[t+1-r],f[r]=l[t+r]-e;let o=0;for(let t=0;t<r;++t){const e=f[t+1],l=i[r-t];s[r][t]=e+l;const n=s[t][r-1]/s[r][t];s[t][r]=o+e*n,o=l*n}s[r][r]=o}for(let t=0;t<=o;++t)c[0][t]=s[t][o];for(let t=0;t<=o;++t){let e=0,l=1;const i=[];for(let t=0;t<=o;++t)i[t]=n.slice(0);i[0][0]=1;for(let n=1;n<=r;++n){let r=0;const f=t-n,u=o-n;t>=n&&(i[l][0]=i[e][0]/s[u+1][f],r=i[l][0]*s[f][u]);const p=t-1<=u?n-1:o-t;for(let t=f>=-1?1:-f;t<=p;++t)i[l][t]=(i[e][t]-i[e][t-1])/s[u+1][f+t],r+=i[l][t]*s[f+t][u];t<=u&&(i[l][n]=-i[e][n-1]/s[u+1][t],r+=i[l][n]*s[t][u]),c[n][t]=r;var a=e;e=l,l=a}}var u=o;for(let t=1;t<=r;++t){for(let e=0;e<=o;++e)c[t][e]*=u;u*=o-t}return c}function l(o,l,n,c,s){const i=s<o?s:o,f=[],a=e(o,c,l),u=r(a,c,o,i,l),p=[];for(let t=0;t<n.length;++t){const e=(v=n[t].clone()).w;v.x*=e,v.y*=e,v.z*=e,p[t]=v}for(let t=0;t<=i;++t){var v=p[a-o].clone().multiplyScalar(u[t][0]);for(let e=1;e<=o;++e)v.add(p[a-o+e].clone().multiplyScalar(u[t][e]));f[t]=v}for(let e=i+1;e<=s+1;++e)f[e]=new t.Vector4(0,0,0);return f}function n(t,e){let o=1;for(let e=2;e<=t;++e)o*=e;let r=1;for(let t=2;t<=e;++t)r*=t;for(let o=2;o<=t-e;++o)r*=o;return o/r}function c(e){const o=e.length,r=[],l=[];for(let n=0;n<o;++n){const o=e[n];r[n]=new t.Vector3(o.x,o.y,o.z),l[n]=o.w}const c=[];for(let t=0;t<o;++t){const e=r[t].clone();for(let o=1;o<=t;++o)e.sub(c[t-o].clone().multiplyScalar(n(t,o)*l[o]));c[t]=e.divideScalar(l[0])}return c}exports.calcBSplineDerivatives=l,exports.calcBSplinePoint=function(r,l,n,c){const s=e(r,c,l),i=o(s,c,r,l),f=new t.Vector4(0,0,0,0);for(let t=0;t<=r;++t){const e=n[s-r+t],o=i[t],l=e.w*o;f.x+=e.x*l,f.y+=e.y*l,f.z+=e.z*l,f.w+=e.w*o}return f},exports.calcBasisFunctionDerivatives=r,exports.calcBasisFunctions=o,exports.calcKoverI=n,exports.calcNURBSDerivatives=function(t,e,o,r,n){return c(l(t,e,o,r,n))},exports.calcRationalCurveDerivatives=c,exports.calcSurfacePoint=function(r,l,n,c,s,i,f,a){const u=e(r,i,n),p=e(l,f,c),v=o(u,i,r,n),x=o(p,f,l,c),d=[];for(let e=0;e<=l;++e){d[e]=new t.Vector4(0,0,0,0);for(let t=0;t<=r;++t){const o=s[u-r+t][p-l+e].clone(),n=o.w;o.x*=n,o.y*=n,o.z*=n,d[e].add(o.multiplyScalar(v[t]))}}const w=new t.Vector4(0,0,0,0);for(let t=0;t<=l;++t)w.add(d[t].multiplyScalar(x[t]));w.divideScalar(w.w),a.set(w.x,w.y,w.z)},exports.findSpan=e;
|
package/curves/NURBSUtils.js
CHANGED
@@ -94,8 +94,8 @@ function calcBasisFunctions(span, u, p, U) {
|
|
94
94
|
*/
|
95
95
|
|
96
96
|
function calcBSplinePoint(p, U, P, u) {
|
97
|
-
const span =
|
98
|
-
const N =
|
97
|
+
const span = findSpan(p, u, U);
|
98
|
+
const N = calcBasisFunctions(span, u, p, U);
|
99
99
|
const C = new Vector4(0, 0, 0, 0);
|
100
100
|
|
101
101
|
for (let j = 0; j <= p; ++j) {
|
@@ -228,8 +228,8 @@ function calcBasisFunctionDerivatives(span, u, p, n, U) {
|
|
228
228
|
function calcBSplineDerivatives(p, U, P, u, nd) {
|
229
229
|
const du = nd < p ? nd : p;
|
230
230
|
const CK = [];
|
231
|
-
const span =
|
232
|
-
const nders =
|
231
|
+
const span = findSpan(p, u, U);
|
232
|
+
const nders = calcBasisFunctionDerivatives(span, u, p, du, U);
|
233
233
|
const Pw = [];
|
234
234
|
|
235
235
|
for (let i = 0; i < P.length; ++i) {
|
@@ -307,7 +307,7 @@ function calcRationalCurveDerivatives(Pders) {
|
|
307
307
|
const v = Aders[k].clone();
|
308
308
|
|
309
309
|
for (let i = 1; i <= k; ++i) {
|
310
|
-
v.sub(CK[k - i].clone().multiplyScalar(
|
310
|
+
v.sub(CK[k - i].clone().multiplyScalar(calcKoverI(k, i) * wders[i]));
|
311
311
|
}
|
312
312
|
|
313
313
|
CK[k] = v.divideScalar(wders[0]);
|
@@ -328,8 +328,8 @@ function calcRationalCurveDerivatives(Pders) {
|
|
328
328
|
*/
|
329
329
|
|
330
330
|
function calcNURBSDerivatives(p, U, P, u, nd) {
|
331
|
-
const Pders =
|
332
|
-
return
|
331
|
+
const Pders = calcBSplineDerivatives(p, U, P, u, nd);
|
332
|
+
return calcRationalCurveDerivatives(Pders);
|
333
333
|
}
|
334
334
|
/*
|
335
335
|
Calculate rational B-Spline surface point. See The NURBS Book, page 134, algorithm A4.3.
|
@@ -343,10 +343,10 @@ function calcNURBSDerivatives(p, U, P, u, nd) {
|
|
343
343
|
*/
|
344
344
|
|
345
345
|
function calcSurfacePoint(p, q, U, V, P, u, v, target) {
|
346
|
-
const uspan =
|
347
|
-
const vspan =
|
348
|
-
const Nu =
|
349
|
-
const Nv =
|
346
|
+
const uspan = findSpan(p, u, U);
|
347
|
+
const vspan = findSpan(q, v, V);
|
348
|
+
const Nu = calcBasisFunctions(uspan, u, p, U);
|
349
|
+
const Nv = calcBasisFunctions(vspan, v, q, V);
|
350
350
|
const temp = [];
|
351
351
|
|
352
352
|
for (let l = 0; l <= q; ++l) {
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("@babel/runtime/helpers/defineProperty"),e=require("three");function i(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var s=i(t);exports.STLExporter=class{constructor(){s.default(this,"binary",void 0),s.default(this,"output",void 0),s.default(this,"offset",void 0),s.default(this,"objects",void 0),s.default(this,"triangles",void 0),s.default(this,"vA",void 0),s.default(this,"vB",void 0),s.default(this,"vC",void 0),s.default(this,"cb",void 0),s.default(this,"ab",void 0),s.default(this,"normal",void 0),this.binary=!1,this.output="",this.offset=80,this.objects=[],this.triangles=0,this.vA=new e.Vector3,this.vB=new e.Vector3,this.vC=new e.Vector3,this.cb=new e.Vector3,this.ab=new e.Vector3,this.normal=new e.Vector3}parse(t,i){if(this.binary=void 0!==i.binary&&i.binary,t.traverse((
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("@babel/runtime/helpers/defineProperty"),e=require("three");function i(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var s=i(t);exports.STLExporter=class{constructor(){s.default(this,"binary",void 0),s.default(this,"output",void 0),s.default(this,"offset",void 0),s.default(this,"objects",void 0),s.default(this,"triangles",void 0),s.default(this,"vA",void 0),s.default(this,"vB",void 0),s.default(this,"vC",void 0),s.default(this,"cb",void 0),s.default(this,"ab",void 0),s.default(this,"normal",void 0),this.binary=!1,this.output="",this.offset=80,this.objects=[],this.triangles=0,this.vA=new e.Vector3,this.vB=new e.Vector3,this.vC=new e.Vector3,this.cb=new e.Vector3,this.ab=new e.Vector3,this.normal=new e.Vector3}parse(t,i){if(this.binary=void 0!==i.binary&&i.binary,t.traverse((t=>{if(t instanceof e.Mesh&&t.isMesh){const e=t.geometry;if(!e.isBufferGeometry)throw new Error("THREE.STLExporter: Geometry is not of type THREE.BufferGeometry.");const i=e.index,s=e.getAttribute("position");this.triangles+=null!==i?i.count/3:s.count/3,this.objects.push({object3d:t,geometry:e})}})),this.binary){const t=2*this.triangles+3*this.triangles*4*4+80+4,e=new ArrayBuffer(t);this.output=new DataView(e),this.output.setUint32(this.offset,this.triangles,!0),this.offset+=4}else this.output="",this.output+="solid exported\n";for(let t=0,i=this.objects.length;t<i;t++){const i=this.objects[t].object3d,s=this.objects[t].geometry,o=s.index,r=s.getAttribute("position");if(i instanceof e.SkinnedMesh)if(null!==o)for(let t=0;t<o.count;t+=3){const e=o.getX(t+0),s=o.getX(t+1),h=o.getX(t+2);this.writeFace(e,s,h,r,i)}else for(let t=0;t<r.count;t+=3){const e=t+0,s=t+1,o=t+2;this.writeFace(e,s,o,r,i)}}return this.binary||(this.output+="endsolid exported\n"),this.output}writeFace(t,e,i,s,o){this.vA.fromBufferAttribute(s,t),this.vB.fromBufferAttribute(s,e),this.vC.fromBufferAttribute(s,i),o.isSkinnedMesh&&(o.boneTransform(t,this.vA),o.boneTransform(e,this.vB),o.boneTransform(i,this.vC)),this.vA.applyMatrix4(o.matrixWorld),this.vB.applyMatrix4(o.matrixWorld),this.vC.applyMatrix4(o.matrixWorld),this.writeNormal(this.vA,this.vB,this.vC),this.writeVertex(this.vA),this.writeVertex(this.vB),this.writeVertex(this.vC),this.binary&&this.output instanceof DataView?(this.output.setUint16(this.offset,0,!0),this.offset+=2):(this.output+="\t\tendloop\n",this.output+="\tendfacet\n")}writeNormal(t,e,i){this.cb.subVectors(i,e),this.ab.subVectors(t,e),this.cb.cross(this.ab).normalize(),this.normal.copy(this.cb).normalize(),this.binary&&this.output instanceof DataView?(this.output.setFloat32(this.offset,this.normal.x,!0),this.offset+=4,this.output.setFloat32(this.offset,this.normal.y,!0),this.offset+=4,this.output.setFloat32(this.offset,this.normal.z,!0),this.offset+=4):(this.output+=`\tfacet normal ${this.normal.x} ${this.normal.y} ${this.normal.z}\n`,this.output+="\t\touter loop\n")}writeVertex(t){this.binary&&this.output instanceof DataView?(this.output.setFloat32(this.offset,t.x,!0),this.offset+=4,this.output.setFloat32(this.offset,t.y,!0),this.offset+=4,this.output.setFloat32(this.offset,t.z,!0),this.offset+=4):this.output+="\t\t\tvertex vertex.x vertex.y vertex.z\n"}};
|
package/exporters/STLExporter.js
CHANGED
@@ -52,7 +52,7 @@ class STLExporter {
|
|
52
52
|
parse(scene, options) {
|
53
53
|
this.binary = options.binary !== undefined ? options.binary : false; //
|
54
54
|
|
55
|
-
scene.traverse(
|
55
|
+
scene.traverse(object => {
|
56
56
|
if (object instanceof Mesh && object.isMesh) {
|
57
57
|
const geometry = object.geometry;
|
58
58
|
|