@jscad/core 2.6.9 → 2.6.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/dist/jscad-core.min.js +154 -151
- package/package.json +5 -5
package/dist/jscad-core.min.js
CHANGED
|
@@ -26,7 +26,7 @@ var cachedSetTimeout,cachedClearTimeout,process=module.exports={};function defau
|
|
|
26
26
|
},{}],8:[function(require,module,exports){
|
|
27
27
|
module.exports={
|
|
28
28
|
"name": "@jscad/core",
|
|
29
|
-
"version": "2.6.
|
|
29
|
+
"version": "2.6.10",
|
|
30
30
|
"description": "Core functionality for JSCAD Applications",
|
|
31
31
|
"homepage": "https://openjscad.xyz/",
|
|
32
32
|
"repository": "https://github.com/jscad/OpenJSCAD.org",
|
|
@@ -62,9 +62,9 @@ module.exports={
|
|
|
62
62
|
"license": "MIT",
|
|
63
63
|
"dependencies": {
|
|
64
64
|
"@jscad/array-utils": "2.1.4",
|
|
65
|
-
"@jscad/io": "2.4.
|
|
66
|
-
"@jscad/io-utils": "2.0.
|
|
67
|
-
"@jscad/modeling": "2.12.
|
|
65
|
+
"@jscad/io": "2.4.9",
|
|
66
|
+
"@jscad/io-utils": "2.0.28",
|
|
67
|
+
"@jscad/modeling": "2.12.3",
|
|
68
68
|
"json5": "2.2.3",
|
|
69
69
|
"strip-bom": "4.0.0"
|
|
70
70
|
},
|
|
@@ -88,13 +88,13 @@ module.exports={rebuildGeometry:require("./rebuildGeometry"),rebuildGeometryCli:
|
|
|
88
88
|
},{"./rebuildGeometry":11,"./rebuildGeometryCli":12,"./rebuildGeometryWorker":13,"./serializeSolids":14}],10:[function(require,module,exports){
|
|
89
89
|
const isGeom2=require("@jscad/modeling").geometries.geom2.isA,isGeom3=require("@jscad/modeling").geometries.geom3.isA,isPath2=require("@jscad/modeling").geometries.path2.isA,{flatten:flatten,toArray:toArray}=require("@jscad/array-utils"),serializeSolids=require("./serializeSolids"),isResultGeometry=e=>!!(Array.isArray(e)&&e.length>0)&&e.reduce((e,i)=>e||isGeom3(i)||isGeom2(i)||isPath2(i),!1),instanciateDesign=(e,i,r)=>{const{serialize:s}=r;let t;const o=flatten(toArray(e.main(i)));if(isResultGeometry(o))return{solids:t=s?serializeSolids(o):o};throw new Error("bad output from script: expected geom3/geom2/path2 objects")};module.exports=instanciateDesign;
|
|
90
90
|
|
|
91
|
-
},{"./serializeSolids":14,"@jscad/array-utils":
|
|
91
|
+
},{"./serializeSolids":14,"@jscad/array-utils":532,"@jscad/modeling":216}],11:[function(require,module,exports){
|
|
92
92
|
const loadDesign=require("../code-loading/loadDesign"),instanciateDesign=require("./instanciateDesign"),applyParameterDefinitions=require("../parameters/applyParameterDefinitions"),rebuildSolids=(e,a)=>{let{mainPath:i,apiMainPath:n,serialize:s,lookup:o,lookupCounts:r,parameterValues:l}=Object.assign({},{mainPath:"",apiMainPath:"@jscad/modeling",serialize:!1,lookup:null,lookupCounts:null,parameterValues:{}},e);try{const t=e.filesAndFolders,u=loadDesign(i,n,t,l);a(null,{type:"params",parameterDefaults:u.parameterValues,parameterDefinitions:u.parameterDefinitions}),l=applyParameterDefinitions(l,u.parameterDefinitions),l=Object.assign({},u.parameterValues,l);const m={lookup:o,lookupCounts:r,serialize:s},p=instanciateDesign(u.rootModule,l,m);a(null,{type:"solids",solids:p.solids,lookup:p.lookup,lookupCounts:p.lookupCounts})}catch(e){a({type:"errors",name:e.name?e.name:"Error",message:e.message?e.message:e.toString(),description:e.description?e.description:"",number:e.number?e.number:"",fileName:e.fileName?e.fileName:"",lineNumber:e.lineNumber?e.lineNumber:"",columnNumber:e.columnNumber?e.columnNumber:"",stack:e.stack?e.stack:""},null)}};module.exports=rebuildSolids;
|
|
93
93
|
|
|
94
94
|
},{"../code-loading/loadDesign":16,"../parameters/applyParameterDefinitions":27,"./instanciateDesign":10}],12:[function(require,module,exports){
|
|
95
95
|
const path=require("path"),{toArray:toArray}=require("@jscad/array-utils"),requireDesignFromModule=require("../code-loading/requireDesignFromModule"),getAllParameterDefintionsAndValues=require("../parameters/getParameterDefinitionsAndValues"),makeWebRequire=require("../code-loading/webRequire"),rebuildSolids=e=>{let{apiMainPath:r,mainPath:a,parameterValues:i,useFakeFs:t}=Object.assign({},{apiMainPath:"@jscad/modeling"},e),s=require;if(t){const i=path.parse(a),t=`${i.name}.js`,u=`/${i.name}.js`,n=[{ext:"js",fullPath:u,name:t,source:e.source}];s=makeWebRequire(n,{apiMainPath:r}),a=u}const u=requireDesignFromModule(a,s),n=getAllParameterDefintionsAndValues(u,i);return toArray(u.main(n.parameterValues))};module.exports=rebuildSolids;
|
|
96
96
|
|
|
97
|
-
},{"../code-loading/requireDesignFromModule":19,"../code-loading/webRequire":23,"../parameters/getParameterDefinitionsAndValues":28,"@jscad/array-utils":
|
|
97
|
+
},{"../code-loading/requireDesignFromModule":19,"../code-loading/webRequire":23,"../parameters/getParameterDefinitionsAndValues":28,"@jscad/array-utils":532,"path":4}],13:[function(require,module,exports){
|
|
98
98
|
const rebuildGeometryWorker=e=>{const o=require("./rebuildGeometry");e.onmessage=function(t){if(t.data instanceof Object){const{data:r}=t;"generate"===r.cmd&&o(r,(o,t)=>{t&&e.postMessage(t),o&&e.postMessage(o)})}}};module.exports=rebuildGeometryWorker;
|
|
99
99
|
|
|
100
100
|
},{"./rebuildGeometry":11}],14:[function(require,module,exports){
|
|
@@ -118,7 +118,7 @@ const validateDesignModule=require("./validateDesignModule"),normalizeDesignModu
|
|
|
118
118
|
},{"./normalizeDesignModule":18,"./validateDesignModule":22}],20:[function(require,module,exports){
|
|
119
119
|
const path=require("path"),{toArray:toArray}=require("@jscad/array-utils"),splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^/]+?|)(\.[^./]*|))(?:[/]*)$/,splitPath=e=>splitPathRe.exec(e).slice(1),parsePath=e=>{assertPath(e);const t=splitPath(e);if(!t||4!==t.length)throw new TypeError("Invalid path '"+e+"'");return t[1]=t[1]||"",t[2]=t[2]||"",t[3]=t[3]||"",{root:t[0],dir:t[0]+t[1].slice(0,t[1].length-1),base:t[2],ext:t[3],name:t[2].slice(0,t[2].length-t[3].length)}},assertPath=e=>{if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+e)},getDesignEntryPoint=(e,t)=>{if(!t)return;const a=toArray(t)[0];let r;const n=e.statSync(a);if(n.isFile())return a;if(n.isDirectory()){const t=path.join(a,"package.json");if(e.existsSync(t)){const r=JSON.parse(e.readFileSync(t)).main;if(r)return path.join(a,r)}const n=e.readdirSync(a),i=["main","index",parsePath(path.basename(a)).name],s=i.map(e=>e+".js"),o=i.map(e=>e+".jscad"),c=n.filter(e=>s.concat(o).includes(e));return c.length>0&&(r=path.join(a,c[0])),r}return a},packageNameFromDir=(e,t,a)=>{const r=path.join(t,"package.json");if(e.existsSync(r)){const t=JSON.parse(e.readFileSync(r)).name;if(t)return t}return a?parsePath(path.basename(a)).name:path.basename(t)},getDesignName=(e,t)=>{if(!t)return"undefined";const a=toArray(t)[0],r=e.statSync(a);if(r.isFile()){const t=path.dirname(a);return packageNameFromDir(e,t,a)}return r.isDirectory()?packageNameFromDir(e,a):void 0};module.exports={getDesignEntryPoint:getDesignEntryPoint,getDesignName:getDesignName};
|
|
120
120
|
|
|
121
|
-
},{"@jscad/array-utils":
|
|
121
|
+
},{"@jscad/array-utils":532,"path":4}],21:[function(require,module,exports){
|
|
122
122
|
const{deserializers:deserializers}=require("@jscad/io"),modulifyTransform=(e,r)=>Object.assign({},r,{source:r.source}),createJscadEntry=(e,r)=>{const s=e.name.substring(0,e.name.lastIndexOf(".")+1)+"jscad",t="/"+s;return Object.assign({},e,{ext:"jscad",name:s,fullPath:t,source:r})},transformSources=(e,r)=>{if(r&&r.length>1)return r;const s={js:[modulifyTransform],jscad:[modulifyTransform]};return r&&(r=r.map(r=>(r=>{if(r.source&&r.ext){const t=Object.assign({},e,{filename:r.name,output:"script"});if(r.ext in deserializers){const e=(0,deserializers[r.ext])(t,r.source);return createJscadEntry(r,e)}if(r.ext in s)return s[r.ext].reduce((e,r)=>r(t,e),r)}return r})(r))),r};module.exports=transformSources;
|
|
123
123
|
|
|
124
124
|
},{"@jscad/io":74}],22:[function(require,module,exports){
|
|
@@ -127,7 +127,7 @@ const validateDesignModule=n=>{if(!n)throw new Error("undefined root module pass
|
|
|
127
127
|
},{}],23:[function(require,module,exports){
|
|
128
128
|
const path=require("path"),posix=path.posix?path.posix:path,getFileExtensionFromString=require("../utils/getFileExtensionFromString"),{combineParameterDefinitions:combineParameterDefinitions,getParameterDefinitionsFromSource:getParameterDefinitionsFromSource}=require("../parameters/getParameterDefinitionsFromSource"),findMatch=(e,t)=>{for(let r=0;r<t.length;r++){const n=t[r];if(e===n.fullPath||"/"+e===n.fullPath)return n;if(n.children){const t=findMatch(e,n.children);if(void 0!==t)return t}}},registerJsExtension=(e,t)=>{const r=require("strip-bom");t.extensions[".js"]=((t,n)=>{const i=e.readFileSync(n,"utf8");t._compile(r(i),n)})},registerJsonExtension=(e,t)=>{t.extensions[".json"]=((t,r)=>{const n=e.readFileSync(r,"utf8");t.exports=JSON.parse(n)})},makeWebRequire=(e,t)=>{const r={apiMainPath:"@jscad/modeling",fakeFs:require("./makeFakeFs")(e)},{apiMainPath:n,fakeFs:i}=Object.assign({},r,t),s="@jscad/modeling"===n?require("@jscad/modeling"):require(n),o={"@jscad/io":{exports:require("@jscad/io")},"@jscad/array-utils":{exports:require("@jscad/array-utils")},"@jscad/modeling":{exports:s},fs:{exports:i}},a={},l={},u=(t,r)=>{const n=o[r];if(n)return n.exports;t&&!r.startsWith("/")||(t="/");const i=t=>{let r=getFileExtensionFromString(t);r||(r="js",t+=".js"),r="."+r;const n=findMatch(t,e);if(!n)return null;if(n.children)return null;if(a[r]){if(l[t])return l[t];const e={exports:{},_compile:(t,r)=>{try{new Function("require","module",t)(u.bind(null,n.fullPath),e)}catch(e){const t=e.message;r=r.replace("/","");const n=e.lineNumber?e.lineNumber-2:0,i=e.columnNumber?e.columnNumber:0;throw e.stack.startsWith("Object")?e.stack=`${e.stack}\nObject.<anonymous> (${r}:${n}:${i})`:((e=new SyntaxError(t,r,n)).columnNumber=i,e.stack=`Object.<anonymous> (${r}:${n}:${i})`),e}const i=t.includes("@jscad-params")?getParameterDefinitionsFromSource(t,r):[],s=e.exports.getParameterDefinitions;e.exports.getParameterDefinitions=(()=>combineParameterDefinitions(i,s&&s()||[]))}};return a[r](e,n.fullPath),l[t]=e.exports,l[t]}return null},s=t=>{if(!findMatch(t,e))return null;"/"===t&&(t="");let r=t+"/index.js",n=i(r);return n||((n=i(r=t+"/index.json"))||null)},c=t=>{let r,n=findMatch(t,e);if(!n)return null;if(!n.children)return null;if(n=findMatch(t+"/package.json",e)){const e=JSON.parse(n.source).main;if(e){const n=posix.normalize(t+"/"+e);return(r=i(n))?r:(r=s(n))||null}}return(r=s(t))||null};if(r.startsWith("./")||r.startsWith("/")||r.startsWith("../")){r=posix.normalize(posix.dirname(t)+posix.sep+r);let e=i(r);if(e)return e;if(e=c(r))return e;throw new Error(`Cannot find relative path to module ${r}`)}const m=((e,t)=>{const r=(e=>{const t=e.split("/"),r=[];for(let e=t.length-1;e>0;e--){if("node_modules"===t[e])continue;const n=posix.sep+posix.join(...t.slice(1,e+1),"node_modules");r.push(n)}return r})(t);for(let t=0;t<r.length;t++){const n=r[t],s=posix.join(n,e);let o=i(s);if(o)return o;if(o=c(s))return o}return null})(r,posix.dirname(t));if(m)return m;throw new Error(`Cannot find module ${r}`)},c=u.bind(null,"/");return c.extensions=a,c.resolve=(()=>{}),registerJsExtension(i,c),registerJsonExtension(i,c),c};module.exports=makeWebRequire;
|
|
129
129
|
|
|
130
|
-
},{"../parameters/getParameterDefinitionsFromSource":29,"../utils/getFileExtensionFromString":33,"./makeFakeFs":17,"@jscad/array-utils":
|
|
130
|
+
},{"../parameters/getParameterDefinitionsFromSource":29,"../utils/getFileExtensionFromString":33,"./makeFakeFs":17,"@jscad/array-utils":532,"@jscad/io":74,"@jscad/modeling":216,"path":4,"strip-bom":7}],24:[function(require,module,exports){
|
|
131
131
|
module.exports={evaluation:require("./code-evaluation"),io:require("./io"),loading:require("./code-loading"),parameters:require("./parameters"),utils:require("./utils"),web:require("./web")};
|
|
132
132
|
|
|
133
133
|
},{"./code-evaluation":9,"./code-loading":15,"./io":25,"./parameters":32,"./utils":34,"./web":36}],25:[function(require,module,exports){
|
|
@@ -169,7 +169,7 @@ module.exports={walkFileTree:require("./walkFileTree")};
|
|
|
169
169
|
},{"./walkFileTree":37}],37:[function(require,module,exports){
|
|
170
170
|
const{flatten:flatten}=require("@jscad/array-utils"),{formats:formats}=require("@jscad/io/formats"),getFileExtensionFromString=require("../utils/getFileExtensionFromString"),binaryMimetypes={bmp:"image/bmp",gif:"image/gif",jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",tif:"image/tiff",tiff:"image/tiff",otc:"font/otf",otf:"font/otf",ttc:"font/ttf",ttf:"font/ttf",woff:"font/woff",woff2:"font/woff",stl:"application/sla"},readFileAsync=(e,t)=>{const r=e.fullPath?e.fullPath:t.fullPath?t.fullPath:"",i=getFileExtensionFromString(e.name),n=e.mimetype;return new Promise((t,s)=>{const o=new FileReader;o.onload=(s=>{const o=s.target.result;o.byteLength?t({name:e.name,ext:i,fullPath:r,mimetype:n,source:o}):"string"==typeof o&&t({name:e.name,ext:i,fullPath:r,mimetype:n,source:o})}),o.onerror=(e=>{s(new Error(`Failed to load file: ${r} [${o.error}]`))}),binaryMimetypes[i]?o.readAsArrayBuffer(e):o.readAsText(e)})},isSupportedFormat=e=>{const t=getFileExtensionFromString(e.name),r=formats[t]?formats[t].mimetype:binaryMimetypes[t];return e.mimetype=e.type&&e.type.length?e.type:r,e.mimetype&&e.mimetype.length},pseudoArraytoArray=e=>{const t=[];for(let r=0;r<e.length;r++){const i=e[r];i&&t.push(i.webkitGetAsEntry?i.webkitGetAsEntry():i)}return t},isEmpty=e=>null!=e,processEntries=e=>{const t=pseudoArraytoArray(e.filter(isEmpty)).filter(isEmpty).reduce((e,t)=>{if(t.name.startsWith("."))return e;if(t.isFile)e.push(processFile(t));else if(t.isDirectory)e.push(processDirectory(t));else if(t instanceof File){const r=t.webkitRelativePath?t.webkitRelativePath:void 0,i=isSupportedFormat(t)?readFileAsync(t,{fullPath:r}):void 0;if(!i)throw new Error("Unsuported format (or folder in Safari)!");e.push(i)}return e},[]);return Promise.all(t).then(e=>e.filter(e=>null!=e))},processFile=e=>{return new Promise((t,r)=>{e.file(r=>{isSupportedFormat(r)?t(readFileAsync(r,e)):t(void 0)},t=>{const i=`${t.message} (${t.code})`;r(new Error(`Failed to load file: ${e.fullPath} [${i}]`))})})},processDirectory=e=>{return new Promise((t,r)=>{if(e.entries)e.entries.length?processEntries(e.entries).then(t):t([]);else{e.createReader().readEntries(e=>{e.length?processEntries(e).then(t):t([])},r)}}).then(flatten).then(t=>({children:t=t.map(t=>(t.fullPath.startsWith("/")||(t.fullPath=e.fullPath+"/"+t.name),t)),fullPath:e.fullPath,name:e.name}))},transformFileList=e=>{const t=require("path");if(1===e.length){const r=e[0],i=r.webkitRelativePath?r.webkitRelativePath:r.name;if(i.split(t.sep).length<2){const e=t.sep,n={fullPath:e,name:e,isDirectory:!0,entries:[]};return r.fullPath=t.normalize(e+i),n.entries.push(r),[n]}}let r;const i=new Map,n=(e,n)=>{if(!i.has(e)){const s={fullPath:e,name:n,isDirectory:!0,entries:[]};r||(r=s),i.set(e,s);const o=e.split(t.sep);if(o.length>1){const e=t.sep+t.join(...o.slice(0,-1)),r=i.get(e);r&&r.entries.push(s)}}};for(let r=0;r<e.length;r++){const s=e[r],o=(s.webkitRelativePath?s.webkitRelativePath:s.name).split(t.sep);if(o.reduce((e,t)=>e||t.startsWith("."),!1))continue;if(!isSupportedFormat(s))continue;const l=o.slice(0,-1);for(let e=0;e<l.length;e++){n(t.sep+t.join(...l.slice(0,e+1)),l[e])}const a=t.sep+t.join(...l),f=i.get(a);f&&f.entries.push(s)}return i.clear(),[r]},walkFileTree=e=>{let t=e;return e.length&&e[0]instanceof File&&(t=transformFileList(e)),processEntries(t)};module.exports=walkFileTree;
|
|
171
171
|
|
|
172
|
-
},{"../utils/getFileExtensionFromString":33,"@jscad/array-utils":
|
|
172
|
+
},{"../utils/getFileExtensionFromString":33,"@jscad/array-utils":532,"@jscad/io/formats":73,"path":4}],38:[function(require,module,exports){
|
|
173
173
|
"use strict";var node_worker_1=require("./node-worker.cjs"),u8=Uint8Array,u16=Uint16Array,u32=Uint32Array,fleb=new u8([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),fdeb=new u8([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),clim=new u8([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),freb=function(t,n){for(var e=new u16(31),r=0;r<31;++r)e[r]=n+=1<<t[r-1];var i=new u32(e[30]);for(r=1;r<30;++r)for(var s=e[r];s<e[r+1];++s)i[s]=s-e[r]<<5|r;return[e,i]},_a=freb(fleb,2),fl=_a[0],revfl=_a[1];fl[28]=258,revfl[258]=28;for(var _b=freb(fdeb,0),fd=_b[0],revfd=_b[1],rev=new u16(32768),i=0;i<32768;++i){var x=(43690&i)>>>1|(21845&i)<<1;x=(61680&(x=(52428&x)>>>2|(13107&x)<<2))>>>4|(3855&x)<<4,rev[i]=((65280&x)>>>8|(255&x)<<8)>>>1}var hMap=function(t,n,e){for(var r=t.length,i=0,s=new u16(n);i<r;++i)t[i]&&++s[t[i]-1];var o,a=new u16(n);for(i=0;i<n;++i)a[i]=a[i-1]+s[i-1]<<1;if(e){o=new u16(1<<n);var f=15-n;for(i=0;i<r;++i)if(t[i])for(var u=i<<4|t[i],l=n-t[i],c=a[t[i]-1]++<<l,h=c|(1<<l)-1;c<=h;++c)o[rev[c]>>>f]=u}else for(o=new u16(r),i=0;i<r;++i)t[i]&&(o[i]=rev[a[t[i]-1]++]>>>15-t[i]);return o},flt=new u8(288);for(i=0;i<144;++i)flt[i]=8;for(i=144;i<256;++i)flt[i]=9;for(i=256;i<280;++i)flt[i]=7;for(i=280;i<288;++i)flt[i]=8;var fdt=new u8(32);for(i=0;i<32;++i)fdt[i]=5;var flm=hMap(flt,9,0),flrm=hMap(flt,9,1),fdm=hMap(fdt,5,0),fdrm=hMap(fdt,5,1),max=function(t){for(var n=t[0],e=1;e<t.length;++e)t[e]>n&&(n=t[e]);return n},bits=function(t,n,e){var r=n/8|0;return(t[r]|t[r+1]<<8)>>(7&n)&e},bits16=function(t,n){var e=n/8|0;return(t[e]|t[e+1]<<8|t[e+2]<<16)>>(7&n)},shft=function(t){return(t+7)/8|0},slc=function(t,n,e){(null==n||n<0)&&(n=0),(null==e||e>t.length)&&(e=t.length);var r=new(2==t.BYTES_PER_ELEMENT?u16:4==t.BYTES_PER_ELEMENT?u32:u8)(e-n);return r.set(t.subarray(n,e)),r};exports.FlateErrorCode={UnexpectedEOF:0,InvalidBlockType:1,InvalidLengthLiteral:2,InvalidDistance:3,StreamFinished:4,NoStreamHandler:5,InvalidHeader:6,NoCallback:7,InvalidUTF8:8,ExtraFieldTooLong:9,InvalidDate:10,FilenameTooLong:11,StreamFinishing:12,InvalidZipData:13,UnknownCompressionMethod:14};var ec=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],err=function(t,n,e){var r=new Error(n||ec[t]);if(r.code=t,Error.captureStackTrace&&Error.captureStackTrace(r,err),!e)throw r;return r},inflt=function(t,n,e){var r=t.length;if(!r||e&&e.f&&!e.l)return n||new u8(0);var i=!n||e,s=!e||e.i;e||(e={}),n||(n=new u8(3*r));var o=function(t){var e=n.length;if(t>e){var r=new u8(Math.max(2*e,t));r.set(n),n=r}},a=e.f||0,f=e.p||0,u=e.b||0,l=e.l,c=e.d,h=e.m,p=e.n,v=8*r;do{if(!l){a=bits(t,f,1);var d=bits(t,f+1,3);if(f+=3,!d){var b=t[(A=shft(f)+4)-4]|t[A-3]<<8,y=A+b;if(y>r){s&&err(0);break}i&&o(u+b),n.set(t.subarray(A,y),u),e.b=u+=b,e.p=f=8*y,e.f=a;continue}if(1==d)l=flrm,c=fdrm,h=9,p=5;else if(2==d){var g=bits(t,f,31)+257,m=bits(t,f+10,15)+4,z=g+bits(t,f+5,31)+1;f+=14;for(var w=new u8(z),x=new u8(19),S=0;S<m;++S)x[clim[S]]=bits(t,f+3*S,7);f+=3*m;var U=max(x),D=(1<<U)-1,T=hMap(x,U,1);for(S=0;S<z;){var A,k=T[bits(t,f,D)];if(f+=15&k,(A=k>>>4)<16)w[S++]=A;else{var I=0,M=0;for(16==A?(M=3+bits(t,f,3),f+=2,I=w[S-1]):17==A?(M=3+bits(t,f,7),f+=3):18==A&&(M=11+bits(t,f,127),f+=7);M--;)w[S++]=I}}var Z=w.subarray(0,g),C=w.subarray(g);h=max(Z),p=max(C),l=hMap(Z,h,1),c=hMap(C,p,1)}else err(1);if(f>v){s&&err(0);break}}i&&o(u+131072);for(var G=(1<<h)-1,E=(1<<p)-1,F=f;;F=f){var _=(I=l[bits16(t,f)&G])>>>4;if((f+=15&I)>v){s&&err(0);break}if(I||err(2),_<256)n[u++]=_;else{if(256==_){F=f,l=null;break}var P=_-254;if(_>264){var O=fleb[S=_-257];P=bits(t,f,(1<<O)-1)+fl[S],f+=O}var L=c[bits16(t,f)&E],N=L>>>4;L||err(3),f+=15&L;C=fd[N];if(N>3){O=fdeb[N];C+=bits16(t,f)&(1<<O)-1,f+=O}if(f>v){s&&err(0);break}i&&o(u+131072);for(var q=u+P;u<q;u+=4)n[u]=n[u-C],n[u+1]=n[u+1-C],n[u+2]=n[u+2-C],n[u+3]=n[u+3-C];u=q}}e.l=l,e.p=F,e.b=u,e.f=a,l&&(a=1,e.m=h,e.d=c,e.n=p)}while(!a);return u==n.length?n:slc(n,0,u)},wbits=function(t,n,e){e<<=7&n;var r=n/8|0;t[r]|=e,t[r+1]|=e>>>8},wbits16=function(t,n,e){e<<=7&n;var r=n/8|0;t[r]|=e,t[r+1]|=e>>>8,t[r+2]|=e>>>16},hTree=function(t,n){for(var e=[],r=0;r<t.length;++r)t[r]&&e.push({s:r,f:t[r]});var i=e.length,s=e.slice();if(!i)return[et,0];if(1==i){var o=new u8(e[0].s+1);return o[e[0].s]=1,[o,1]}e.sort(function(t,n){return t.f-n.f}),e.push({s:-1,f:25001});var a=e[0],f=e[1],u=0,l=1,c=2;for(e[0]={s:-1,f:a.f+f.f,l:a,r:f};l!=i-1;)a=e[e[u].f<e[c].f?u++:c++],f=e[u!=l&&e[u].f<e[c].f?u++:c++],e[l++]={s:-1,f:a.f+f.f,l:a,r:f};var h=s[0].s;for(r=1;r<i;++r)s[r].s>h&&(h=s[r].s);var p=new u16(h+1),v=ln(e[l-1],p,0);if(v>n){r=0;var d=0,b=v-n,y=1<<b;for(s.sort(function(t,n){return p[n.s]-p[t.s]||t.f-n.f});r<i;++r){var g=s[r].s;if(!(p[g]>n))break;d+=y-(1<<v-p[g]),p[g]=n}for(d>>>=b;d>0;){var m=s[r].s;p[m]<n?d-=1<<n-p[m]++-1:++r}for(;r>=0&&d;--r){var z=s[r].s;p[z]==n&&(--p[z],++d)}v=n}return[new u8(p),v]},ln=function(t,n,e){return-1==t.s?Math.max(ln(t.l,n,e+1),ln(t.r,n,e+1)):n[t.s]=e},lc=function(t){for(var n=t.length;n&&!t[--n];);for(var e=new u16(++n),r=0,i=t[0],s=1,o=function(t){e[r++]=t},a=1;a<=n;++a)if(t[a]==i&&a!=n)++s;else{if(!i&&s>2){for(;s>138;s-=138)o(32754);s>2&&(o(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(o(i),--s;s>6;s-=6)o(8304);s>2&&(o(s-3<<5|8208),s=0)}for(;s--;)o(i);s=1,i=t[a]}return[e.subarray(0,r),n]},clen=function(t,n){for(var e=0,r=0;r<n.length;++r)e+=t[r]*n[r];return e},wfblk=function(t,n,e){var r=e.length,i=shft(n+2);t[i]=255&r,t[i+1]=r>>>8,t[i+2]=255^t[i],t[i+3]=255^t[i+1];for(var s=0;s<r;++s)t[i+s+4]=e[s];return 8*(i+4+r)},wblk=function(t,n,e,r,i,s,o,a,f,u,l){wbits(n,l++,e),++i[256];for(var c=hTree(i,15),h=c[0],p=c[1],v=hTree(s,15),d=v[0],b=v[1],y=lc(h),g=y[0],m=y[1],z=lc(d),w=z[0],x=z[1],S=new u16(19),U=0;U<g.length;++U)S[31&g[U]]++;for(U=0;U<w.length;++U)S[31&w[U]]++;for(var D=hTree(S,7),T=D[0],A=D[1],k=19;k>4&&!T[clim[k-1]];--k);var I,M,Z,C,G=u+5<<3,E=clen(i,flt)+clen(s,fdt)+o,F=clen(i,h)+clen(s,d)+o+14+3*k+clen(S,T)+(2*S[16]+3*S[17]+7*S[18]);if(G<=E&&G<=F)return wfblk(n,l,t.subarray(f,f+u));if(wbits(n,l,1+(F<E)),l+=2,F<E){I=hMap(h,p,0),M=h,Z=hMap(d,b,0),C=d;var _=hMap(T,A,0);wbits(n,l,m-257),wbits(n,l+5,x-1),wbits(n,l+10,k-4),l+=14;for(U=0;U<k;++U)wbits(n,l+3*U,T[clim[U]]);l+=3*k;for(var P=[g,w],O=0;O<2;++O){var L=P[O];for(U=0;U<L.length;++U){var N=31&L[U];wbits(n,l,_[N]),l+=T[N],N>15&&(wbits(n,l,L[U]>>>5&127),l+=L[U]>>>12)}}}else I=flm,M=flt,Z=fdm,C=fdt;for(U=0;U<a;++U)if(r[U]>255){N=r[U]>>>18&31;wbits16(n,l,I[N+257]),l+=M[N+257],N>7&&(wbits(n,l,r[U]>>>23&31),l+=fleb[N]);var q=31&r[U];wbits16(n,l,Z[q]),l+=C[q],q>3&&(wbits16(n,l,r[U]>>>5&8191),l+=fdeb[q])}else wbits16(n,l,I[r[U]]),l+=M[r[U]];return wbits16(n,l,I[256]),l+M[256]},deo=new u32([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),et=new u8(0),dflt=function(t,n,e,r,i,s){var o=t.length,a=new u8(r+o+5*(1+Math.ceil(o/7e3))+i),f=a.subarray(r,a.length-i),u=0;if(!n||o<8)for(var l=0;l<=o;l+=65535){var c=l+65535;c>=o&&(f[u>>3]=s),u=wfblk(f,u+1,t.subarray(l,c))}else{for(var h=deo[n-1],p=h>>>13,v=8191&h,d=(1<<e)-1,b=new u16(32768),y=new u16(d+1),g=Math.ceil(e/3),m=2*g,z=function(n){return(t[n]^t[n+1]<<g^t[n+2]<<m)&d},w=new u32(25e3),x=new u16(288),S=new u16(32),U=0,D=0,T=(l=0,0),A=0,k=0;l<o;++l){var I=z(l),M=32767&l,Z=y[I];if(b[M]=Z,y[I]=M,A<=l){var C=o-l;if((U>7e3||T>24576)&&C>423){u=wblk(t,f,0,w,x,S,D,T,k,l-k,u),T=U=D=0,k=l;for(var G=0;G<286;++G)x[G]=0;for(G=0;G<30;++G)S[G]=0}var E=2,F=0,_=v,P=M-Z&32767;if(C>2&&I==z(l-P))for(var O=Math.min(p,C)-1,L=Math.min(32767,l),N=Math.min(258,C);P<=L&&--_&&M!=Z;){if(t[l+E]==t[l+E-P]){for(var q=0;q<N&&t[l+q]==t[l+q-P];++q);if(q>E){if(E=q,F=P,q>O)break;var B=Math.min(P,q-2),H=0;for(G=0;G<B;++G){var Y=l-P+G+32768&32767,j=Y-b[Y]+32768&32767;j>H&&(H=j,Z=Y)}}}P+=(M=Z)-(Z=b[M])+32768&32767}if(F){w[T++]=268435456|revfl[E]<<18|revfd[F];var R=31&revfl[E],J=31&revfd[F];D+=fleb[R]+fdeb[J],++x[257+R],++S[J],A=l+E,++U}else w[T++]=t[l],++x[t[l]]}}u=wblk(t,f,s,w,x,S,D,T,k,l-k,u),!s&&7&u&&(u=wfblk(f,u+1,et))}return slc(a,0,r+shft(u)+i)},crct=function(){for(var t=new Int32Array(256),n=0;n<256;++n){for(var e=n,r=9;--r;)e=(1&e&&-306674912)^e>>>1;t[n]=e}return t}(),crc=function(){var t=-1;return{p:function(n){for(var e=t,r=0;r<n.length;++r)e=crct[255&e^n[r]]^e>>>8;t=e},d:function(){return~t}}},adler=function(){var t=1,n=0;return{p:function(e){for(var r=t,i=n,s=0|e.length,o=0;o!=s;){for(var a=Math.min(o+2655,s);o<a;++o)i+=r+=e[o];r=(65535&r)+15*(r>>16),i=(65535&i)+15*(i>>16)}t=r,n=i},d:function(){return(255&(t%=65521))<<24|t>>>8<<16|(255&(n%=65521))<<8|n>>>8}}},dopt=function(t,n,e,r,i){return dflt(t,null==n.level?6:n.level,null==n.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(t.length)))):12+n.mem,e,r,!i)},mrg=function(t,n){var e={};for(var r in t)e[r]=t[r];for(var r in n)e[r]=n[r];return e},wcln=function(t,n,e){for(var r=t(),i=t.toString(),s=i.slice(i.indexOf("[")+1,i.lastIndexOf("]")).replace(/\s+/g,"").split(","),o=0;o<r.length;++o){var a=r[o],f=s[o];if("function"==typeof a){n+=";"+f+"=";var u=a.toString();if(a.prototype)if(-1!=u.indexOf("[native code]")){var l=u.indexOf(" ",8)+1;n+=u.slice(l,u.indexOf("(",l))}else for(var c in n+=u,a.prototype)n+=";"+f+".prototype."+c+"="+a.prototype[c].toString();else n+=u}else e[f]=a}return[n,e]},ch=[],cbfs=function(t){var n=[];for(var e in t)t[e].buffer&&n.push((t[e]=new t[e].constructor(t[e])).buffer);return n},wrkr=function(t,n,e,r){var i;if(!ch[e]){for(var s="",o={},a=t.length-1,f=0;f<a;++f)s=(i=wcln(t[f],s,o))[0],o=i[1];ch[e]=wcln(t[a],s,o)}var u=mrg({},ch[e][1]);return node_worker_1.default(ch[e][0]+";onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage="+n.toString()+"}",e,u,cbfs(u),r)},bInflt=function(){return[u8,u16,u32,fleb,fdeb,clim,fl,fd,flrm,fdrm,rev,ec,hMap,max,bits,bits16,shft,slc,err,inflt,inflateSync,pbf,gu8]},bDflt=function(){return[u8,u16,u32,fleb,fdeb,clim,revfl,revfd,flm,flt,fdm,fdt,rev,deo,et,hMap,wbits,wbits16,hTree,ln,lc,clen,wfblk,wblk,shft,slc,dflt,dopt,deflateSync,pbf]},gze=function(){return[gzh,gzhl,wbytes,crc,crct]},guze=function(){return[gzs,gzl]},zle=function(){return[zlh,wbytes,adler]},zule=function(){return[zlv]},pbf=function(t){return postMessage(t,[t.buffer])},gu8=function(t){return t&&t.size&&new u8(t.size)},cbify=function(t,n,e,r,i,s){var o=wrkr(e,r,i,function(t,n){o.terminate(),s(t,n)});return o.postMessage([t,n],n.consume?[t.buffer]:[]),function(){o.terminate()}},astrm=function(t){return t.ondata=function(t,n){return postMessage([t,n],[t.buffer])},function(n){return t.push(n.data[0],n.data[1])}},astrmify=function(t,n,e,r,i){var s,o=wrkr(t,r,i,function(t,e){t?(o.terminate(),n.ondata.call(n,t)):(e[1]&&o.terminate(),n.ondata.call(n,t,e[0],e[1]))});o.postMessage(e),n.push=function(t,e){n.ondata||err(5),s&&n.ondata(err(4,0,1),null,!!e),o.postMessage([t,s=e],[t.buffer])},n.terminate=function(){o.terminate()}},b2=function(t,n){return t[n]|t[n+1]<<8},b4=function(t,n){return(t[n]|t[n+1]<<8|t[n+2]<<16|t[n+3]<<24)>>>0},b8=function(t,n){return b4(t,n)+4294967296*b4(t,n+4)},wbytes=function(t,n,e){for(;e;++n)t[n]=e,e>>>=8},gzh=function(t,n){var e=n.filename;if(t[0]=31,t[1]=139,t[2]=8,t[8]=n.level<2?4:9==n.level?2:0,t[9]=3,0!=n.mtime&&wbytes(t,4,Math.floor(new Date(n.mtime||Date.now())/1e3)),e){t[3]=8;for(var r=0;r<=e.length;++r)t[r+10]=e.charCodeAt(r)}},gzs=function(t){31==t[0]&&139==t[1]&&8==t[2]||err(6,"invalid gzip data");var n=t[3],e=10;4&n&&(e+=t[10]|2+(t[11]<<8));for(var r=(n>>3&1)+(n>>4&1);r>0;r-=!t[e++]);return e+(2&n)},gzl=function(t){var n=t.length;return(t[n-4]|t[n-3]<<8|t[n-2]<<16|t[n-1]<<24)>>>0},gzhl=function(t){return 10+(t.filename&&t.filename.length+1||0)},zlh=function(t,n){var e=n.level,r=0==e?0:e<6?1:9==e?3:2;t[0]=120,t[1]=r<<6|(r?32-2*r:1)},zlv=function(t){(8!=(15&t[0])||t[0]>>>4>7||(t[0]<<8|t[1])%31)&&err(6,"invalid zlib data"),32&t[1]&&err(6,"invalid zlib data: preset dictionaries not supported")};function AsyncCmpStrm(t,n){return n||"function"!=typeof t||(n=t,t={}),this.ondata=n,t}var Deflate=function(){function t(t,n){n||"function"!=typeof t||(n=t,t={}),this.ondata=n,this.o=t||{}}return t.prototype.p=function(t,n){this.ondata(dopt(t,this.o,0,0,!n),n)},t.prototype.push=function(t,n){this.ondata||err(5),this.d&&err(4),this.d=n,this.p(t,n||!1)},t}();exports.Deflate=Deflate;var AsyncDeflate=function(){return function(t,n){astrmify([bDflt,function(){return[astrm,Deflate]}],this,AsyncCmpStrm.call(this,t,n),function(t){var n=new Deflate(t.data);onmessage=astrm(n)},6)}}();function deflate(t,n,e){return e||(e=n,n={}),"function"!=typeof e&&err(7),cbify(t,n,[bDflt],function(t){return pbf(deflateSync(t.data[0],t.data[1]))},0,e)}function deflateSync(t,n){return dopt(t,n||{},0,0)}exports.AsyncDeflate=AsyncDeflate,exports.deflate=deflate,exports.deflateSync=deflateSync;var Inflate=function(){function t(t){this.s={},this.p=new u8(0),this.ondata=t}return t.prototype.e=function(t){this.ondata||err(5),this.d&&err(4);var n=this.p.length,e=new u8(n+t.length);e.set(this.p),e.set(t,n),this.p=e},t.prototype.c=function(t){this.d=this.s.i=t||!1;var n=this.s.b,e=inflt(this.p,this.o,this.s);this.ondata(slc(e,n,this.s.b),this.d),this.o=slc(e,this.s.b-32768),this.s.b=this.o.length,this.p=slc(this.p,this.s.p/8|0),this.s.p&=7},t.prototype.push=function(t,n){this.e(t),this.c(n)},t}();exports.Inflate=Inflate;var AsyncInflate=function(){return function(t){this.ondata=t,astrmify([bInflt,function(){return[astrm,Inflate]}],this,0,function(){var t=new Inflate;onmessage=astrm(t)},7)}}();function inflate(t,n,e){return e||(e=n,n={}),"function"!=typeof e&&err(7),cbify(t,n,[bInflt],function(t){return pbf(inflateSync(t.data[0],gu8(t.data[1])))},1,e)}function inflateSync(t,n){return inflt(t,n)}exports.AsyncInflate=AsyncInflate,exports.inflate=inflate,exports.inflateSync=inflateSync;var Gzip=function(){function t(t,n){this.c=crc(),this.l=0,this.v=1,Deflate.call(this,t,n)}return t.prototype.push=function(t,n){Deflate.prototype.push.call(this,t,n)},t.prototype.p=function(t,n){this.c.p(t),this.l+=t.length;var e=dopt(t,this.o,this.v&&gzhl(this.o),n&&8,!n);this.v&&(gzh(e,this.o),this.v=0),n&&(wbytes(e,e.length-8,this.c.d()),wbytes(e,e.length-4,this.l)),this.ondata(e,n)},t}();exports.Gzip=Gzip,exports.Compress=Gzip;var AsyncGzip=function(){return function(t,n){astrmify([bDflt,gze,function(){return[astrm,Deflate,Gzip]}],this,AsyncCmpStrm.call(this,t,n),function(t){var n=new Gzip(t.data);onmessage=astrm(n)},8)}}();function gzip(t,n,e){return e||(e=n,n={}),"function"!=typeof e&&err(7),cbify(t,n,[bDflt,gze,function(){return[gzipSync]}],function(t){return pbf(gzipSync(t.data[0],t.data[1]))},2,e)}function gzipSync(t,n){n||(n={});var e=crc(),r=t.length;e.p(t);var i=dopt(t,n,gzhl(n),8),s=i.length;return gzh(i,n),wbytes(i,s-8,e.d()),wbytes(i,s-4,r),i}exports.AsyncGzip=AsyncGzip,exports.AsyncCompress=AsyncGzip,exports.gzip=gzip,exports.compress=gzip,exports.gzipSync=gzipSync,exports.compressSync=gzipSync;var Gunzip=function(){function t(t){this.v=1,Inflate.call(this,t)}return t.prototype.push=function(t,n){if(Inflate.prototype.e.call(this,t),this.v){var e=this.p.length>3?gzs(this.p):4;if(e>=this.p.length&&!n)return;this.p=this.p.subarray(e),this.v=0}n&&(this.p.length<8&&err(6,"invalid gzip data"),this.p=this.p.subarray(0,-8)),Inflate.prototype.c.call(this,n)},t}();exports.Gunzip=Gunzip;var AsyncGunzip=function(){return function(t){this.ondata=t,astrmify([bInflt,guze,function(){return[astrm,Inflate,Gunzip]}],this,0,function(){var t=new Gunzip;onmessage=astrm(t)},9)}}();function gunzip(t,n,e){return e||(e=n,n={}),"function"!=typeof e&&err(7),cbify(t,n,[bInflt,guze,function(){return[gunzipSync]}],function(t){return pbf(gunzipSync(t.data[0]))},3,e)}function gunzipSync(t,n){return inflt(t.subarray(gzs(t),-8),n||new u8(gzl(t)))}exports.AsyncGunzip=AsyncGunzip,exports.gunzip=gunzip,exports.gunzipSync=gunzipSync;var Zlib=function(){function t(t,n){this.c=adler(),this.v=1,Deflate.call(this,t,n)}return t.prototype.push=function(t,n){Deflate.prototype.push.call(this,t,n)},t.prototype.p=function(t,n){this.c.p(t);var e=dopt(t,this.o,this.v&&2,n&&4,!n);this.v&&(zlh(e,this.o),this.v=0),n&&wbytes(e,e.length-4,this.c.d()),this.ondata(e,n)},t}();exports.Zlib=Zlib;var AsyncZlib=function(){return function(t,n){astrmify([bDflt,zle,function(){return[astrm,Deflate,Zlib]}],this,AsyncCmpStrm.call(this,t,n),function(t){var n=new Zlib(t.data);onmessage=astrm(n)},10)}}();function zlib(t,n,e){return e||(e=n,n={}),"function"!=typeof e&&err(7),cbify(t,n,[bDflt,zle,function(){return[zlibSync]}],function(t){return pbf(zlibSync(t.data[0],t.data[1]))},4,e)}function zlibSync(t,n){n||(n={});var e=adler();e.p(t);var r=dopt(t,n,2,4);return zlh(r,n),wbytes(r,r.length-4,e.d()),r}exports.AsyncZlib=AsyncZlib,exports.zlib=zlib,exports.zlibSync=zlibSync;var Unzlib=function(){function t(t){this.v=1,Inflate.call(this,t)}return t.prototype.push=function(t,n){if(Inflate.prototype.e.call(this,t),this.v){if(this.p.length<2&&!n)return;this.p=this.p.subarray(2),this.v=0}n&&(this.p.length<4&&err(6,"invalid zlib data"),this.p=this.p.subarray(0,-4)),Inflate.prototype.c.call(this,n)},t}();exports.Unzlib=Unzlib;var AsyncUnzlib=function(){return function(t){this.ondata=t,astrmify([bInflt,zule,function(){return[astrm,Inflate,Unzlib]}],this,0,function(){var t=new Unzlib;onmessage=astrm(t)},11)}}();function unzlib(t,n,e){return e||(e=n,n={}),"function"!=typeof e&&err(7),cbify(t,n,[bInflt,zule,function(){return[unzlibSync]}],function(t){return pbf(unzlibSync(t.data[0],gu8(t.data[1])))},5,e)}function unzlibSync(t,n){return inflt((zlv(t),t.subarray(2,-4)),n)}exports.AsyncUnzlib=AsyncUnzlib,exports.unzlib=unzlib,exports.unzlibSync=unzlibSync;var Decompress=function(){function t(t){this.G=Gunzip,this.I=Inflate,this.Z=Unzlib,this.ondata=t}return t.prototype.push=function(t,n){if(this.ondata||err(5),this.s)this.s.push(t,n);else{if(this.p&&this.p.length){var e=new u8(this.p.length+t.length);e.set(this.p),e.set(t,this.p.length)}else this.p=t;if(this.p.length>2){var r=this,i=function(){r.ondata.apply(r,arguments)};this.s=31==this.p[0]&&139==this.p[1]&&8==this.p[2]?new this.G(i):8!=(15&this.p[0])||this.p[0]>>4>7||(this.p[0]<<8|this.p[1])%31?new this.I(i):new this.Z(i),this.s.push(this.p,n),this.p=null}}},t}();exports.Decompress=Decompress;var AsyncDecompress=function(){function t(t){this.G=AsyncGunzip,this.I=AsyncInflate,this.Z=AsyncUnzlib,this.ondata=t}return t.prototype.push=function(t,n){Decompress.prototype.push.call(this,t,n)},t}();function decompress(t,n,e){return e||(e=n,n={}),"function"!=typeof e&&err(7),31==t[0]&&139==t[1]&&8==t[2]?gunzip(t,n,e):8!=(15&t[0])||t[0]>>4>7||(t[0]<<8|t[1])%31?inflate(t,n,e):unzlib(t,n,e)}function decompressSync(t,n){return 31==t[0]&&139==t[1]&&8==t[2]?gunzipSync(t,n):8!=(15&t[0])||t[0]>>4>7||(t[0]<<8|t[1])%31?inflateSync(t,n):unzlibSync(t,n)}exports.AsyncDecompress=AsyncDecompress,exports.decompress=decompress,exports.decompressSync=decompressSync;var fltn=function(t,n,e,r){for(var i in t){var s=t[i],o=n+i,a=r;Array.isArray(s)&&(a=mrg(r,s[1]),s=s[0]),s instanceof u8?e[o]=[s,a]:(e[o+="/"]=[new u8(0),a],fltn(s,o,e,r))}},te="undefined"!=typeof TextEncoder&&new TextEncoder,td="undefined"!=typeof TextDecoder&&new TextDecoder,tds=0;try{td.decode(et,{stream:!0}),tds=1}catch(t){}var dutf8=function(t){for(var n="",e=0;;){var r=t[e++],i=(r>127)+(r>223)+(r>239);if(e+i>t.length)return[n,slc(t,e-1)];i?3==i?(r=((15&r)<<18|(63&t[e++])<<12|(63&t[e++])<<6|63&t[e++])-65536,n+=String.fromCharCode(55296|r>>10,56320|1023&r)):n+=1&i?String.fromCharCode((31&r)<<6|63&t[e++]):String.fromCharCode((15&r)<<12|(63&t[e++])<<6|63&t[e++]):n+=String.fromCharCode(r)}},DecodeUTF8=function(){function t(t){this.ondata=t,tds?this.t=new TextDecoder:this.p=et}return t.prototype.push=function(t,n){if(this.ondata||err(5),n=!!n,this.t)return this.ondata(this.t.decode(t,{stream:!0}),n),void(n&&(this.t.decode().length&&err(8),this.t=null));this.p||err(4);var e=new u8(this.p.length+t.length);e.set(this.p),e.set(t,this.p.length);var r=dutf8(e),i=r[0],s=r[1];n?(s.length&&err(8),this.p=null):this.p=s,this.ondata(i,n)},t}();exports.DecodeUTF8=DecodeUTF8;var EncodeUTF8=function(){function t(t){this.ondata=t}return t.prototype.push=function(t,n){this.ondata||err(5),this.d&&err(4),this.ondata(strToU8(t),this.d=n||!1)},t}();function strToU8(t,n){if(n){for(var e=new u8(t.length),r=0;r<t.length;++r)e[r]=t.charCodeAt(r);return e}if(te)return te.encode(t);var i=t.length,s=new u8(t.length+(t.length>>1)),o=0,a=function(t){s[o++]=t};for(r=0;r<i;++r){if(o+5>s.length){var f=new u8(o+8+(i-r<<1));f.set(s),s=f}var u=t.charCodeAt(r);u<128||n?a(u):u<2048?(a(192|u>>6),a(128|63&u)):u>55295&&u<57344?(a(240|(u=65536+(1047552&u)|1023&t.charCodeAt(++r))>>18),a(128|u>>12&63),a(128|u>>6&63),a(128|63&u)):(a(224|u>>12),a(128|u>>6&63),a(128|63&u))}return slc(s,0,o)}function strFromU8(t,n){if(n){for(var e="",r=0;r<t.length;r+=16384)e+=String.fromCharCode.apply(null,t.subarray(r,r+16384));return e}if(td)return td.decode(t);var i=dutf8(t),s=i[0];return i[1].length&&err(8),s}exports.EncodeUTF8=EncodeUTF8,exports.strToU8=strToU8,exports.strFromU8=strFromU8;var dbf=function(t){return 1==t?3:t<6?2:9==t?1:0},slzh=function(t,n){return n+30+b2(t,n+26)+b2(t,n+28)},zh=function(t,n,e){var r=b2(t,n+28),i=strFromU8(t.subarray(n+46,n+46+r),!(2048&b2(t,n+8))),s=n+46+r,o=b4(t,n+20),a=e&&4294967295==o?z64e(t,s):[o,b4(t,n+24),b4(t,n+42)],f=a[0],u=a[1],l=a[2];return[b2(t,n+10),f,u,i,s+b2(t,n+30)+b2(t,n+32),l]},z64e=function(t,n){for(;1!=b2(t,n);n+=4+b2(t,n+2));return[b8(t,n+12),b8(t,n+4),b8(t,n+20)]},exfl=function(t){var n=0;if(t)for(var e in t){var r=t[e].length;r>65535&&err(9),n+=r+4}return n},wzh=function(t,n,e,r,i,s,o,a){var f=r.length,u=e.extra,l=a&&a.length,c=exfl(u);wbytes(t,n,null!=o?33639248:67324752),n+=4,null!=o&&(t[n++]=20,t[n++]=e.os),t[n]=20,n+=2,t[n++]=e.flag<<1|(null==s&&8),t[n++]=i&&8,t[n++]=255&e.compression,t[n++]=e.compression>>8;var h=new Date(null==e.mtime?Date.now():e.mtime),p=h.getFullYear()-1980;if((p<0||p>119)&&err(10),wbytes(t,n,p<<25|h.getMonth()+1<<21|h.getDate()<<16|h.getHours()<<11|h.getMinutes()<<5|h.getSeconds()>>>1),n+=4,null!=s&&(wbytes(t,n,e.crc),wbytes(t,n+4,s),wbytes(t,n+8,e.size)),wbytes(t,n+12,f),wbytes(t,n+14,c),n+=16,null!=o&&(wbytes(t,n,l),wbytes(t,n+6,e.attrs),wbytes(t,n+10,o),n+=14),t.set(r,n),n+=f,c)for(var v in u){var d=u[v],b=d.length;wbytes(t,n,+v),wbytes(t,n+2,b),t.set(d,n+4),n+=4+b}return l&&(t.set(a,n),n+=l),n},wzf=function(t,n,e,r,i){wbytes(t,n,101010256),wbytes(t,n+8,e),wbytes(t,n+10,e),wbytes(t,n+12,r),wbytes(t,n+16,i)},ZipPassThrough=function(){function t(t){this.filename=t,this.c=crc(),this.size=0,this.compression=0}return t.prototype.process=function(t,n){this.ondata(null,t,n)},t.prototype.push=function(t,n){this.ondata||err(5),this.c.p(t),this.size+=t.length,n&&(this.crc=this.c.d()),this.process(t,n||!1)},t}();exports.ZipPassThrough=ZipPassThrough;var ZipDeflate=function(){function t(t,n){var e=this;n||(n={}),ZipPassThrough.call(this,t),this.d=new Deflate(n,function(t,n){e.ondata(null,t,n)}),this.compression=8,this.flag=dbf(n.level)}return t.prototype.process=function(t,n){try{this.d.push(t,n)}catch(t){this.ondata(t,null,n)}},t.prototype.push=function(t,n){ZipPassThrough.prototype.push.call(this,t,n)},t}();exports.ZipDeflate=ZipDeflate;var AsyncZipDeflate=function(){function t(t,n){var e=this;n||(n={}),ZipPassThrough.call(this,t),this.d=new AsyncDeflate(n,function(t,n,r){e.ondata(t,n,r)}),this.compression=8,this.flag=dbf(n.level),this.terminate=this.d.terminate}return t.prototype.process=function(t,n){this.d.push(t,n)},t.prototype.push=function(t,n){ZipPassThrough.prototype.push.call(this,t,n)},t}();exports.AsyncZipDeflate=AsyncZipDeflate;var Zip=function(){function t(t){this.ondata=t,this.u=[],this.d=1}return t.prototype.add=function(t){var n=this;if(this.ondata||err(5),2&this.d)this.ondata(err(4+8*(1&this.d),0,1),null,!1);else{var e=strToU8(t.filename),r=e.length,i=t.comment,s=i&&strToU8(i),o=r!=t.filename.length||s&&i.length!=s.length,a=r+exfl(t.extra)+30;r>65535&&this.ondata(err(11,0,1),null,!1);var f=new u8(a);wzh(f,0,t,e,o);var u=[f],l=function(){for(var t=0,e=u;t<e.length;t++){var r=e[t];n.ondata(null,r,!1)}u=[]},c=this.d;this.d=0;var h=this.u.length,p=mrg(t,{f:e,u:o,o:s,t:function(){t.terminate&&t.terminate()},r:function(){if(l(),c){var t=n.u[h+1];t?t.r():n.d=1}c=1}}),v=0;t.ondata=function(e,r,i){if(e)n.ondata(e,r,i),n.terminate();else if(v+=r.length,u.push(r),i){var s=new u8(16);wbytes(s,0,134695760),wbytes(s,4,t.crc),wbytes(s,8,v),wbytes(s,12,t.size),u.push(s),p.c=v,p.b=a+v+16,p.crc=t.crc,p.size=t.size,c&&p.r(),c=1}else c&&l()},this.u.push(p)}},t.prototype.end=function(){var t=this;2&this.d?this.ondata(err(4+8*(1&this.d),0,1),null,!0):(this.d?this.e():this.u.push({r:function(){1&t.d&&(t.u.splice(-1,1),t.e())},t:function(){}}),this.d=3)},t.prototype.e=function(){for(var t=0,n=0,e=0,r=0,i=this.u;r<i.length;r++){e+=46+(f=i[r]).f.length+exfl(f.extra)+(f.o?f.o.length:0)}for(var s=new u8(e+22),o=0,a=this.u;o<a.length;o++){var f=a[o];wzh(s,t,f,f.f,f.u,f.c,n,f.o),t+=46+f.f.length+exfl(f.extra)+(f.o?f.o.length:0),n+=f.b}wzf(s,t,this.u.length,e,n),this.ondata(null,s,!0),this.d=2},t.prototype.terminate=function(){for(var t=0,n=this.u;t<n.length;t++){n[t].t()}this.d=2},t}();function zip(t,n,e){e||(e=n,n={}),"function"!=typeof e&&err(7);var r={};fltn(t,"",r,n);var i=Object.keys(r),s=i.length,o=0,a=0,f=s,u=new Array(s),l=[],c=function(){for(var t=0;t<l.length;++t)l[t]()},h=function(t,n){mt(function(){e(t,n)})};mt(function(){h=e});var p=function(){var t=new u8(a+22),n=o,e=a-o;a=0;for(var r=0;r<f;++r){var i=u[r];try{var s=i.c.length;wzh(t,a,i,i.f,i.u,s);var l=30+i.f.length+exfl(i.extra),c=a+l;t.set(i.c,c),wzh(t,o,i,i.f,i.u,s,a,i.m),o+=16+l+(i.m?i.m.length:0),a=c+s}catch(t){return h(t,null)}}wzf(t,o,u.length,e,n),h(null,t)};s||p();for(var v=function(t){var n=i[t],e=r[n],f=e[0],v=e[1],d=crc(),b=f.length;d.p(f);var y=strToU8(n),g=y.length,m=v.comment,z=m&&strToU8(m),w=z&&z.length,x=exfl(v.extra),S=0==v.level?0:8,U=function(e,r){if(e)c(),h(e,null);else{var i=r.length;u[t]=mrg(v,{size:b,crc:d.d(),c:r,f:y,m:z,u:g!=n.length||z&&m.length!=w,compression:S}),o+=30+g+x+i,a+=76+2*(g+x)+(w||0)+i,--s||p()}};if(g>65535&&U(err(11,0,1),null),S)if(b<16e4)try{U(null,deflateSync(f,v))}catch(t){U(t,null)}else l.push(deflate(f,v,U));else U(null,f)},d=0;d<f;++d)v(d);return c}function zipSync(t,n){n||(n={});var e={},r=[];fltn(t,"",e,n);var i=0,s=0;for(var o in e){var a=e[o],f=a[0],u=a[1],l=0==u.level?0:8,c=(S=strToU8(o)).length,h=u.comment,p=h&&strToU8(h),v=p&&p.length,d=exfl(u.extra);c>65535&&err(11);var b=l?deflateSync(f,u):f,y=b.length,g=crc();g.p(f),r.push(mrg(u,{size:f.length,crc:g.d(),c:b,f:S,m:p,u:c!=o.length||p&&h.length!=v,o:i,compression:l})),i+=30+c+d+y,s+=76+2*(c+d)+(v||0)+y}for(var m=new u8(s+22),z=i,w=s-i,x=0;x<r.length;++x){var S=r[x];wzh(m,S.o,S,S.f,S.u,S.c.length);var U=30+S.f.length+exfl(S.extra);m.set(S.c,S.o+U),wzh(m,i,S,S.f,S.u,S.c.length,S.o,S.m),i+=16+U+(S.m?S.m.length:0)}return wzf(m,i,r.length,w,z),m}exports.Zip=Zip,exports.zip=zip,exports.zipSync=zipSync;var UnzipPassThrough=function(){function t(){}return t.prototype.push=function(t,n){this.ondata(null,t,n)},t.compression=0,t}();exports.UnzipPassThrough=UnzipPassThrough;var UnzipInflate=function(){function t(){var t=this;this.i=new Inflate(function(n,e){t.ondata(null,n,e)})}return t.prototype.push=function(t,n){try{this.i.push(t,n)}catch(t){this.ondata(t,null,n)}},t.compression=8,t}();exports.UnzipInflate=UnzipInflate;var AsyncUnzipInflate=function(){function t(t,n){var e=this;n<32e4?this.i=new Inflate(function(t,n){e.ondata(null,t,n)}):(this.i=new AsyncInflate(function(t,n,r){e.ondata(t,n,r)}),this.terminate=this.i.terminate)}return t.prototype.push=function(t,n){this.i.terminate&&(t=slc(t,0)),this.i.push(t,n)},t.compression=8,t}();exports.AsyncUnzipInflate=AsyncUnzipInflate;var Unzip=function(){function t(t){this.onfile=t,this.k=[],this.o={0:UnzipPassThrough},this.p=et}return t.prototype.push=function(t,n){var e=this;if(this.onfile||err(5),this.p||err(4),this.c>0){var r=Math.min(this.c,t.length),i=t.subarray(0,r);if(this.c-=r,this.d?this.d.push(i,!this.c):this.k[0].push(i),(t=t.subarray(r)).length)return this.push(t,n)}else{var s=0,o=0,a=void 0,f=void 0;this.p.length?t.length?((f=new u8(this.p.length+t.length)).set(this.p),f.set(t,this.p.length)):f=this.p:f=t;for(var u=f.length,l=this.c,c=l&&this.d,h=function(){var t,n=b4(f,o);if(67324752==n){s=1,a=o,p.d=null,p.c=0;var r=b2(f,o+6),i=b2(f,o+8),c=2048&r,h=8&r,v=b2(f,o+26),d=b2(f,o+28);if(u>o+30+v+d){var b=[];p.k.unshift(b),s=2;var y,g=b4(f,o+18),m=b4(f,o+22),z=strFromU8(f.subarray(o+30,o+=30+v),!c);4294967295==g?(t=h?[-2]:z64e(f,o),g=t[0],m=t[1]):h&&(g=-1),o+=d,p.c=g;var w={name:z,compression:i,start:function(){if(w.ondata||err(5),g){var t=e.o[i];t||w.ondata(err(14,"unknown compression type "+i,1),null,!1),(y=g<0?new t(z):new t(z,g,m)).ondata=function(t,n,e){w.ondata(t,n,e)};for(var n=0,r=b;n<r.length;n++){var s=r[n];y.push(s,!1)}e.k[0]==b&&e.c?e.d=y:y.push(et,!0)}else w.ondata(null,et,!0)},terminate:function(){y&&y.terminate&&y.terminate()}};g>=0&&(w.size=g,w.originalSize=m),p.onfile(w)}return"break"}if(l){if(134695760==n)return a=o+=12+(-2==l&&8),s=3,p.c=0,"break";if(33639248==n)return a=o-=4,s=3,p.c=0,"break"}},p=this;o<u-4;++o){if("break"===h())break}if(this.p=et,l<0){var v=s?f.subarray(0,a-12-(-2==l&&8)-(134695760==b4(f,a-16)&&4)):f.subarray(0,o);c?c.push(v,!!s):this.k[+(2==s)].push(v)}if(2&s)return this.push(f.subarray(o),n);this.p=f.subarray(o)}n&&(this.c&&err(13),this.p=null)},t.prototype.register=function(t){this.o[t.compression]=t},t}();exports.Unzip=Unzip;var mt="function"==typeof queueMicrotask?queueMicrotask:"function"==typeof setTimeout?setTimeout:function(t){t()};function unzip(t,n,e){e||(e=n,n={}),"function"!=typeof e&&err(7);var r=[],i=function(){for(var t=0;t<r.length;++t)r[t]()},s={},o=function(t,n){mt(function(){e(t,n)})};mt(function(){o=e});for(var a=t.length-22;101010256!=b4(t,a);--a)if(!a||t.length-a>65558)return o(err(13,0,1),null),i;var f=b2(t,a+8);if(f){var u=f,l=b4(t,a+16),c=4294967295==l;if(c){if(a=b4(t,a-12),101075792!=b4(t,a))return o(err(13,0,1),null),i;u=f=b4(t,a+32),l=b4(t,a+48)}for(var h=n&&n.filter,p=function(n){var e=zh(t,l,c),a=e[0],u=e[1],p=e[2],v=e[3],d=e[4],b=e[5],y=slzh(t,b);l=d;var g=function(t,n){t?(i(),o(t,null)):(n&&(s[v]=n),--f||o(null,s))};if(!h||h({name:v,size:u,originalSize:p,compression:a}))if(a)if(8==a){var m=t.subarray(y,y+u);if(u<32e4)try{g(null,inflateSync(m,new u8(p)))}catch(t){g(t,null)}else r.push(inflate(m,{size:p},g))}else g(err(14,"unknown compression type "+a,1),null);else g(null,slc(t,y,y+u));else g(null,null)},v=0;v<u;++v)p()}else o(null,{});return i}function unzipSync(t,n){for(var e={},r=t.length-22;101010256!=b4(t,r);--r)(!r||t.length-r>65558)&&err(13);var i=b2(t,r+8);if(!i)return{};var s=b4(t,r+16),o=4294967295==s;o&&(r=b4(t,r-12),101075792!=b4(t,r)&&err(13),i=b4(t,r+32),s=b4(t,r+48));for(var a=n&&n.filter,f=0;f<i;++f){var u=zh(t,s,o),l=u[0],c=u[1],h=u[2],p=u[3],v=u[4],d=u[5],b=slzh(t,d);s=v,a&&!a({name:p,size:c,originalSize:h,compression:l})||(l?8==l?e[p]=inflateSync(t.subarray(b,b+c),new u8(h)):err(14,"unknown compression type "+l):e[p]=slc(t,b,b+c))}return e}exports.unzip=unzip,exports.unzipSync=unzipSync;
|
|
174
174
|
|
|
175
175
|
},{"./node-worker.cjs":39}],39:[function(require,module,exports){
|
|
@@ -181,7 +181,7 @@ const{flatten:flatten}=require("@jscad/array-utils"),{formats:formats}=require("
|
|
|
181
181
|
},{}],41:[function(require,module,exports){
|
|
182
182
|
const zipSync=require("fflate").zipSync,strToU8=require("fflate").strToU8,stringify=require("onml/lib/stringify"),{colors:colors,geometries:geometries,modifiers:modifiers}=require("@jscad/modeling"),{flatten:flatten,toArray:toArray}=require("@jscad/array-utils"),mimeType="model/3mf",fileExtension="3mf",serialize=(e,...t)=>{e=Object.assign({},{unit:"millimeter",metadata:!0,defaultcolor:[1,160/255,0,1],compress:!0},e);let o=(t=flatten(t)).filter(e=>geometries.geom3.isA(e));if(0===o.length)throw new Error("only 3D geometries can be serialized to 3MF");t.length!==o.length&&console.warn("some objects could not be serialized to 3MF"),t=toArray(modifiers.generalize({snap:!0,triangulate:!0},o));const r=["model",{unit:e.unit,"xml:lang":"und"},["metadata",{name:"Application"},"JSCAD"]];e.metadata&&r.push(["metadata",{name:"CreationDate"},(new Date).toISOString()]),r.push(translateResources(t,e)),r.push(translateBuild(t,e));const n=`<?xml version="1.0" encoding="UTF-8"?>\n${stringify(r,2)}`;if(e.compress){const e={"3D":{"3dmodel.model":strToU8(n)},_rels:{".rels":strToU8(rels)},"[Content_Types].xml":strToU8(contenttype)};return[zipSync(e,{comment:"created by JSCAD"}).buffer]}return[n]},contenttype='<?xml version="1.0" encoding="UTF-8" ?>\n<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">\n <Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml">\n </Default>\n <Default Extension="model" ContentType="application/vnd.ms-package.3dmanufacturing-3dmodel+xml">\n </Default>\n</Types>',rels='<?xml version="1.0" encoding="UTF-8" ?>\n<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">\n <Relationship Target="/3D/3dmodel.model" Id="rel0" Type="http://schemas.microsoft.com/3dmanufacturing/2013/01/3dmodel">\n </Relationship>\n</Relationships>',translateResources=(e,t)=>{let o=["resources",{},translateMaterials(e,t)];return o=o.concat(translateObjects(e,t))},translateMaterials=(e,t)=>{let o=["basematerials",{id:"0"}];const r=[];return e.forEach((e,o)=>{let n=colors.rgbToHex(t.defaultcolor).toUpperCase();e.color&&(n=colors.rgbToHex(e.color).toUpperCase()),r.push(["base",{name:`mat${o}`,displaycolor:n}])}),o=o.concat(r)},translateObjects=(e,t)=>{const o=[];return e.forEach((e,r)=>{if(geometries.geom3.isA(e)){geometries.geom3.toPolygons(e).length>0&&(t.id=r,o.push(convertToObject(e,t)))}}),o},translateBuild=(e,t)=>{let o=["build",{}];const r=[];return e.forEach((e,t)=>{r.push(["item",{objectid:`${t+1}`}])}),o=o.concat(r)},convertToObject=(e,t)=>{const o=e.name?e.name:`Part ${t.id}`;return["object",{id:`${t.id+1}`,type:"model",pid:"0",pindex:`${t.id}`,name:o},convertToMesh(e,t)]},convertToMesh=(e,t)=>{return["mesh",{},convertToVertices(e,t),convertToVolumes(e,t)]},convertToVertices=(e,t)=>{const o=[];return geometries.geom3.toPolygons(e).forEach(e=>{for(let r=0;r<e.vertices.length;r++)o.push(convertToVertex(e.vertices[r],t))}),["vertices",{}].concat(o)},convertToVertex=(e,t)=>{return["vertex",{x:e[0],y:e[1],z:e[2]}]},convertToVolumes=(e,t)=>{let o=0;const r=geometries.geom3.toPolygons(e);let n=["triangles",{}];return r.forEach(e=>{if(e.vertices.length<3)return;const t=convertToTriangles(e,o);n=n.concat(t),o+=e.vertices.length}),n},convertToTriangles=(e,t)=>{const o=[];for(let r=0;r<e.vertices.length-2;r++){const e=["triangle",{v1:t,v2:t+r+1,v3:t+r+2}];o.push(e)}return o};module.exports={serialize:serialize,mimeType:mimeType,fileExtension:"3mf"};
|
|
183
183
|
|
|
184
|
-
},{"@jscad/array-utils":
|
|
184
|
+
},{"@jscad/array-utils":532,"@jscad/modeling":216,"fflate":38,"onml/lib/stringify":40}],42:[function(require,module,exports){
|
|
185
185
|
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CHAR="\t\n\r --�𐀀-",exports.S=" \t\r\n",exports.NAME_START_CHAR=":A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-⁰-Ⰰ-、-豈-﷏ﷰ-�𐀀-",exports.NAME_CHAR="-"+exports.NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",exports.CHAR_RE=new RegExp("^["+exports.CHAR+"]$","u"),exports.S_RE=new RegExp("^["+exports.S+"]+$","u"),exports.NAME_START_CHAR_RE=new RegExp("^["+exports.NAME_START_CHAR+"]$","u"),exports.NAME_CHAR_RE=new RegExp("^["+exports.NAME_CHAR+"]$","u"),exports.NAME_RE=new RegExp("^["+exports.NAME_START_CHAR+"]["+exports.NAME_CHAR+"]*$","u"),exports.NMTOKEN_RE=new RegExp("^["+exports.NAME_CHAR+"]+$","u");var TAB=9,NL=10,CR=13,SPACE=32;function isChar(e){return e>=SPACE&&e<=55295||e===NL||e===CR||e===TAB||e>=57344&&e<=65533||e>=65536&&e<=1114111}function isS(e){return e===SPACE||e===NL||e===CR||e===TAB}function isNameStartChar(e){return e>=65&&e<=90||e>=97&&e<=122||58===e||95===e||8204===e||8205===e||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=767||e>=880&&e<=893||e>=895&&e<=8191||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}function isNameChar(e){return isNameStartChar(e)||e>=48&&e<=57||45===e||46===e||183===e||e>=768&&e<=879||e>=8255&&e<=8256}exports.S_LIST=[SPACE,NL,CR,TAB],exports.isChar=isChar,exports.isS=isS,exports.isNameStartChar=isNameStartChar,exports.isNameChar=isNameChar;
|
|
186
186
|
|
|
187
187
|
},{}],43:[function(require,module,exports){
|
|
@@ -196,7 +196,7 @@ const zipSync=require("fflate").zipSync,strToU8=require("fflate").strToU8,string
|
|
|
196
196
|
},{"xmlchars/xml/1.0/ed5":42,"xmlchars/xml/1.1/ed2":43,"xmlchars/xmlns/1.0/ed3":44}],46:[function(require,module,exports){
|
|
197
197
|
module.exports={
|
|
198
198
|
"name": "@jscad/amf-deserializer",
|
|
199
|
-
"version": "2.3.
|
|
199
|
+
"version": "2.3.8",
|
|
200
200
|
"description": "AMF Deserializer for JSCAD",
|
|
201
201
|
"repository": "https://github.com/jscad/OpenJSCAD.org/",
|
|
202
202
|
"main": "src/index.js",
|
|
@@ -227,7 +227,7 @@ module.exports={
|
|
|
227
227
|
],
|
|
228
228
|
"license": "MIT",
|
|
229
229
|
"dependencies": {
|
|
230
|
-
"@jscad/modeling": "2.12.
|
|
230
|
+
"@jscad/modeling": "2.12.3",
|
|
231
231
|
"saxes": "5.0.1"
|
|
232
232
|
},
|
|
233
233
|
"devDependencies": {
|
|
@@ -261,7 +261,7 @@ const createObject=require("./objectBuilder"),parse=require("./parse"),translate
|
|
|
261
261
|
},{"./constants":47,"./objectBuilder":51,"./parse":52}],54:[function(require,module,exports){
|
|
262
262
|
const stringify=require("onml/lib/stringify"),{geometries:geometries,modifiers:modifiers}=require("@jscad/modeling"),{flatten:flatten,toArray:toArray}=require("@jscad/array-utils"),mimeType="application/amf+xml",serialize=(e,...t)=>{e=Object.assign({},{statusCallback:null,unit:"millimeter"},e);let o=(t=flatten(t)).filter(e=>geometries.geom3.isA(e));if(0===o.length)throw new Error("only 3D geometries can be serialized to AMF");t.length!==o.length&&console.warn("some objects could not be serialized to AMF"),o=toArray(modifiers.generalize({snap:!0,triangulate:!0},o)),e.statusCallback&&e.statusCallback({progress:0});let r=["amf",{unit:e.unit,version:"1.1"},["metadata",{type:"author"},"Created by JSCAD"]];r=r.concat(translateObjects(o,e));const n=`<?xml version="1.0" encoding="UTF-8"?>\n${stringify(r,2)}`;return e&&e.statusCallback&&e.statusCallback({progress:100}),[n]},translateObjects=(e,t)=>{const o=[];return e.forEach((e,r)=>{geometries.geom3.toPolygons(e).length>0&&(t.id=r,o.push(convertToObject(e,t)))}),o},convertToObject=(e,t)=>{return["object",{id:t.id},convertToMesh(e,t)]},convertToMesh=(e,t)=>{let o=["mesh",{},convertToVertices(e,t)];return o=o.concat(convertToVolumes(e,t))},convertToVertices=(e,t)=>{const o=[];return geometries.geom3.toPolygons(e).forEach(e=>{for(let r=0;r<e.vertices.length;r++)o.push(convertToVertex(e.vertices[r],t))}),["vertices",{}].concat(o)},convertToVertex=(e,t)=>{return["vertex",{},convertToCoordinates(e,t)]},convertToCoordinates=(e,t)=>{return["coordinates",{},["x",{},e[0]],["y",{},e[1]],["z",{},e[2]]]},convertToVolumes=(e,t)=>{const o=convertColor(e.color),r=geometries.geom3.toPolygons(e),n=[];let s=["volume",{}];o&&s.push(o);let l=0;return r.forEach(e=>{if(e.vertices.length<3)return;const o=convertToTriangles(e,l,t);s=s.concat(o),l+=e.vertices.length}),n.push(s),n},convertColor=e=>e?(e.length<4&&e.push(1),["color",{},["r",{},e[0]],["g",{},e[1]],["b",{},e[2]],["a",{},e[3]]]):null,convertToColor=(e,t)=>{const o=e.color;return convertColor(o)},convertToTriangles=(e,t,o)=>{const r=convertToColor(e),n=[];for(let o=0;o<e.vertices.length-2;o++)r?n.push(["triangle",{},r,["v1",{},t],["v2",{},t+o+1],["v3",{},t+o+2]]):n.push(["triangle",{},["v1",{},t],["v2",{},t+o+1],["v3",{},t+o+2]]);return n};module.exports={serialize:serialize,mimeType:mimeType};
|
|
263
263
|
|
|
264
|
-
},{"@jscad/array-utils":
|
|
264
|
+
},{"@jscad/array-utils":532,"@jscad/modeling":216,"onml/lib/stringify":55}],55:[function(require,module,exports){
|
|
265
265
|
"use strict";const isObject=t=>t&&"[object Object]"===Object.prototype.toString.call(t);function indenter(t){if(!(t>0))return t=>t;var e=" ".repeat(t);return t=>{if("string"!=typeof t)return t;const n=t.split("\n");return 1===n.length?e+t:n.map(t=>""===t.trim()?t:e+t).join("\n")}}const clean=t=>t.split("\n").filter(t=>""!==t.trim()).join("\n");function stringify(t,e){const n=e>0?"\n":"",r=indenter(e);return function t(e){let i,o="",s=!0;return e.some((e,r,c)=>{if(0===r)return i="<"+e,1===c.length;if(1===r){if(isObject(e))return Object.keys(e).map(t=>{let n=e[t];Array.isArray(n)&&(n=n.join(" ")),i+=" "+t+'="'+n+'"'}),2===c.length||void(i+=">");i+=">"}switch(typeof e){case"string":case"number":case"boolean":case"undefined":return void(o+=e+n)}s=!1,o+=t(e)})?i+"/>"+n:s?i+clean(o)+"</"+e[0]+">"+n:i+n+r(o)+"</"+e[0]+">"+n}(t)}module.exports=stringify;
|
|
266
266
|
|
|
267
267
|
},{}],56:[function(require,module,exports){
|
|
@@ -285,7 +285,7 @@ const{geometries:geometries,maths:maths,primitives:primitives}=require("@jscad/m
|
|
|
285
285
|
},{"./helpers":59,"@jscad/modeling":216}],62:[function(require,module,exports){
|
|
286
286
|
module.exports={
|
|
287
287
|
"name": "@jscad/dxf-deserializer",
|
|
288
|
-
"version": "2.3.
|
|
288
|
+
"version": "2.3.25",
|
|
289
289
|
"description": "DXF Deserializer for JSCAD",
|
|
290
290
|
"homepage": "https://openjscad.xyz/",
|
|
291
291
|
"repository": "https://github.com/jscad/OpenJSCAD.org",
|
|
@@ -313,7 +313,7 @@ module.exports={
|
|
|
313
313
|
],
|
|
314
314
|
"license": "MIT",
|
|
315
315
|
"dependencies": {
|
|
316
|
-
"@jscad/modeling": "2.12.
|
|
316
|
+
"@jscad/modeling": "2.12.3"
|
|
317
317
|
},
|
|
318
318
|
"devDependencies": {
|
|
319
319
|
"ava": "3.15.0",
|
|
@@ -334,7 +334,7 @@ const colorIndex=[[0,0,0,255],[255,0,0,255],[255,255,0,255],[0,255,0,255],[0,255
|
|
|
334
334
|
},{}],66:[function(require,module,exports){
|
|
335
335
|
const{geometries:geometries,modifiers:modifiers}=require("@jscad/modeling"),{geom3:geom3,geom2:geom2,path2:path2}=geometries,{flatten:flatten,toArray:toArray}=require("@jscad/array-utils"),{dxfHeaders:dxfHeaders,dxfClasses:dxfClasses,dxfTables:dxfTables,dxfBlocks:dxfBlocks,dxfObjects:dxfObjects}=require("./autocad_AC2017"),colorindex2017=require("./colorindex2017"),mimeType="application/dxf",serialize=(n,...e)=>{const t={geom2To:"lwpolyline",geom3To:"3dface",pathTo:"lwpolyline",statusCallback:null,colorIndex:colorindex2017};if((n=Object.assign({},t,n)).entityId=0,0===(e=(e=flatten(e)).filter(n=>geom3.isA(n)||geom2.isA(n)||path2.isA(n))).length)throw new Error("only JSCAD geometries can be serialized to DXF");return e=toArray(modifiers.generalize({snap:!0,triangulate:!0},e)),[`999\nCreated by JSCAD\n${dxfHeaders(n)}\n${dxfClasses(n)}\n${dxfTables(n)}\n${dxfBlocks(n)}\n${dxfEntities(e,n)}\n${dxfObjects(n)}\n 0\nEOF\n`]},dxfEntities=(n,e)=>{const t=n.map((n,t)=>{if(geom2.isA(n)){const t=n.color,o=n.name,s=geom2.toOutlines(n).map(n=>({closed:!0,points:n,color:t,name:o}));return"polyline"===e.geom2To?PathsToPolyine(s,e):PathsToLwpolyline(s,e)}if(geom3.isA(n))return"polyline"===e.geom3To?PolygonsToPolyline(n,e):PolygonsTo3DFaces(n,e);if(path2.isA(n)){const t=n.color,o=n.name,s={closed:n.isClosed,points:path2.toPoints(n),color:t,name:o};return PathsToLwpolyline([s],e)}return""});let o=" 0\nSECTION\n 2\nENTITIES\n";return t.forEach(n=>{n&&(o+=n)}),o+=" 0\nENDSEC"},PathsToLwpolyline=(n,e)=>{e.statusCallback&&e.statusCallback({progress:0});let t="";return n.forEach((o,s)=>{if(o.points.length<1)return;const l=o.points.length+(o.closed?1:0);t+=` 0\nLWPOLYLINE\n 5\n${getEntityId(e)}\n 100\nAcDbEntity\n 3\n${getName(o,e)}\n 8\n0\n 67\n0\n 62\n${getColorNumber(o,e)}\n 100\nAcDbPolyline\n 90\n${l}\n 70\n${o.closed?1:0}\n`;for(let n=0;n<l;n++){let e=n;e>=o.points.length&&(e-=o.points.length);const s=o.points[e];t+=` 10\n${s[0]}\n 20\n${s[1]}\n`}e.statusCallback&&e.statusCallback({progress:100*s/n.length})}),e.statusCallback&&e.statusCallback({progress:100}),[t]},PathsToPolyine=(n,e)=>{e.statusCallback&&e.statusCallback({progress:0});let t="";return n.forEach((o,s)=>{const l=o.points.length+(o.closed?1:0);t+=` 0\nPOLYLINE\n 5\n${getEntityId(e)}\n 100\nAcDbEntity\n 3\n${getName(o,e)}\n 8\n0\n 62\n${getColorNumber(o,e)}\n 100\nAcDb2dPolyline\n`;for(let n=0;n<l;n++){let s=n;s>=o.points.length&&(s-=o.points.length);const l=o.points[s];t+=` 0\nVERTEX\n 5\n${getEntityId(e)}\n 100\nAcDbEntity\n 8\n0\n 100\nAcDbVertex\n 100\nAcDb2dVertex\n 10\n${l[0]}\n 20\n${l[1]}\n`}t+=` 0\nSEQEND\n 5\n${getEntityId(e)}\n 100\nAcDbEntity\n`,e.statusCallback&&e.statusCallback({progress:100*s/n.length})}),e.statusCallback&&e.statusCallback({progress:100}),[t]},PolygonsTo3DFaces=(n,e)=>{e.statusCallback&&e.statusCallback({progress:0});let t="";const o=geom3.toPolygons(n),s=getColorNumber(n,e);return o.forEach((n,o)=>{const l=n.color?getColorNumber(n,e):s;polygonToTriangles(n).forEach((n,o)=>{t+=triangleTo3DFaces(n,e,l)})}),e.statusCallback&&e.statusCallback({progress:100}),[t]},polygonToTriangles=n=>{const e=n.vertices.length-2;if(e<1)return[];const t=n.vertices[0],o=[];for(let s=0;s<e;s++)o.push([t,n.vertices[s+1],n.vertices[s+2]]);return o},triangleTo3DFaces=(n,e,t)=>{const o=n[0],s=n[1],l=n[2],r=n[2];return` 0\n3DFACE\n 5\n${getEntityId(e)}\n 100\nAcDbEntity\n 8\n0\n 62\n${t}\n 100\nAcDbFace\n 70\n0\n 10\n${o[0]}\n 20\n${o[1]}\n 30\n${o[2]}\n 11\n${s[0]}\n 21\n${s[1]}\n 31\n${s[2]}\n 12\n${l[0]}\n 22\n${l[1]}\n 32\n${l[2]}\n 13\n${r[0]}\n 23\n${r[1]}\n 33\n${r[2]}\n`},PolygonsToPolyline=(n,e)=>{let t="";const o=polygons2polyfaces(geom3.toPolygons(n));return o.faces.length>0&&(t+=` 0\nPOLYLINE\n 5\n${getEntityId(e)}\n 100\nAcDbEntity\n 3\n${getName(n,e)}\n 8\n0\n 62\n${getColorNumber(n,e)}\n 100\nAcDb3dPolyline\n 70\n64\n 71\n${o.vertices.length}\n 72\n${o.faces.length}\n`,o.vertices.forEach(n=>{t+=` 0\nVERTEX\n 5\n${getEntityId(e)}\n 100\nAcDbEntity\n 8\n0\n 100\nAcDbVertex\n 100\nAcDb3dPolylineVertex\n 10\n${n[0]}\n 20\n${n[1]}\n 30\n${n[2]}\n 70\n192\n`}),o.faces.forEach(n=>{t+=` 0\nVERTEX\n 5\n${getEntityId(e)}\n 100\nAcDbEntity\n 8\n0\n 100\nAcDbVertex\n 100\nAcDb3dPolylineVertex\n 10\n0\n 20\n0\n 30\n0\n 70\n128\n 71\n${n[0]}\n 72\n${n[1]}\n 73\n${n[2]}\n 74\n${n[3]}\n`})),[t]},polygons2polyfaces=n=>{const e=[],t=[];for(let o=0;o<n.length;++o){const s=n[o],l=[];for(let n=0;n<s.vertices.length;++n){const e=s.vertices[n];t.push([e[0],e[1],e[2]]),l.push(t.length)}for(;l.length<4;)l.push(0);e.push(l)}return{faces:e,vertices:t}},getEntityId=n=>{n.entityId++;const e="00000"+n.entityId.toString(16).toUpperCase();return"CAD"+e.substr(e.length-5)},getName=(n,e)=>{if(n.name)return n.name;const t="00000"+e.entityId.toString(16).toUpperCase();return"CAD"+t.substr(t.length-5)},getColorNumber=(n,e)=>{let t=256;if(n.color){const o=Math.floor(255*n.color[0]),s=Math.floor(255*n.color[1]),l=Math.floor(255*n.color[2]),r=e.colorIndex;let a=765;for(let n=1;n<r.length;n++){const e=r[n],i=Math.abs(o-e[0])+Math.abs(s-e[1])+Math.abs(l-e[2]);if(i<a){if(t=n,0===i)break;a=i}}}return t};module.exports={serialize:serialize,mimeType:mimeType};
|
|
336
336
|
|
|
337
|
-
},{"./autocad_AC2017":64,"./colorindex2017":65,"@jscad/array-utils":
|
|
337
|
+
},{"./autocad_AC2017":64,"./colorindex2017":65,"@jscad/array-utils":532,"@jscad/modeling":216}],67:[function(require,module,exports){
|
|
338
338
|
class BinaryReader{constructor(t){this._buffer=t,this._pos=0}readInt8(){return this._decodeInt(8,!0)}readUInt8(){return this._decodeInt(8,!1)}readInt16(){return this._decodeInt(16,!0)}readUInt16(){return this._decodeInt(16,!1)}readInt32(){return this._decodeInt(32,!0)}readUInt32(){return this._decodeInt(32,!1)}readFloat(){return this._decodeFloat(23,8)}readDouble(){return this._decodeFloat(52,11)}readChar(){return this.readString(1)}readString(t){this._checkSize(8*t);const e=this._buffer.substr(this._pos,t);return this._pos+=t,e}seek(t){this._pos=t,this._checkSize(0)}getPosition(){return this._pos}getSize(){return this._buffer.length}_decodeFloat(t,e){const r=t+e+1,s=r>>3;this._checkSize(r);const i=Math.pow(2,e-1)-1,h=this._readBits(t+e,1,s),d=this._readBits(t,e,s);let o=0,n=2,_=0,a=0;do{const e=this._readByte(++_,s);let r=1<<(a=t%8||8);for(;r>>=1;)e&r&&(o+=1/n),n*=2}while(t-=a);return this._pos+=s,d===1+(i<<1)?o?NaN:h?-1/0:1/0:(1+-2*h)*(d||o?d?Math.pow(2,d-i)*(1+o):Math.pow(2,1-i)*o:0)}_decodeInt(t,e){const r=this._readBits(0,t,t/8),s=Math.pow(2,t),i=e&&r>=s/2?r-s:r;return this._pos+=t/8,i}_shl(t,e){for(++e;--e;t=1073741824==(1073741824&(t%=2147483648))?2*t:2*(t-1073741824)+2147483647+1);return t}_readByte(t,e){return 255&this._buffer.charCodeAt(this._pos+e-t-1)}_readBits(t,e,r){const s=(t+e)%8,i=t%8,h=r-(t>>3)-1;let d=r+(-(t+e)>>3),o=h-d,n=this._readByte(h,r)>>i&(1<<(o?8-i:e))-1;for(o&&s&&(n+=(this._readByte(d++,r)&(1<<s)-1)<<(o--<<3)-i);o;)n+=this._shl(this._readByte(d++,r),(o--<<3)-i);return n}_checkSize(t){this._pos,Math.ceil(t/8),this._buffer.length}}module.exports=BinaryReader;
|
|
339
339
|
|
|
340
340
|
},{}],68:[function(require,module,exports){
|
|
@@ -363,13 +363,13 @@ const{makeBlob:makeBlob,convertToBlob:convertToBlob}=require("@jscad/io-utils"),
|
|
|
363
363
|
},{"./deserializers":72,"./prepareOutput":75,"@jscad/3mf-serializer":41,"@jscad/amf-serializer":54,"@jscad/dxf-serializer":66,"@jscad/io-utils":70,"@jscad/json-serializer":78,"@jscad/obj-serializer":81,"@jscad/stl-serializer":86,"@jscad/svg-serializer":98,"@jscad/x3d-serializer":124}],75:[function(require,module,exports){
|
|
364
364
|
const{toArray:toArray}=require("@jscad/array-utils"),{formats:formats}=require("./formats"),amfSerializer=require("@jscad/amf-serializer"),dxfSerializer=require("@jscad/dxf-serializer"),jsonSerializer=require("@jscad/json-serializer"),objSerializer=require("@jscad/obj-serializer"),stlSerializer=require("@jscad/stl-serializer"),svgSerializer=require("@jscad/svg-serializer"),x3dSerializer=require("@jscad/x3d-serializer"),m3fSerializer=require("@jscad/3mf-serializer"),prepareOutput=(e,r)=>{const i={format:void 0,version:"0.0.0"},{format:a,version:s}=Object.assign({},i,r),l={producer:"JSCAD "+s,date:new Date,version:s},t={amf:amfSerializer,stl:stlSerializer,stla:{mimeType:stlSerializer.mimeType,serialize:(e,r)=>stlSerializer.serialize(Object.assign({},{binary:!1},e),r)},stlb:stlSerializer,dxf:dxfSerializer,obj:objSerializer,svg:svgSerializer,x3d:x3dSerializer,"3mf":m3fSerializer,json:jsonSerializer,js:{mimeType:formats.js.mimetype,serialize:(e,r)=>toArray(r)},jscad:{mimeType:formats.jscad.mimetype,serialize:(e,r)=>toArray(r)},undefined:()=>{throw new Error("Not supported : only jscad, stl, amf, dxf, svg or json as output format")}},o=Object.assign({},l,r);return{data:t[a].serialize(o,e),mimeType:t[a].mimeType}};module.exports=prepareOutput;
|
|
365
365
|
|
|
366
|
-
},{"./formats":73,"@jscad/3mf-serializer":41,"@jscad/amf-serializer":54,"@jscad/array-utils":
|
|
366
|
+
},{"./formats":73,"@jscad/3mf-serializer":41,"@jscad/amf-serializer":54,"@jscad/array-utils":532,"@jscad/dxf-serializer":66,"@jscad/json-serializer":78,"@jscad/obj-serializer":81,"@jscad/stl-serializer":86,"@jscad/svg-serializer":98,"@jscad/x3d-serializer":124}],76:[function(require,module,exports){
|
|
367
367
|
const{flatten:flatten,toArray:toArray}=require("@jscad/array-utils"),version=require("./package.json").version,deserialize=(e,t)=>{const n={filename:"json",output:"script",version:version,addMetaData:!0};e=Object.assign({},n,e);let r=JSON.parse(t);return r=flatten(toArray(r)),"script"===e.output?translate(e,r):r},translate=(e,t)=>{const{addMetaData:n,filename:r,version:s}=e;let a=n?`//\n// Produced by JSCAD IO Library : JSON Deserializer (${s})\n// date: ${new Date}\n// source: ${r}\n//\n`:"";return a+=`\nconst { geometries } = require('@jscad/modeling')\n\nconst main = () => {\n const objects = [${translateToList(t)} ]\n return objects\n}\n\n${translateToObjects(t)}\n\nmodule.exports = { main }\n`},translateToList=e=>e.reduce((e,t,n)=>e+` json${n},`,""),translateToObjects=e=>e.reduce((e,t,n)=>e+translateToObject(t,n),""),translateToObject=(e,t)=>`const json${t} = ${JSON.stringify(e)}\n`,extension="json";module.exports={deserialize:deserialize,extension:"json"};
|
|
368
368
|
|
|
369
|
-
},{"./package.json":77,"@jscad/array-utils":
|
|
369
|
+
},{"./package.json":77,"@jscad/array-utils":532}],77:[function(require,module,exports){
|
|
370
370
|
module.exports={
|
|
371
371
|
"name": "@jscad/json-deserializer",
|
|
372
|
-
"version": "2.0.
|
|
372
|
+
"version": "2.0.29",
|
|
373
373
|
"description": "JSON Deserializer for JSCAD",
|
|
374
374
|
"homepage": "https://openjscad.xyz/",
|
|
375
375
|
"repository": "https://github.com/jscad/OpenJSCAD.org",
|
|
@@ -400,7 +400,7 @@ module.exports={
|
|
|
400
400
|
"@jscad/array-utils": "2.1.4"
|
|
401
401
|
},
|
|
402
402
|
"devDependencies": {
|
|
403
|
-
"@jscad/modeling": "2.12.
|
|
403
|
+
"@jscad/modeling": "2.12.3",
|
|
404
404
|
"ava": "3.15.0",
|
|
405
405
|
"nyc": "15.1.0"
|
|
406
406
|
},
|
|
@@ -416,7 +416,7 @@ const{colors:colors,primitives:primitives}=require("@jscad/modeling"),version=re
|
|
|
416
416
|
},{"./package.json":80,"@jscad/modeling":216}],80:[function(require,module,exports){
|
|
417
417
|
module.exports={
|
|
418
418
|
"name": "@jscad/obj-deserializer",
|
|
419
|
-
"version": "2.0.
|
|
419
|
+
"version": "2.0.28",
|
|
420
420
|
"description": "OBJ Deserializer for JSCAD",
|
|
421
421
|
"homepage": "https://openjscad.xyz/",
|
|
422
422
|
"repository": "https://github.com/jscad/OpenJSCAD.org",
|
|
@@ -448,7 +448,7 @@ module.exports={
|
|
|
448
448
|
],
|
|
449
449
|
"license": "MIT",
|
|
450
450
|
"dependencies": {
|
|
451
|
-
"@jscad/modeling": "2.12.
|
|
451
|
+
"@jscad/modeling": "2.12.3"
|
|
452
452
|
},
|
|
453
453
|
"devDependencies": {
|
|
454
454
|
"ava": "3.15.0",
|
|
@@ -460,13 +460,13 @@ module.exports={
|
|
|
460
460
|
},{}],81:[function(require,module,exports){
|
|
461
461
|
const{colors:colors,geometries:geometries,modifiers:modifiers}=require("@jscad/modeling"),{flatten:flatten,toArray:toArray}=require("@jscad/array-utils"),mimeType="application/object",serialize=(e,...t)=>{e=Object.assign({},{statusCallback:null,triangulate:!0},e);let o=(t=flatten(t)).filter(e=>geometries.geom3.isA(e));if(0===o.length)throw new Error("only 3D geometries can be serialized to OBJ");t.length!==o.length&&console.warn("some objects could not be serialized to OBJ"),o=toArray(modifiers.generalize({snap:!0,triangulate:e.triangulate},o)),e.statusCallback&&e.statusCallback({progress:0});let r="# Wavefront OBJ file generated by JSCAD\n";const s=[];let a="default";return o.forEach((t,l)=>{e.statusCallback&&e.statusCallback({progress:100*l/o.length}),r+="\n";const i=getColorName(t),n=geometries.geom3.toPolygons(t).filter(e=>e.vertices.length>=3);n.forEach(e=>{e.vertices.forEach(e=>{const t=convertVertex(e);s.indexOf(t)<0&&(s.push(t),r+=`${t}\n`)})}),r+="\n",n.forEach(e=>{const t=e.vertices.map(e=>s.indexOf(convertVertex(e))+1),o=getColorName(e)||i||"default";o!==a&&(r+=`usemtl ${o}\n`,a=o),r+=`f ${t.join(" ")}\n`})}),e.statusCallback&&e.statusCallback({progress:100}),[r]},convertVertex=e=>`v ${e[0]} ${e[1]} ${e[2]}`,getColorName=e=>{let t;if(e.color){const o=e.color[0],r=e.color[1],s=e.color[2];let a=765;for(const e in colors.cssColors){const l=colors.cssColors[e],i=Math.abs(o-l[0])+Math.abs(r-l[1])+Math.abs(s-l[2]);if(i<a){if(t=e,0===i)break;a=i}}}return t};module.exports={serialize:serialize,mimeType:mimeType};
|
|
462
462
|
|
|
463
|
-
},{"@jscad/array-utils":
|
|
463
|
+
},{"@jscad/array-utils":532,"@jscad/modeling":216}],82:[function(require,module,exports){
|
|
464
464
|
const{maths:maths,primitives:primitives}=require("@jscad/modeling"),{BinaryReader:BinaryReader}=require("@jscad/io-utils"),packageVersion=require("./package.json").version,deserialize=(e,s)=>{const t={filename:"stl",version:packageVersion,addMetaData:!0,output:"script"};(e=Object.assign({},t,e))&&e.statusCallback&&e.statusCallback({progress:0});const{filename:r,version:a,output:n,addMetaData:o}=e;s=isBuffer(s)?bufferToBinaryString(s):s;const l=isDataBinaryRobust(s);e&&e.statusCallback&&e.statusCallback({progress:33});e&&e.statusCallback&&e.statusCallback({progress:66});const i=("script"===n?formatAsJscad:formatAsCsg)((l?deserializeBinarySTL:deserializeAsciiSTL)(s,r,a,"script"===n?({vertices:e,triangles:s,normals:t,colors:r,index:a})=>toScript(e,s,null,r,a):({vertices:e,triangles:s,normals:t,colors:r})=>toPolyhedron(e,s,null,r)),o,a,r);return e&&e.statusCallback&&e.statusCallback({progress:100}),i},bufferToBinaryString=e=>{let s="";const t=new Uint8Array(e),r=t.byteLength;for(let e=0;e<r;e++)s+=String.fromCharCode(t[e]);return s},isBuffer=e=>void 0!==e.byteLength&&"function"==typeof e.slice,ensureString=e=>{if("string"!=typeof e){const s=new Uint8Array(e);let t="";for(let r=0;r<e.byteLength;r++)t+=String.fromCharCode(s[r]);return t}return e},isDataBinaryRobust=e=>{const s=ensureString(e);return null===/vertex[\s]+([-+]?[0-9]+\.?[0-9]*([eE][-+]?[0-9]+)?)+[\s]+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)+[\s]+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)+/g.exec(s)},formatAsJscad=(e,s,t,r)=>{let a="";return s&&(a=`\n //\n // producer: JSCAD STL Deserializer ${t}\n // date: ${new Date}\n // source: ${r}\n // objects: ${e.length}\n //\n `),a+="const {primitives} = require('@jscad/modeling')\n",a+=e.join("\n"),a+=`\nconst main = () => {\n return [${e.map((e,s)=>`solid${s+1}()`)}]\n}\n\nmodule.exports = {main}\n`},formatAsCsg=e=>e,deserializeBinarySTL=(e,s,t,r)=>{const a=[],n=[],o=[],l=[];let i=0,c=0,u=null;const p=parseInt("01000000000000000",2),h=parseInt("00000000000011111",2),d=parseInt("00000001111100000",2),g=parseInt("00111110000000000",2),m=new BinaryReader(e);let f=0,v=0,b=0,S=0,F=0,y=0;for(let e=0;e<80;e++)switch(f){case 6:b=m.readUInt8(),f+=1;continue;case 7:S=m.readUInt8(),f+=1;continue;case 8:F=m.readUInt8(),f+=1;continue;case 9:y=m.readUInt8(),f+=1;continue;default:switch(v=m.readChar()){case"C":case"O":case"L":case"R":case"=":f+=1}}10===f&&(u=[b/255,S/255,F/255,y/255]);const C=m.readUInt32();for(let e=0;e<C;e++){const e=[];e.push(m.readFloat()),e.push(m.readFloat()),e.push(m.readFloat());let s=[];s.push(m.readFloat()),s.push(m.readFloat()),s.push(m.readFloat());const t=[];t.push(m.readFloat()),t.push(m.readFloat()),t.push(m.readFloat());let r=[];r.push(m.readFloat()),r.push(m.readFloat()),r.push(m.readFloat());let v=0;for(let a=0;a<3;a++)isNaN(s[a])&&v++,isNaN(t[a])&&v++,isNaN(r[a])&&v++,isNaN(e[a])&&v++;v>0&&console.log("bad triangle vertice coords/normal: ",v),c+=v;const b=[];b.push(i++),b.push(i++),b.push(i++);const S=m.readUInt16();let F=null;if(10===f){const e=(S&h)/31,s=((S&d)>>>5)/31,t=((S&g)>>>10)/31,r=255;F=0===(S&p)?[e,s,t,r]:u,l.push(F)}if(0===v){const a=maths.vec3.subtract(maths.vec3.create(),t,s),n=maths.vec3.subtract(maths.vec3.create(),r,s),o=maths.vec3.cross(maths.vec3.create(),a,n);if(maths.vec3.dot(e,o)>0){const e=r;r=s,s=e}}a.push(s),a.push(t),a.push(r),n.push(b),o.push(e)}return c&&console.warn(`WARNING: import errors: ${c} (some triangles might be misaligned or missing)`),[r({vertices:a,triangles:n,normals:o,colors:l,index:1})]},deserializeAsciiSTL=(e,s,t,r)=>{let a=0;const n=e.split("endsolid"),o=[];for(let s=1;s<n.length;s++){const t=/\bfacet[\s\S]*?endloop/gim,n=[],l=[],i=[],c=[];let u=0,p=0;const h=e.match(t);if(null!=h){for(let e=0;e<h.length;e++){const s=/\bfacet\s+normal\s+(\S+)\s+(\S+)\s+(\S+)\s+outer\s+loop\s+vertex\s+(\S+)\s+(\S+)\s+(\S+)\s+vertex\s+(\S+)\s+(\S+)\s+(\S+)\s+vertex\s+(\S+)\s+(\S+)\s+(\S+)\s*/gim.exec(h[e]);if(null==s)continue;if(13!==s.length){console.log("Failed to parse "+h[e]);break}let t=0;for(let e=0;e<s.length;e++)"NaN"===s[e]&&(console.log("bad normal or triangle vertice #"+a+" "+e+": '"+s[e]+"', skipped"),t++);if(p+=t,t)continue;let r=1;const o=[];o.push(parseFloat(s[r++])),o.push(parseFloat(s[r++])),o.push(parseFloat(s[r++]));let c=[];c.push(parseFloat(s[r++])),c.push(parseFloat(s[r++])),c.push(parseFloat(s[r++]));const d=[];d.push(parseFloat(s[r++])),d.push(parseFloat(s[r++])),d.push(parseFloat(s[r++]));let g=[];g.push(parseFloat(s[r++])),g.push(parseFloat(s[r++])),g.push(parseFloat(s[r++]));const m=[];if(m.push(u++),m.push(u++),m.push(u++),0===t){const e=maths.vec3.subtract(maths.vec3.create(),d,c),s=maths.vec3.subtract(maths.vec3.create(),g,c),t=maths.vec3.cross(maths.vec3.create(),e,s);if(maths.vec3.dot(o,t)>0){const e=g;g=c,c=e}}n.push(c),n.push(d),n.push(g),i.push(o),l.push(m),a++}p&&console.warn(`WARNING: import errors: ${p} (some triangles might be misaligned or missing)`),o.push(r({vertices:n,triangles:l,colors:c,index:s}))}}return o},toPolyhedron=(e,s,t,r)=>{r&&s.length!==r.length&&(r=void 0);const a={orientation:"inward",points:e,faces:s,colors:r};return primitives.polyhedron(a)},toScript=(e,s,t,r,a)=>{let n=`\n//\n// solid ${a} : ${e.length} points, ${s.length} faces, ${r.length} colors\n//\nconst solid${a} = () => {\n`;n+=" const points = [\n";for(let s=0;s<e.length;s++)n+=` [${e[s]}],\n`;n+=" ]\n",n+=" const faces = [\n";for(let e=0;e<s.length;e++)n+=` [${s[e]}],\n`;if(n+=" ]\n",r&&s.length===r.length){n+=" const colors = [\n";for(let e=0;e<r.length;e++)n+=` [${r[e]}],\n`;n+=" ]\n"}else n+=" const colors = null\n";return n+=" return primitives.polyhedron({points, faces, colors, orientation: 'inside'})\n}\n"},extension="stl";module.exports={deserialize:deserialize,extension:"stl"};
|
|
465
465
|
|
|
466
466
|
},{"./package.json":83,"@jscad/io-utils":70,"@jscad/modeling":216}],83:[function(require,module,exports){
|
|
467
467
|
module.exports={
|
|
468
468
|
"name": "@jscad/stl-deserializer",
|
|
469
|
-
"version": "2.1.
|
|
469
|
+
"version": "2.1.25",
|
|
470
470
|
"description": "STL Deserializer for JSCAD",
|
|
471
471
|
"homepage": "https://openjscad.xyz/",
|
|
472
472
|
"repository": "https://github.com/jscad/OpenJSCAD.org",
|
|
@@ -498,8 +498,8 @@ module.exports={
|
|
|
498
498
|
],
|
|
499
499
|
"license": "MIT",
|
|
500
500
|
"dependencies": {
|
|
501
|
-
"@jscad/io-utils": "2.0.
|
|
502
|
-
"@jscad/modeling": "2.12.
|
|
501
|
+
"@jscad/io-utils": "2.0.28",
|
|
502
|
+
"@jscad/modeling": "2.12.3"
|
|
503
503
|
},
|
|
504
504
|
"devDependencies": {
|
|
505
505
|
"ava": "3.15.0",
|
|
@@ -517,7 +517,7 @@ const{geometries:geometries}=require("@jscad/modeling"),serializeBinary=(e,r)=>{
|
|
|
517
517
|
},{"@jscad/modeling":216}],86:[function(require,module,exports){
|
|
518
518
|
const{geometries:geometries,modifiers:modifiers}=require("@jscad/modeling"),{flatten:flatten,toArray:toArray}=require("@jscad/array-utils"),{serializeBinary:serializeBinary}=require("./CSGToStlb"),{serializeText:serializeText}=require("./CSGToStla"),mimeType="application/sla",serialize=(e,...i)=>{e=Object.assign({},{binary:!0,statusCallback:null},e);let r=(i=flatten(i)).filter(e=>geometries.geom3.isA(e));if(0===r.length)throw new Error("only 3D geometries can be serialized to STL");return i.length!==r.length&&console.warn("some objects could not be serialized to STL"),r=toArray(modifiers.generalize({snap:!0,triangulate:!0},r)),e.binary?serializeBinary(r,e):serializeText(r,e)};module.exports={mimeType:mimeType,serialize:serialize};
|
|
519
519
|
|
|
520
|
-
},{"./CSGToStla":84,"./CSGToStlb":85,"@jscad/array-utils":
|
|
520
|
+
},{"./CSGToStla":84,"./CSGToStlb":85,"@jscad/array-utils":532,"@jscad/modeling":216}],87:[function(require,module,exports){
|
|
521
521
|
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CHAR="\t\n\r --�𐀀-",exports.S=" \t\r\n",exports.NAME_START_CHAR=":A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-⁰-Ⰰ-、-豈-﷏ﷰ-�𐀀-",exports.NAME_CHAR="-"+exports.NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",exports.CHAR_RE=new RegExp("^["+exports.CHAR+"]$","u"),exports.S_RE=new RegExp("^["+exports.S+"]+$","u"),exports.NAME_START_CHAR_RE=new RegExp("^["+exports.NAME_START_CHAR+"]$","u"),exports.NAME_CHAR_RE=new RegExp("^["+exports.NAME_CHAR+"]$","u"),exports.NAME_RE=new RegExp("^["+exports.NAME_START_CHAR+"]["+exports.NAME_CHAR+"]*$","u"),exports.NMTOKEN_RE=new RegExp("^["+exports.NAME_CHAR+"]+$","u");var TAB=9,NL=10,CR=13,SPACE=32;function isChar(e){return e>=SPACE&&e<=55295||e===NL||e===CR||e===TAB||e>=57344&&e<=65533||e>=65536&&e<=1114111}function isS(e){return e===SPACE||e===NL||e===CR||e===TAB}function isNameStartChar(e){return e>=65&&e<=90||e>=97&&e<=122||58===e||95===e||8204===e||8205===e||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=767||e>=880&&e<=893||e>=895&&e<=8191||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}function isNameChar(e){return isNameStartChar(e)||e>=48&&e<=57||45===e||46===e||183===e||e>=768&&e<=879||e>=8255&&e<=8256}exports.S_LIST=[SPACE,NL,CR,TAB],exports.isChar=isChar,exports.isS=isS,exports.isNameStartChar=isNameStartChar,exports.isNameChar=isNameChar;
|
|
522
522
|
|
|
523
523
|
},{}],88:[function(require,module,exports){
|
|
@@ -532,7 +532,7 @@ const{geometries:geometries,modifiers:modifiers}=require("@jscad/modeling"),{fla
|
|
|
532
532
|
},{"xmlchars/xml/1.0/ed5":87,"xmlchars/xml/1.1/ed2":88,"xmlchars/xmlns/1.0/ed3":89}],91:[function(require,module,exports){
|
|
533
533
|
module.exports={
|
|
534
534
|
"name": "@jscad/svg-deserializer",
|
|
535
|
-
"version": "2.5.
|
|
535
|
+
"version": "2.5.9",
|
|
536
536
|
"description": "SVG Deserializer for JSCAD",
|
|
537
537
|
"homepage": "https://openjscad.xyz/",
|
|
538
538
|
"repository": "https://github.com/jscad/OpenJSCAD.org",
|
|
@@ -565,7 +565,7 @@ module.exports={
|
|
|
565
565
|
"license": "MIT",
|
|
566
566
|
"dependencies": {
|
|
567
567
|
"@jscad/array-utils": "2.1.4",
|
|
568
|
-
"@jscad/modeling": "2.12.
|
|
568
|
+
"@jscad/modeling": "2.12.3",
|
|
569
569
|
"saxes": "5.0.1"
|
|
570
570
|
},
|
|
571
571
|
"devDependencies": {
|
|
@@ -584,7 +584,7 @@ const{inchMM:inchMM,ptMM:ptMM,pcMM:pcMM,svgColors:svgColors}=require("./constant
|
|
|
584
584
|
},{"./constants":92}],94:[function(require,module,exports){
|
|
585
585
|
const saxes=require("saxes"),{colors:colors,transforms:transforms}=require("@jscad/modeling"),{toArray:toArray}=require("@jscad/array-utils"),version=require("../package.json").version,{cagLengthX:cagLengthX,cagLengthY:cagLengthY,svgColorForTarget:svgColorForTarget}=require("./helpers"),{svgSvg:svgSvg,svgRect:svgRect,svgCircle:svgCircle,svgGroup:svgGroup,svgLine:svgLine,svgPath:svgPath,svgEllipse:svgEllipse,svgPolygon:svgPolygon,svgPolyline:svgPolyline,svgUse:svgUse}=require("./svgElementHelpers"),shapesMapGeometry=require("./shapesMapGeometry"),shapesMapJscad=require("./shapesMapJscad"),deserialize=(s,e)=>{const t={addMetaData:!0,filename:"svg",output:"script",pxPmm:require("./constants").pxPmm,segments:32,target:"path",pathSelfClosed:"error",version:version};return"script"===(s=Object.assign({},t,s)).output?translate(e,s):instantiate(e,s)},instantiate=(s,e)=>{const{pxPmm:t}=e;if(e&&e.statusCallback&&e.statusCallback({progress:0}),createSvgParser(s,t),!svgObj)throw new Error("SVG parsing failed, no valid SVG data retrieved");e&&e.statusCallback&&e.statusCallback({progress:50});const n=objectify(e,svgObj);return e&&e.statusCallback&&e.statusCallback({progress:100}),n},translate=(s,e)=>{const{filename:t,version:n,pxPmm:r,addMetaData:o}=e;if(e&&e.statusCallback&&e.statusCallback({progress:0}),createSvgParser(s,r),!svgObj)throw new Error("SVG parsing failed, no valid SVG data retrieved");let a=o?`//\n // producer: JSCAD SVG Deserializer ${n}\n // date: ${new Date}\n // source: ${t}\n //\n`:"";return a+="const { colors, geometries, primitives, transforms } = require('@jscad/modeling')\n\n",e&&e.statusCallback&&e.statusCallback({progress:50}),a+=codify(e,svgObj),a+="\nmodule.exports = { main }",e&&e.statusCallback&&e.statusCallback({progress:100}),a};let svgUnitsX,svgUnitsY,svgUnitsV;const svgObjects=[],svgGroups=[],svgDefs=[];let svgObj,svgInDefs=!1,svgUnitsPmm=[1,1];const objectify=(s,e)=>{const{target:t,segments:n,pathSelfClosed:r}=s,o=svgGroups.length;svgGroups.push(e);let a=o;for(;a>0;)a--;let g=[];const l={svgUnitsPmm:svgUnitsPmm,svgUnitsX:svgUnitsX,svgUnitsY:svgUnitsY,svgUnitsV:svgUnitsV,level:o,target:t,svgGroups:svgGroups,segments:n,pathSelfClosed:r};for(a=0;a<e.objects.length;a++){const s=e.objects[a];let n=toArray(shapesMapGeometry(s,objectify,l));n=n.map(e=>{if("transforms"in s){let t=null,n=null,r=null;for(let e=0;e<s.transforms.length;e++){const o=s.transforms[e];"rotate"in o&&(t=o),"scale"in o&&(n=o),"translate"in o&&(r=o)}if(null!==n){let s=Math.abs(n.scale[0]),t=Math.abs(n.scale[1]);e=transforms.scale([s,t,1],e),s=n.scale[0],t=n.scale[1],s<0&&(e=transforms.mirrorX(e)),t<0&&(e=transforms.mirrorY(e))}if(null!==t){const s=0-.017453292519943295*t.rotate;e=transforms.rotateZ(s,e)}if(null!==r){const s=cagLengthX(r.translate[0],svgUnitsPmm,svgUnitsX),t=0-cagLengthY(r.translate[1],svgUnitsPmm,svgUnitsY);e=transforms.translate([s,t,0],e)}}const n=svgColorForTarget(t,s);return n&&(e=colors.colorize(n,e)),e}),g=g.concat(n)}return svgGroups.pop(),g},codify=(s,e)=>{const{target:t,segments:n}=s,r=svgGroups.length;svgGroups.push(e);let o=" ",a=r;for(;a>0;)o+=" ",a--;let g="";0===r&&(g+="function main(params) {\n let levels = {}\n let paths = {}\n let parts\n");const l="levels.l"+r;for(g+=`${o}${l} = []\n`,a=0;a<e.objects.length;a++){const s=e.objects[a],i="paths.p"+a;if(g+=shapesMapJscad(s,codify,{level:r,indent:o,ln:l,on:i,svgUnitsPmm:svgUnitsPmm,svgUnitsX:svgUnitsX,svgUnitsY:svgUnitsY,svgUnitsV:svgUnitsV,svgGroups:svgGroups,target:t,segments:n}),"transforms"in s){let e=null,t=null,n=null;for(let r=0;r<s.transforms.length;r++){const o=s.transforms[r];"rotate"in o&&(e=o),"scale"in o&&(t=o),"translate"in o&&(n=o)}if(null!==t){let s=Math.abs(t.scale[0]),e=Math.abs(t.scale[1]);g+=`${o}${i} = transforms.scale([${s}, ${e}, 1], ${i})\n`,(s=t.scale[0])<0&&(g+=`${o}${i} = transforms.mirrorX(${i})\n`),(e=t.scale[1])<0&&(g+=`${o}${i} = transforms.mirrorY(${i})\n`)}if(null!==e){g+=`${o}${i} = transforms.rotateZ(${0-.017453292519943295*e.rotate}, ${i})\n`}if(null!==n){g+=`${o}${i} = transforms.translate([${cagLengthX(n.translate[0],svgUnitsPmm,svgUnitsX)}, ${0-cagLengthY(n.translate[1],svgUnitsPmm,svgUnitsY)}, 0], ${i})\n`}}const v=svgColorForTarget(t,s);v&&(g+=`${o}${i} = colors.colorize([${v}], ${i})\n`),g+=`${o}${l} = ${l}.concat(${i})\n\n`}return 0===r&&(g+=o+"return "+l+"\n",g+="}\n"),svgGroups.pop(),g},createSvgParser=(s,e)=>{const t=new saxes.SaxesParser;return void 0!==e&&e>t.pxPmm&&(t.pxPmm=e),t.on("error",s=>{console.log(`ERROR: SVG file, line ${t.line}, column ${t.column}`),console.log(s)}),t.on("opentag",s=>{const n={SVG:svgSvg,G:svgGroup,RECT:svgRect,CIRCLE:svgCircle,ELLIPSE:svgEllipse,LINE:svgLine,POLYLINE:svgPolyline,POLYGON:svgPolygon,PATH:svgPath,USE:svgUse,DEFS:()=>{svgInDefs=!0},DESC:()=>void 0,TITLE:()=>void 0,STYLE:()=>void 0,undefined:()=>console.log("WARNING: unsupported SVG element: "+s.name)};s.attributes.position=[t.line+1,t.column+1];const r=s.name.toUpperCase(),o=n[r]?n[r](s.attributes,{svgObjects:svgObjects,customPxPmm:e}):void 0;if(o)if("id"in o&&(svgObjects[o.id]=o),"svg"===o.type)svgGroups.push(o),svgUnitsPmm=o.unitsPmm,svgUnitsX=o.viewW,svgUnitsY=o.viewH,svgUnitsV=o.viewP;else if(!0===svgInDefs){if(svgDefs.length>0){const s=svgDefs.pop();"objects"in s&&s.objects.push(o),svgDefs.push(s)}"group"===o.type&&svgDefs.push(o)}else{if(svgGroups.length>0){const s=svgGroups.pop();"objects"in s&&s.objects.push(o),svgGroups.push(s)}"group"===o.type&&svgGroups.push(o)}}),t.on("closetag",s=>{const e=()=>!0===svgInDefs?svgDefs.pop():svgGroups.pop(),t={SVG:e,DEFS:()=>{svgInDefs=!1},USE:e,G:e,undefined:()=>{}},n=s.name.toUpperCase(),r=t[n]?t[n]():void 0;0===svgGroups.length&&(svgObj=r)}),t.on("end",()=>{}),t.write(s).close(),t},extension="svg";module.exports={deserialize:deserialize,extension:"svg"};
|
|
586
586
|
|
|
587
|
-
},{"../package.json":91,"./constants":92,"./helpers":93,"./shapesMapGeometry":95,"./shapesMapJscad":96,"./svgElementHelpers":97,"@jscad/array-utils":
|
|
587
|
+
},{"../package.json":91,"./constants":92,"./helpers":93,"./shapesMapGeometry":95,"./shapesMapJscad":96,"./svgElementHelpers":97,"@jscad/array-utils":532,"@jscad/modeling":216,"saxes":90}],95:[function(require,module,exports){
|
|
588
588
|
const{geometries:geometries,primitives:primitives}=require("@jscad/modeling"),{svg2cag:svg2cag,cagLengthX:cagLengthX,cagLengthY:cagLengthY,cagLengthP:cagLengthP,reflect:reflect}=require("./helpers"),shapesMapGeometry=(e,t,s)=>{const{svgUnitsPmm:a,svgUnitsX:o,svgUnitsY:r,svgUnitsV:n,svgGroups:g,target:c,segments:p,pathSelfClosed:i}=s;return{group:e=>t({target:c,segments:p},e),rect:(e,t,s,a,o,r,n)=>{let g=cagLengthX(e.x,t,s),p=0-cagLengthY(e.y,t,a);const i=cagLengthX(e.width,t,s),l=cagLengthY(e.height,t,a),h=cagLengthX(e.rx,t,s);let m;return i>0&&l>0&&(g+=i/2,p-=l/2,m=0===h?primitives.rectangle({center:[g,p],size:[i,l]}):primitives.roundedRectangle({center:[g,p],segments:n,size:[i,l],roundRadius:h}),"path"===c&&(m=geometries.path2.fromPoints({closed:!0},geometries.geom2.toPoints(m)))),m},circle:(e,t,s,a,o,r,n)=>{const g=cagLengthX(e.x,t,s),p=0-cagLengthY(e.y,t,a),i=cagLengthP(e.radius,t,o);let l;return i>0&&(l=primitives.circle({center:[g,p],segments:n,radius:i}),"path"===c&&(l=geometries.path2.fromPoints({closed:!0},geometries.geom2.toPoints(l)))),l},ellipse:(e,t,s,a,o,r,n)=>{const g=cagLengthX(e.rx,t,s),p=cagLengthY(e.ry,t,a),i=cagLengthX(e.cx,t,s),l=0-cagLengthY(e.cy,t,a);let h;return g>0&&p>0&&(h=primitives.ellipse({center:[i,l],segments:n,radius:[g,p]}),"path"===c&&(h=geometries.path2.fromPoints({closed:!0},geometries.geom2.toPoints(h)))),h},line:(e,t,s,a,o)=>{const r=cagLengthX(e.x1,t,s),n=0-cagLengthY(e.y1,t,a),g=cagLengthX(e.x2,t,s),c=0-cagLengthY(e.y2,t,a);return primitives.line([[r,n],[g,c]])},polygon:(e,t,s,a)=>{const o=[];for(let r=0;r<e.points.length;r++){const n=e.points[r];if("x"in n&&"y"in n){const e=cagLengthX(n.x,t,s),r=0-cagLengthY(n.y,t,a);o.push([e,r])}}return"geom2"===c?geometries.geom2.fromPoints(o):geometries.path2.fromPoints({},o)},polyline:(e,t,s,a,o)=>{const r=[];for(let o=0;o<e.points.length;o++){const n=e.points[o];if("x"in n&&"y"in n){const e=cagLengthX(n.x,t,s),o=0-cagLengthY(n.y,t,a);r.push([e,o])}}return primitives.line(r)},path:(e,t,s,a,o,r,n)=>{const g=expandPath(e,t,s,a,o,r,n,i);return Object.entries(g).sort((e,t)=>e[0].localeCompare(t[0])).map(e=>{const t=e[1];if("geom2"===c&&t.isClosed){const e=geometries.path2.toPoints(t).slice();return e.push(e[0]),geometries.geom2.fromPoints(e)}return t})}}[e.type](e,a,o,r,n,g,p)};module.exports=shapesMapGeometry;const appendPoints=(e,t)=>t?geometries.path2.appendPoints(e,t):geometries.path2.fromPoints({},e),expandPath=(e,t,s,a,o,r,n,g)=>{const c={};let p=0,i=0,l=0,h=0,m=0,F="path"+m,v=!1,d=0,f=0,P=0,u=0;const L=()=>{F="path"+ ++m,v=!1},k=()=>{c[F]||(c[F]=geometries.path2.fromPoints({},[]))};for(let s=0;s<e.commands.length;s++){const a=e.commands[s],o=a.p;let r=0;switch(a.c){case"m":for(0===s&&(l=0,h=0),o.length>=r+2&&(l+=parseFloat(o[r++]),h+=parseFloat(o[r++]),L(),c[F]=appendPoints([svg2cag([l,h],t)]),p=l,i=h);o.length>=r+2;)l+=parseFloat(o[r++]),h+=parseFloat(o[r++]),c[F]=appendPoints([svg2cag([l,h],t)],c[F]);break;case"M":for(o.length>=r+2&&(l=parseFloat(o[r++]),h=parseFloat(o[r++]),L(),c[F]=appendPoints([svg2cag([l,h],t)]),p=l,i=h);o.length>=r+2;)l=parseFloat(o[r++]),h=parseFloat(o[r++]),c[F]=appendPoints([svg2cag([l,h],t)],c[F]);break;case"a":for(;o.length>=r+7;){const e=parseFloat(o[r++]),s=parseFloat(o[r++]),a=0-.017453292519943295*parseFloat(o[r++]),g="1"===o[r++],p="1"===o[r++];l+=parseFloat(o[r++]),h+=parseFloat(o[r++]),k(),c[F]=geometries.path2.appendArc({segments:n,endpoint:svg2cag([l,h],t),radius:svg2cag([e,s],t),xaxisrotation:a,clockwise:p,large:g},c[F])}break;case"A":for(;o.length>=r+7;){const e=parseFloat(o[r++]),s=parseFloat(o[r++]),a=0-.017453292519943295*parseFloat(o[r++]),g="1"===o[r++],p="1"===o[r++];l=parseFloat(o[r++]),h=parseFloat(o[r++]),k(),c[F]=geometries.path2.appendArc({segments:n,endpoint:svg2cag([l,h],t),radius:svg2cag([e,s],t),xaxisrotation:a,clockwise:p,large:g},c[F])}break;case"c":for(;o.length>=r+6;){const e=l+parseFloat(o[r++]),s=h+parseFloat(o[r++]);d=l+parseFloat(o[r++]),f=h+parseFloat(o[r++]),l+=parseFloat(o[r++]),h+=parseFloat(o[r++]),k(),c[F]=geometries.path2.appendBezier({segments:n,controlPoints:[svg2cag([e,s],t),svg2cag([d,f],t),svg2cag([l,h],t)]},c[F]);const a=reflect(d,f,l,h);d=a[0],f=a[1]}break;case"C":for(;o.length>=r+6;){const e=parseFloat(o[r++]),s=parseFloat(o[r++]);d=parseFloat(o[r++]),f=parseFloat(o[r++]),l=parseFloat(o[r++]),h=parseFloat(o[r++]),k(),c[F]=geometries.path2.appendBezier({segments:n,controlPoints:[svg2cag([e,s],t),svg2cag([d,f],t),svg2cag([l,h],t)]},c[F]);const a=reflect(d,f,l,h);d=a[0],f=a[1]}break;case"q":for(;o.length>=r+4;){const e=[l,h];P=l+parseFloat(o[r++]),u=h+parseFloat(o[r++]),l+=parseFloat(o[r++]),h+=parseFloat(o[r++]);const s=[e[0]+2/3*(P-e[0]),e[1]+2/3*(u-e[1])],a=[s[0]+1/3*(l-e[0]),s[1]+1/3*(h-e[1])];k(),c[F]=geometries.path2.appendBezier({segments:n,controlPoints:[svg2cag(s,t),svg2cag(a,t),svg2cag([l,h],t)]},c[F]);const g=reflect(P,u,l,h);P=g[0],u=g[1]}break;case"Q":for(;o.length>=r+4;){const e=[l,h];P=parseFloat(o[r++]),u=parseFloat(o[r++]),l=parseFloat(o[r++]),h=parseFloat(o[r++]);const s=[e[0]+2/3*(P-e[0]),e[1]+2/3*(u-e[1])],a=[s[0]+1/3*(l-e[0]),s[1]+1/3*(h-e[1])];k(),c[F]=geometries.path2.appendBezier({segments:n,controlPoints:[svg2cag(s,t),svg2cag(a,t),svg2cag([l,h],t)]},c[F]);const g=reflect(P,u,l,h);P=g[0],u=g[1]}break;case"t":for(;o.length>=r+2;){const e=[l,h];l+=parseFloat(o[r++]),h+=parseFloat(o[r++]);const s=[e[0]+2/3*(P-e[0]),e[1]+2/3*(u-e[1])],a=[s[0]+1/3*(l-e[0]),s[1]+1/3*(h-e[1])];k(),c[F]=geometries.path2.appendBezier({segments:n,controlPoints:[svg2cag(s,t),svg2cag(a,t),svg2cag([l,h],t)]},c[F]);const g=reflect(P,u,l,h);P=g[0],u=g[1]}break;case"T":for(;o.length>=r+2;){const e=[l,h];l=parseFloat(o[r++]),h=parseFloat(o[r++]);const s=[e[0]+2/3*(P-e[0]),e[1]+2/3*(u-e[1])],a=[s[0]+1/3*(l-e[0]),s[1]+1/3*(h-e[1])];k(),c[F]=geometries.path2.appendBezier({segments:n,controlPoints:[svg2cag(s,t),svg2cag(a,t),svg2cag([l,h],t)]},c[F]);const g=reflect(P,u,l,h);P=g[0],u=g[1]}break;case"s":for(;o.length>=r+4;){const e=d,s=f;d=l+parseFloat(o[r++]),f=h+parseFloat(o[r++]),l+=parseFloat(o[r++]),h+=parseFloat(o[r++]),k(),c[F]=geometries.path2.appendBezier({segments:n,controlPoints:[svg2cag([e,s],t),svg2cag([d,f],t),svg2cag([l,h],t)]},c[F]);const a=reflect(d,f,l,h);d=a[0],f=a[1]}break;case"S":for(;o.length>=r+4;){const e=d,s=f;d=parseFloat(o[r++]),f=parseFloat(o[r++]),l=parseFloat(o[r++]),h=parseFloat(o[r++]),k(),c[F]=geometries.path2.appendBezier({segments:n,controlPoints:[svg2cag([e,s],t),svg2cag([d,f],t),svg2cag([l,h],t)]},c[F]);const a=reflect(d,f,l,h);d=a[0],f=a[1]}break;case"h":for(;o.length>=r+1;)l+=parseFloat(o[r++]),c[F]=appendPoints([svg2cag([l,h],t)],c[F]);break;case"H":for(;o.length>=r+1;)l=parseFloat(o[r++]),c[F]=appendPoints([svg2cag([l,h],t)],c[F]);break;case"l":for(;o.length>=r+2;)l+=parseFloat(o[r++]),h+=parseFloat(o[r++]),c[F]=appendPoints([svg2cag([l,h],t)],c[F]);break;case"L":for(;o.length>=r+2;)l=parseFloat(o[r++]),h=parseFloat(o[r++]),c[F]=appendPoints([svg2cag([l,h],t)],c[F]);break;case"v":for(;o.length>=r+1;)h+=parseFloat(o[r++]),c[F]=appendPoints([svg2cag([l,h],t)],c[F]);break;case"V":for(;o.length>=r+1;)h=parseFloat(o[r++]),c[F]=appendPoints([svg2cag([l,h],t)],c[F]);break;case"z":case"Z":c[F]=geometries.path2.close(c[F]),l=p,h=i,v=!0;break;default:console.log("Warning: Unknow PATH command ["+a.c+"]")}const m=e=>"z"===e||"Z"===e;if(!0!==v&&c[F]&&c[F].isClosed){let t=e.commands[s+1];if(t&&!m(t.c))if("trim"===g)for(;t&&!m(t.c);)s++,t=e.commands[s+1];else{if("split"!==g)throw new Error(`Malformed svg path at ${e.position[0]}:${a.pos}. Path closed itself with command #${s} ${a.c}${o.join(" ")}`);L()}}}return c};
|
|
589
589
|
|
|
590
590
|
},{"./helpers":93,"@jscad/modeling":216}],96:[function(require,module,exports){
|
|
@@ -602,7 +602,7 @@ const{geometries:geometries,maths:maths,measurements:measurements,utils:utils}=r
|
|
|
602
602
|
},{}],100:[function(require,module,exports){
|
|
603
603
|
module.exports={
|
|
604
604
|
"name": "@jscad/svg-serializer",
|
|
605
|
-
"version": "2.3.
|
|
605
|
+
"version": "2.3.16",
|
|
606
606
|
"description": "SVG Serializer for JSCAD",
|
|
607
607
|
"homepage": "https://openjscad.xyz/",
|
|
608
608
|
"repository": "https://github.com/jscad/OpenJSCAD.org",
|
|
@@ -634,7 +634,7 @@ module.exports={
|
|
|
634
634
|
],
|
|
635
635
|
"license": "MIT",
|
|
636
636
|
"dependencies": {
|
|
637
|
-
"@jscad/modeling": "2.12.
|
|
637
|
+
"@jscad/modeling": "2.12.3",
|
|
638
638
|
"onml": "1.3.0"
|
|
639
639
|
},
|
|
640
640
|
"devDependencies": {
|
|
@@ -659,7 +659,7 @@ module.exports={
|
|
|
659
659
|
},{"xmlchars/xml/1.0/ed5":101,"xmlchars/xml/1.1/ed2":102,"xmlchars/xmlns/1.0/ed3":103}],105:[function(require,module,exports){
|
|
660
660
|
module.exports={
|
|
661
661
|
"name": "@jscad/x3d-deserializer",
|
|
662
|
-
"version": "2.2.
|
|
662
|
+
"version": "2.2.8",
|
|
663
663
|
"description": "X3D Deserializer for JSCAD",
|
|
664
664
|
"repository": "https://github.com/jscad/OpenJSCAD.org/",
|
|
665
665
|
"main": "src/index.js",
|
|
@@ -686,7 +686,7 @@ module.exports={
|
|
|
686
686
|
},
|
|
687
687
|
"dependencies": {
|
|
688
688
|
"@jscad/array-utils": "2.1.4",
|
|
689
|
-
"@jscad/modeling": "2.12.
|
|
689
|
+
"@jscad/modeling": "2.12.3",
|
|
690
690
|
"saxes": "5.0.1"
|
|
691
691
|
},
|
|
692
692
|
"devDependencies": {
|
|
@@ -710,7 +710,7 @@ const version=require("../package.json").version,translate=require("./translate"
|
|
|
710
710
|
},{"../package.json":105,"./instantiate":110,"./translate":117}],110:[function(require,module,exports){
|
|
711
711
|
const{flatten:flatten}=require("@jscad/array-utils"),parse=require("./parse"),instantiateDefinitions=require("./instantiateDefinitions"),{x3dTypes:x3dTypes}=require("./objects"),instantiate=(t,e)=>{const s={pxPmm:require("./constants").pxPmm};t=Object.assign({},s,t);const{pxPmm:a}=t;t&&t.statusCallback&&t.statusCallback({progress:0});const{x3dObj:n}=parse(e,a);if(n.definition!==x3dTypes.X3D||!n.objects)throw new Error("X3D malformed");if(n.objects.length<1||n.objects[0].definition!==x3dTypes.SCENE)throw new Error("X3D did not define a SCENE");t&&t.statusCallback&&t.statusCallback({progress:50});const i=n.objects[0].objects;let r=instantiateDefinitions(t,i);return t.flatten&&(r=flatten(r)),t&&t.statusCallback&&t.statusCallback({progress:100}),r};module.exports=instantiate;
|
|
712
712
|
|
|
713
|
-
},{"./constants":106,"./instantiateDefinitions":111,"./objects":115,"./parse":116,"@jscad/array-utils":
|
|
713
|
+
},{"./constants":106,"./instantiateDefinitions":111,"./objects":115,"./parse":116,"@jscad/array-utils":532}],111:[function(require,module,exports){
|
|
714
714
|
const{colors:colors,transforms:transforms}=require("@jscad/modeling"),createTransform=require("./createTransform"),{x3dTypes:x3dTypes}=require("./objects"),{findColor:findColor}=require("./translateHelpers"),instantiatePrimitive=require("./instantiatePrimitive"),{instantiateLine:instantiateLine}=require("./instantiateLine"),{instantiateMesh:instantiateMesh}=require("./instantiateMesh"),instantiatedList=new Map,instantiateTransform=(t,n)=>{const i=n.objects.map(n=>instantiateDefinition(t,n)).filter(t=>null!=t);if(0===i.length)return null;const e=createTransform(n.center,n.rotation,n.scale,n.scaleOrientation,n.translation);return i.map(t=>{const n=t.color;return t=transforms.transform(e,t),n&&(t.color=n),t})},instantiateShape=(t,n)=>{const i=n.objects,e=findColor(i,t);let a=instantiatePrimitive(t,i);return a||(a=instantiateMesh(t,i)),a||(a=instantiateLine(t,i)),a||(a=null),a&&e&&(a=colors.colorize(e,a)),a},instantiateGroup=(t,n)=>{const i=n.objects.map(n=>instantiateDefinition(t,n)).filter(t=>null!=t);return 0===i.length?null:i},instantiateDefinition=(t,n)=>{let i;switch(n.definition){case x3dTypes.TRANSFORM:i=instantiateTransform(t,n);break;case x3dTypes.SHAPE:i=instantiateShape(t,n);break;case x3dTypes.GROUP:i=instantiateGroup(t,n);break;default:console.log("WARNING: unknown definition: "+n.definition)}return i},instantiateDefinitions=(t,n)=>{const i=n.map(n=>instantiateDefinition(t,n)).filter(t=>null!=t);return instantiatedList.clear(),i};module.exports=instantiateDefinitions;
|
|
715
715
|
|
|
716
716
|
},{"./createTransform":107,"./instantiateLine":112,"./instantiateMesh":113,"./instantiatePrimitive":114,"./objects":115,"./translateHelpers":119,"@jscad/modeling":216}],112:[function(require,module,exports){
|
|
@@ -752,13 +752,13 @@ const{geometries:geometries}=require("@jscad/modeling"),{geom3:geom3,poly3:poly3
|
|
|
752
752
|
},{}],124:[function(require,module,exports){
|
|
753
753
|
const{geometries:geometries,modifiers:modifiers}=require("@jscad/modeling"),{geom2:geom2,geom3:geom3,path2:path2,poly2:poly2,poly3:poly3}=geometries,{flatten:flatten}=require("@jscad/array-utils"),stringify=require("onml/lib/stringify"),mimeType="model/x3d+xml",defNames=new Map,serialize=(e,...o)=>{if(e=Object.assign({},{color:[0,0,1,1],shininess:8/256,smooth:!1,decimals:1e3,metadata:!0,unit:"millimeter",statusCallback:null},e),0===(o=(o=flatten(o)).filter(e=>geom3.isA(e)||geom2.isA(e)||path2.isA(e))).length)throw new Error("expected one or more geom3/geom2/path2 objects");e.statusCallback&&e.statusCallback({progress:0});let t=["X3D",{profile:"Interchange",version:"3.3","xmlns:xsd":"http://www.w3.org/2001/XMLSchema-instance","xsd:noNamespaceSchemaLocation":"http://www.web3d.org/specifications/x3d-3.3.xsd"}];e.metadata?t.push(["head",{},["meta",{name:"creator",content:"Created by JSCAD"}],["meta",{name:"reference",content:"https://www.openjscad.xyz"}],["meta",{name:"created",content:(new Date).toISOString()}]]):t.push(["head",{},["meta",{name:"creator",content:"Created by JSCAD"}]]),t=t.concat(convertObjects(o,e));const r=`<?xml version="1.0" encoding="UTF-8"?>\n${stringify(t,2)}`;return e&&e.statusCallback&&e.statusCallback({progress:100}),[r]},convertObjects=(e,o)=>{const t=[];return e.forEach((r,s)=>{if(o.statusCallback&&o.statusCallback({progress:100*s/e.length}),geom3.isA(r)){r=modifiers.generalize({snap:!0,triangulate:!0},r),geom3.toPolygons(r).length>0&&t.push(convertGeom3(r,o))}geom2.isA(r)&&t.push(convertGeom2(r,o)),path2.isA(r)&&t.push(convertPath2(r,o))}),[["Scene",{},["Transform",{rotation:"1 0 0 -1.5708"},...t]]]},convertPath2=(e,o)=>{const t=path2.toPoints(e).slice();t.length>1&&e.isClosed&&t.push(t[0]);const r=["Shape",shapeAttributes(e),convertPolyline2D(poly2.create(t),o)];return e.color&&r.push(convertAppearance(e,"emissiveColor",o)),r},convertGeom2=(e,o)=>{const t=geom2.toOutlines(e),r=["Group",{}];return t.forEach(t=>{t.length>1&&t.push(t[0]);const s=["Shape",shapeAttributes(e),convertPolyline2D(poly2.create(t),o)];e.color&&s.push(convertAppearance(e,"emissiveColor",o)),r.push(s)}),r},shapeAttributes=(e,o={})=>(e.id&&Object.assign(o,{DEF:checkDefName(e.id)}),o),checkDefName=e=>{const o=defNames.get(e)||0;return defNames.set(e,o+1),o>0&&console.warn(`Warning: object.id set as DEF but not unique. ${e} set ${o+1} times.`),e},convertPolyline2D=(e,o)=>{return["Polyline2D",{lineSegments:e.vertices.map(e=>`${e[0]} ${e[1]}`).join(" ")}]},convertAppearance=(e,o,t)=>{const r={[o]:e.color.slice(0,3).join(" "),transparency:roundToDecimals(1-e.color[3],t)};return"diffuseColor"===o&&Object.assign(r,{specularColor:"0.2 0.2 0.2",shininess:t.shininess}),["Appearance",["Material",r]]},convertGeom3=(e,o)=>{const t=["Shape",shapeAttributes(e),convertMesh(e,o)];let r=["Appearance",{},["Material"]];return e.color&&(r=convertAppearance(e,"diffuseColor",o)),t.push(r),t},convertMesh=(e,o)=>{const t=convertToTriangles(e,o),r=polygons2coordinates(t,o),s=r[0].join(" "),n=r[1].join(" "),a=r[2].join(" "),c=["IndexedTriangleSet",{ccw:"true",colorPerVertex:"false",normalPerVertex:o.smooth,solid:"false",index:s},["Coordinate",{point:n}]];return e.color||c.push(["Color",{color:a}]),c},convertToTriangles=(e,o)=>{const t=[];return geom3.toPolygons(e).forEach(r=>{const s=r.vertices[0];for(let n=r.vertices.length-3;n>=0;n--){const a=poly3.fromPoints([s,r.vertices[n+1],r.vertices[n+2]]);let c=o.color;e.color&&(c=e.color),r.color&&(c=r.color),a.color=c,t.push(a)}}),t},convertToColor=(e,o)=>{let t=o.color;return e.color&&(t=e.color),`${t[0]} ${t[1]} ${t[2]}`},roundToDecimals=(e,o)=>Math.round(e*o.decimals)/o.decimals,polygons2coordinates=(e,o)=>{const t=[],r=[],s=[],n=new Map;return e.forEach(e=>{const a=[],c=e.vertices.length;for(let t=0;t<c;t++){const s=e.vertices[t],c=`${s[0]},${s[1]},${s[2]}`;if(!n.has(c)){const e=roundToDecimals(s[0],o),t=roundToDecimals(s[1],o),a=roundToDecimals(s[2],o);r.push(`${e} ${t} ${a}`),n.set(c,r.length-1)}a.push(n.get(c))}t.push(a.join(" ")),s.push(convertToColor(e,o))}),n.clear(),[t,r,s]};module.exports={serialize:serialize,mimeType:mimeType};
|
|
754
754
|
|
|
755
|
-
},{"@jscad/array-utils":
|
|
755
|
+
},{"@jscad/array-utils":532,"@jscad/modeling":216,"onml/lib/stringify":123}],125:[function(require,module,exports){
|
|
756
756
|
const cssColors=require("./cssColors"),colorNameToRgb=o=>cssColors[o.toLowerCase()];module.exports=colorNameToRgb;
|
|
757
757
|
|
|
758
758
|
},{"./cssColors":127}],126:[function(require,module,exports){
|
|
759
759
|
const flatten=require("../utils/flatten"),geom2=require("../geometries/geom2"),geom3=require("../geometries/geom3"),path2=require("../geometries/path2"),poly3=require("../geometries/poly3"),colorGeom2=(o,r)=>{const e=geom2.clone(r);return e.color=o,e},colorGeom3=(o,r)=>{const e=geom3.clone(r);return e.color=o,e},colorPath2=(o,r)=>{const e=path2.clone(r);return e.color=o,e},colorPoly3=(o,r)=>{const e=poly3.clone(r);return e.color=o,e},colorize=(o,...r)=>{if(!Array.isArray(o))throw new Error("color must be an array");if(o.length<3)throw new Error("color must contain R, G and B values");if(3===o.length&&(o=[o[0],o[1],o[2],1]),0===(r=flatten(r)).length)throw new Error("wrong number of arguments");const e=r.map(r=>geom2.isA(r)?colorGeom2(o,r):geom3.isA(r)?colorGeom3(o,r):path2.isA(r)?colorPath2(o,r):poly3.isA(r)?colorPoly3(o,r):(r.color=o,r));return 1===e.length?e[0]:e};module.exports=colorize;
|
|
760
760
|
|
|
761
|
-
},{"../geometries/geom2":149,"../geometries/geom3":165,"../geometries/path2":186,"../geometries/poly3":203,"../utils/flatten":
|
|
761
|
+
},{"../geometries/geom2":149,"../geometries/geom3":165,"../geometries/path2":186,"../geometries/poly3":203,"../utils/flatten":522}],127:[function(require,module,exports){
|
|
762
762
|
const cssColors={black:[0,0,0],silver:[192/255,192/255,192/255],gray:[128/255,128/255,128/255],white:[1,1,1],maroon:[128/255,0,0],red:[1,0,0],purple:[128/255,0,128/255],fuchsia:[1,0,1],green:[0,128/255,0],lime:[0,1,0],olive:[128/255,128/255,0],yellow:[1,1,0],navy:[0,0,128/255],blue:[0,0,1],teal:[0,128/255,128/255],aqua:[0,1,1],aliceblue:[240/255,248/255,1],antiquewhite:[250/255,235/255,215/255],aquamarine:[127/255,1,212/255],azure:[240/255,1,1],beige:[245/255,245/255,220/255],bisque:[1,228/255,196/255],blanchedalmond:[1,235/255,205/255],blueviolet:[138/255,43/255,226/255],brown:[165/255,42/255,42/255],burlywood:[222/255,184/255,135/255],cadetblue:[95/255,158/255,160/255],chartreuse:[127/255,1,0],chocolate:[210/255,105/255,30/255],coral:[1,127/255,80/255],cornflowerblue:[100/255,149/255,237/255],cornsilk:[1,248/255,220/255],crimson:[220/255,20/255,60/255],cyan:[0,1,1],darkblue:[0,0,139/255],darkcyan:[0,139/255,139/255],darkgoldenrod:[184/255,134/255,11/255],darkgray:[169/255,169/255,169/255],darkgreen:[0,100/255,0],darkgrey:[169/255,169/255,169/255],darkkhaki:[189/255,183/255,107/255],darkmagenta:[139/255,0,139/255],darkolivegreen:[85/255,107/255,47/255],darkorange:[1,140/255,0],darkorchid:[.6,50/255,.8],darkred:[139/255,0,0],darksalmon:[233/255,150/255,122/255],darkseagreen:[143/255,188/255,143/255],darkslateblue:[72/255,61/255,139/255],darkslategray:[47/255,79/255,79/255],darkslategrey:[47/255,79/255,79/255],darkturquoise:[0,206/255,209/255],darkviolet:[148/255,0,211/255],deeppink:[1,20/255,147/255],deepskyblue:[0,191/255,1],dimgray:[105/255,105/255,105/255],dimgrey:[105/255,105/255,105/255],dodgerblue:[30/255,144/255,1],firebrick:[178/255,34/255,34/255],floralwhite:[1,250/255,240/255],forestgreen:[34/255,139/255,34/255],gainsboro:[220/255,220/255,220/255],ghostwhite:[248/255,248/255,1],gold:[1,215/255,0],goldenrod:[218/255,165/255,32/255],greenyellow:[173/255,1,47/255],grey:[128/255,128/255,128/255],honeydew:[240/255,1,240/255],hotpink:[1,105/255,180/255],indianred:[205/255,92/255,92/255],indigo:[75/255,0,130/255],ivory:[1,1,240/255],khaki:[240/255,230/255,140/255],lavender:[230/255,230/255,250/255],lavenderblush:[1,240/255,245/255],lawngreen:[124/255,252/255,0],lemonchiffon:[1,250/255,205/255],lightblue:[173/255,216/255,230/255],lightcoral:[240/255,128/255,128/255],lightcyan:[224/255,1,1],lightgoldenrodyellow:[250/255,250/255,210/255],lightgray:[211/255,211/255,211/255],lightgreen:[144/255,238/255,144/255],lightgrey:[211/255,211/255,211/255],lightpink:[1,182/255,193/255],lightsalmon:[1,160/255,122/255],lightseagreen:[32/255,178/255,170/255],lightskyblue:[135/255,206/255,250/255],lightslategray:[119/255,136/255,.6],lightslategrey:[119/255,136/255,.6],lightsteelblue:[176/255,196/255,222/255],lightyellow:[1,1,224/255],limegreen:[50/255,205/255,50/255],linen:[250/255,240/255,230/255],magenta:[1,0,1],mediumaquamarine:[.4,205/255,170/255],mediumblue:[0,0,205/255],mediumorchid:[186/255,85/255,211/255],mediumpurple:[147/255,112/255,219/255],mediumseagreen:[60/255,179/255,113/255],mediumslateblue:[123/255,104/255,238/255],mediumspringgreen:[0,250/255,154/255],mediumturquoise:[72/255,209/255,.8],mediumvioletred:[199/255,21/255,133/255],midnightblue:[25/255,25/255,112/255],mintcream:[245/255,1,250/255],mistyrose:[1,228/255,225/255],moccasin:[1,228/255,181/255],navajowhite:[1,222/255,173/255],oldlace:[253/255,245/255,230/255],olivedrab:[107/255,142/255,35/255],orange:[1,165/255,0],orangered:[1,69/255,0],orchid:[218/255,112/255,214/255],palegoldenrod:[238/255,232/255,170/255],palegreen:[152/255,251/255,152/255],paleturquoise:[175/255,238/255,238/255],palevioletred:[219/255,112/255,147/255],papayawhip:[1,239/255,213/255],peachpuff:[1,218/255,185/255],peru:[205/255,133/255,63/255],pink:[1,192/255,203/255],plum:[221/255,160/255,221/255],powderblue:[176/255,224/255,230/255],rosybrown:[188/255,143/255,143/255],royalblue:[65/255,105/255,225/255],saddlebrown:[139/255,69/255,19/255],salmon:[250/255,128/255,114/255],sandybrown:[244/255,164/255,96/255],seagreen:[46/255,139/255,87/255],seashell:[1,245/255,238/255],sienna:[160/255,82/255,45/255],skyblue:[135/255,206/255,235/255],slateblue:[106/255,90/255,205/255],slategray:[112/255,128/255,144/255],slategrey:[112/255,128/255,144/255],snow:[1,250/255,250/255],springgreen:[0,1,127/255],steelblue:[70/255,130/255,180/255],tan:[210/255,180/255,140/255],thistle:[216/255,191/255,216/255],tomato:[1,99/255,71/255],turquoise:[64/255,224/255,208/255],violet:[238/255,130/255,238/255],wheat:[245/255,222/255,179/255],whitesmoke:[245/255,245/255,245/255],yellowgreen:[154/255,205/255,50/255]};module.exports=cssColors;
|
|
763
763
|
|
|
764
764
|
},{}],128:[function(require,module,exports){
|
|
@@ -767,10 +767,10 @@ const hexToRgb=t=>{if((t=t.replace("#","")).length<6)throw new Error("the given
|
|
|
767
767
|
},{}],129:[function(require,module,exports){
|
|
768
768
|
const flatten=require("../utils/flatten"),hueToColorComponent=require("./hueToColorComponent"),hslToRgb=(...o)=>{if((o=flatten(o)).length<3)throw new Error("values must contain H, S and L values");const e=o[0],n=o[1],t=o[2];let r=t,l=t,u=t;if(0!==n){const o=t<.5?t*(1+n):t+n-t*n,h=2*t-o;r=hueToColorComponent(h,o,e+1/3),l=hueToColorComponent(h,o,e),u=hueToColorComponent(h,o,e-1/3)}if(o.length>3){return[r,l,u,o[3]]}return[r,l,u]};module.exports=hslToRgb;
|
|
769
769
|
|
|
770
|
-
},{"../utils/flatten":
|
|
770
|
+
},{"../utils/flatten":522,"./hueToColorComponent":131}],130:[function(require,module,exports){
|
|
771
771
|
const flatten=require("../utils/flatten"),hsvToRgb=(...e)=>{if((e=flatten(e)).length<3)throw new Error("values must contain H, S and V values");const t=e[0],a=e[1],r=e[2];let s=0,n=0,o=0;const c=Math.floor(6*t),l=6*t-c,u=r*(1-a),b=r*(1-l*a),h=r*(1-(1-l)*a);switch(c%6){case 0:s=r,n=h,o=u;break;case 1:s=b,n=r,o=u;break;case 2:s=u,n=r,o=h;break;case 3:s=u,n=b,o=r;break;case 4:s=h,n=u,o=r;break;case 5:s=r,n=u,o=b}if(e.length>3){return[s,n,o,e[3]]}return[s,n,o]};module.exports=hsvToRgb;
|
|
772
772
|
|
|
773
|
-
},{"../utils/flatten":
|
|
773
|
+
},{"../utils/flatten":522}],131:[function(require,module,exports){
|
|
774
774
|
const hueToColorComponent=(o,e,n)=>(n<0&&(n+=1),n>1&&(n-=1),n<1/6?o+6*(e-o)*n:n<.5?e:n<2/3?o+(e-o)*(2/3-n)*6:o);module.exports=hueToColorComponent;
|
|
775
775
|
|
|
776
776
|
},{}],132:[function(require,module,exports){
|
|
@@ -779,13 +779,13 @@ module.exports={colorize:require("./colorize"),colorNameToRgb:require("./colorNa
|
|
|
779
779
|
},{"./colorNameToRgb":125,"./colorize":126,"./cssColors":127,"./hexToRgb":128,"./hslToRgb":129,"./hsvToRgb":130,"./hueToColorComponent":131,"./rgbToHex":133,"./rgbToHsl":134,"./rgbToHsv":135}],133:[function(require,module,exports){
|
|
780
780
|
const flatten=require("../utils/flatten"),rgbToHex=(...t)=>{if((t=flatten(t)).length<3)throw new Error("values must contain R, G and B values");const e=255*t[0],r=255*t[1],n=255*t[2];let o=`#${Number(16777216+65536*e+256*r+n).toString(16).substring(1,7)}`;return t.length>3&&(o+=Number(255*t[3]).toString(16)),o};module.exports=rgbToHex;
|
|
781
781
|
|
|
782
|
-
},{"../utils/flatten":
|
|
782
|
+
},{"../utils/flatten":522}],134:[function(require,module,exports){
|
|
783
783
|
const flatten=require("../utils/flatten"),rgbToHsl=(...t)=>{if((t=flatten(t)).length<3)throw new Error("values must contain R, G and B values");const e=t[0],n=t[1],s=t[2],a=Math.max(e,n,s),r=Math.min(e,n,s);let l,o;const c=(a+r)/2;if(a===r)l=o=0;else{const t=a-r;switch(o=c>.5?t/(2-a-r):t/(a+r),a){case e:l=(n-s)/t+(n<s?6:0);break;case n:l=(s-e)/t+2;break;case s:l=(e-n)/t+4}l/=6}if(t.length>3){return[l,o,c,t[3]]}return[l,o,c]};module.exports=rgbToHsl;
|
|
784
784
|
|
|
785
|
-
},{"../utils/flatten":
|
|
785
|
+
},{"../utils/flatten":522}],135:[function(require,module,exports){
|
|
786
786
|
const flatten=require("../utils/flatten"),rgbToHsv=(...e)=>{if((e=flatten(e)).length<3)throw new Error("values must contain R, G and B values");const t=e[0],a=e[1],n=e[2],r=Math.max(t,a,n),s=Math.min(t,a,n);let l;const o=r,c=r-s,i=0===r?0:c/r;if(r===s)l=0;else{switch(r){case t:l=(a-n)/c+(a<n?6:0);break;case a:l=(n-t)/c+2;break;case n:l=(t-a)/c+4}l/=6}if(e.length>3){return[l,i,o,e[3]]}return[l,i,o]};module.exports=rgbToHsv;
|
|
787
787
|
|
|
788
|
-
},{"../utils/flatten":
|
|
788
|
+
},{"../utils/flatten":522}],136:[function(require,module,exports){
|
|
789
789
|
const lengths=require("./lengths"),arcLengthToT=(e,t)=>{const{distance:s,segments:n}=Object.assign({},{distance:0,segments:100},e),o=lengths(n,t);let r=0,c=n;for(;r<=c;){const e=Math.floor(r+(c-r)/2),t=o[e]-s;if(t<0)r=e+1;else{if(!(t>0)){c=e;break}c=e-1}}const g=c;if(o[g]===s)return g/n;const a=o[g];return(g+(s-a)/(o[g+1]-a))/n};module.exports=arcLengthToT;
|
|
790
790
|
|
|
791
791
|
},{"./lengths":140}],137:[function(require,module,exports){
|
|
@@ -872,7 +872,7 @@ const poly3=require("../poly3"),create=require("./create"),fromPoints=r=>{if(!Ar
|
|
|
872
872
|
},{"../poly3":203,"./create":161}],164:[function(require,module,exports){
|
|
873
873
|
const quickhull=require("../../operations/hulls/quickhull"),create=require("./create"),poly3=require("../poly3"),fromPointsConvex=r=>{if(!Array.isArray(r))throw new Error("the given points must be an array");const e=quickhull(r,{skipTriangulation:!0}).map(e=>{const o=e.map(e=>r[e]);return poly3.create(o)});return create(e)};module.exports=fromPointsConvex;
|
|
874
874
|
|
|
875
|
-
},{"../../operations/hulls/quickhull":
|
|
875
|
+
},{"../../operations/hulls/quickhull":472,"../poly3":203,"./create":161}],165:[function(require,module,exports){
|
|
876
876
|
module.exports={clone:require("./clone"),create:require("./create"),fromPointsConvex:require("./fromPointsConvex"),fromPoints:require("./fromPoints"),fromCompactBinary:require("./fromCompactBinary"),invert:require("./invert"),isA:require("./isA"),toPoints:require("./toPoints"),toPolygons:require("./toPolygons"),toString:require("./toString"),toCompactBinary:require("./toCompactBinary"),transform:require("./transform"),validate:require("./validate")};
|
|
877
877
|
|
|
878
878
|
},{"./clone":160,"./create":161,"./fromCompactBinary":162,"./fromPoints":163,"./fromPointsConvex":164,"./invert":166,"./isA":167,"./toCompactBinary":168,"./toPoints":169,"./toPolygons":170,"./toString":171,"./transform":172,"./validate":173}],166:[function(require,module,exports){
|
|
@@ -1028,7 +1028,7 @@ const signedDistanceToPoint=require("../../maths/plane/signedDistanceToPoint"),{
|
|
|
1028
1028
|
},{"../../maths/constants":218,"../../maths/plane/signedDistanceToPoint":289,"../../maths/vec3":346,"./isA":205,"./isConvex":206,"./measureArea":207,"./plane":211}],216:[function(require,module,exports){
|
|
1029
1029
|
module.exports={colors:require("./colors"),curves:require("./curves"),geometries:require("./geometries"),maths:require("./maths"),measurements:require("./measurements"),primitives:require("./primitives"),text:require("./text"),utils:require("./utils"),booleans:require("./operations/booleans"),expansions:require("./operations/expansions"),extrusions:require("./operations/extrusions"),hulls:require("./operations/hulls"),modifiers:require("./operations/modifiers"),transforms:require("./operations/transforms")};
|
|
1030
1030
|
|
|
1031
|
-
},{"./colors":132,"./curves":143,"./geometries":174,"./maths":219,"./measurements":376,"./operations/booleans":390,"./operations/expansions":419,"./operations/extrusions":442,"./operations/hulls":
|
|
1031
|
+
},{"./colors":132,"./curves":143,"./geometries":174,"./maths":219,"./measurements":376,"./operations/booleans":390,"./operations/expansions":419,"./operations/extrusions":442,"./operations/hulls":465,"./operations/modifiers":476,"./operations/transforms":486,"./primitives":502,"./text":516,"./utils":524}],217:[function(require,module,exports){
|
|
1032
1032
|
const mat4=require("./mat4"),vec2=require("./vec2"),vec3=require("./vec3"),OrthoNormalBasis=function(e,t){arguments.length<2&&(t=vec3.orthogonal(vec3.create(),e)),this.v=vec3.normalize(vec3.create(),vec3.cross(vec3.create(),e,t)),this.u=vec3.cross(vec3.create(),this.v,e),this.plane=e,this.planeorigin=vec3.scale(vec3.create(),e,e[3])};OrthoNormalBasis.GetCartesian=function(e,t){const i=e+"/"+t;let s,n;if("X/Y"===i)s=[0,0,1],n=[1,0,0];else if("Y/-X"===i)s=[0,0,1],n=[0,1,0];else if("-X/-Y"===i)s=[0,0,1],n=[-1,0,0];else if("-Y/X"===i)s=[0,0,1],n=[0,-1,0];else if("-X/Y"===i)s=[0,0,-1],n=[-1,0,0];else if("-Y/-X"===i)s=[0,0,-1],n=[0,-1,0];else if("X/-Y"===i)s=[0,0,-1],n=[1,0,0];else if("Y/X"===i)s=[0,0,-1],n=[0,1,0];else if("X/Z"===i)s=[0,-1,0],n=[1,0,0];else if("Z/-X"===i)s=[0,-1,0],n=[0,0,1];else if("-X/-Z"===i)s=[0,-1,0],n=[-1,0,0];else if("-Z/X"===i)s=[0,-1,0],n=[0,0,-1];else if("-X/Z"===i)s=[0,1,0],n=[-1,0,0];else if("-Z/-X"===i)s=[0,1,0],n=[0,0,-1];else if("X/-Z"===i)s=[0,1,0],n=[1,0,0];else if("Z/X"===i)s=[0,1,0],n=[0,0,1];else if("Y/Z"===i)s=[1,0,0],n=[0,1,0];else if("Z/-Y"===i)s=[1,0,0],n=[0,0,1];else if("-Y/-Z"===i)s=[1,0,0],n=[0,-1,0];else if("-Z/Y"===i)s=[1,0,0],n=[0,0,-1];else if("-Y/Z"===i)s=[-1,0,0],n=[0,-1,0];else if("-Z/-Y"===i)s=[-1,0,0],n=[0,0,-1];else if("Y/-Z"===i)s=[-1,0,0],n=[0,1,0];else{if("Z/Y"!==i)throw new Error("OrthoNormalBasis.GetCartesian: invalid combination of axis identifiers. Should pass two string arguments from [X,Y,Z,-X,-Y,-Z], being two different axes.");s=[-1,0,0],n=[0,0,1]}return new OrthoNormalBasis(new Plane(new Vector3D(s),0),new Vector3D(n))},OrthoNormalBasis.Z0Plane=function(){const e=new Plane(new Vector3D([0,0,1]),0);return new OrthoNormalBasis(e,new Vector3D([1,0,0]))},OrthoNormalBasis.prototype={getProjectionMatrix:function(){return mat4.fromValues(this.u[0],this.v[0],this.plane[0],0,this.u[1],this.v[1],this.plane[1],0,this.u[2],this.v[2],this.plane[2],0,0,0,-this.plane[3],1)},getInverseProjectionMatrix:function(){const e=vec3.scale(vec3.create(),this.plane,this.plane[3]);return mat4.fromValues(this.u[0],this.u[1],this.u[2],0,this.v[0],this.v[1],this.v[2],0,this.plane[0],this.plane[1],this.plane[2],0,e[0],e[1],e[2],1)},to2D:function(e){return vec2.fromValues(vec3.dot(e,this.u),vec3.dot(e,this.v))},to3D:function(e){const t=vec3.scale(vec3.create(),this.u,e[0]),i=vec3.scale(vec3.create(),this.v,e[1]),s=vec3.add(t,t,this.planeorigin);return vec3.add(i,i,s)},line3Dto2D:function(e){const t=e.point,i=e.direction.plus(t),s=this.to2D(t),n=this.to2D(i);return Line2D.fromPoints(s,n)},line2Dto3D:function(e){const t=e.origin(),i=e.direction().plus(t),s=this.to3D(t),n=this.to3D(i);return Line3D.fromPoints(s,n)},transform:function(e){const t=this.plane.transform(e),i=this.u.transform(e),s=new Vector3D(0,0,0).transform(e),n=i.minus(s);return new OrthoNormalBasis(t,n)}},module.exports=OrthoNormalBasis;
|
|
1033
1033
|
|
|
1034
1034
|
},{"./mat4":267,"./vec2":315,"./vec3":346}],218:[function(require,module,exports){
|
|
@@ -1511,40 +1511,40 @@ module.exports={measureAggregateArea:require("./measureAggregateArea"),measureAg
|
|
|
1511
1511
|
},{"./measureAggregateArea":377,"./measureAggregateBoundingBox":378,"./measureAggregateEpsilon":379,"./measureAggregateVolume":380,"./measureArea":381,"./measureBoundingBox":382,"./measureBoundingSphere":383,"./measureCenter":384,"./measureCenterOfMass":385,"./measureDimensions":386,"./measureEpsilon":387,"./measureVolume":388}],377:[function(require,module,exports){
|
|
1512
1512
|
const flatten=require("../utils/flatten"),measureArea=require("./measureArea"),measureAggregateArea=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("measureAggregateArea: no geometries supplied");const r=measureArea(e);if(1===e.length)return r;return r.reduce((e,r)=>e+r,0)};module.exports=measureAggregateArea;
|
|
1513
1513
|
|
|
1514
|
-
},{"../utils/flatten":
|
|
1514
|
+
},{"../utils/flatten":522,"./measureArea":381}],378:[function(require,module,exports){
|
|
1515
1515
|
const flatten=require("../utils/flatten"),vec3min=require("../maths/vec3/min"),vec3max=require("../maths/vec3/max"),measureBoundingBox=require("./measureBoundingBox"),measureAggregateBoundingBox=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("measureAggregateBoundingBox: no geometries supplied");const r=measureBoundingBox(e);if(1===e.length)return r;const u=[[Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE],[-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE]];return r.reduce((e,r)=>e=[vec3min(e[0],e[0],r[0]),vec3max(e[1],e[1],r[1])],u)};module.exports=measureAggregateBoundingBox;
|
|
1516
1516
|
|
|
1517
|
-
},{"../maths/vec3/max":349,"../maths/vec3/min":350,"../utils/flatten":
|
|
1517
|
+
},{"../maths/vec3/max":349,"../maths/vec3/min":350,"../utils/flatten":522,"./measureBoundingBox":382}],379:[function(require,module,exports){
|
|
1518
1518
|
const flatten=require("../utils/flatten"),measureAggregateBoundingBox=require("./measureAggregateBoundingBox"),calculateEpsilonFromBounds=require("./calculateEpsilonFromBounds"),{geom2:geom2,geom3:geom3,path2:path2}=require("../geometries"),measureAggregateEpsilon=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("measureAggregateEpsilon: no geometries supplied");const o=measureAggregateBoundingBox(e);let r=0;return r=e.reduce((e,o)=>path2.isA(o)||geom2.isA(o)?Math.max(e,2):geom3.isA(o)?Math.max(e,3):0,r),calculateEpsilonFromBounds(o,r)};module.exports=measureAggregateEpsilon;
|
|
1519
1519
|
|
|
1520
|
-
},{"../geometries":174,"../utils/flatten":
|
|
1520
|
+
},{"../geometries":174,"../utils/flatten":522,"./calculateEpsilonFromBounds":375,"./measureAggregateBoundingBox":378}],380:[function(require,module,exports){
|
|
1521
1521
|
const flatten=require("../utils/flatten"),measureVolume=require("./measureVolume"),measureAggregateVolume=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("measureAggregateVolume: no geometries supplied");const r=measureVolume(e);if(1===e.length)return r;return r.reduce((e,r)=>e+r,0)};module.exports=measureAggregateVolume;
|
|
1522
1522
|
|
|
1523
|
-
},{"../utils/flatten":
|
|
1523
|
+
},{"../utils/flatten":522,"./measureVolume":388}],381:[function(require,module,exports){
|
|
1524
1524
|
const flatten=require("../utils/flatten"),geom2=require("../geometries/geom2"),geom3=require("../geometries/geom3"),path2=require("../geometries/path2"),poly3=require("../geometries/poly3"),cache=new WeakMap,measureAreaOfPath2=()=>0,measureAreaOfGeom2=e=>{let r=cache.get(e);if(r)return r;return r=geom2.toSides(e).reduce((e,r)=>e+(r[0][0]*r[1][1]-r[0][1]*r[1][0]),0),r*=.5,cache.set(e,r),r},measureAreaOfGeom3=e=>{let r=cache.get(e);if(r)return r;return r=geom3.toPolygons(e).reduce((e,r)=>e+poly3.measureArea(r),0),cache.set(e,r),r},measureArea=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");const r=e.map(e=>path2.isA(e)?0:geom2.isA(e)?measureAreaOfGeom2(e):geom3.isA(e)?measureAreaOfGeom3(e):0);return 1===r.length?r[0]:r};module.exports=measureArea;
|
|
1525
1525
|
|
|
1526
|
-
},{"../geometries/geom2":149,"../geometries/geom3":165,"../geometries/path2":186,"../geometries/poly3":203,"../utils/flatten":
|
|
1526
|
+
},{"../geometries/geom2":149,"../geometries/geom3":165,"../geometries/path2":186,"../geometries/poly3":203,"../utils/flatten":522}],382:[function(require,module,exports){
|
|
1527
1527
|
const flatten=require("../utils/flatten"),vec2=require("../maths/vec2"),vec3=require("../maths/vec3"),geom2=require("../geometries/geom2"),geom3=require("../geometries/geom3"),path2=require("../geometries/path2"),poly3=require("../geometries/poly3"),cache=new WeakMap,measureBoundingBoxOfPath2=e=>{let o=cache.get(e);if(o)return o;const t=path2.toPoints(e);let n;n=0===t.length?vec2.create():vec2.clone(t[0]);let r=vec2.clone(n);return t.forEach(e=>{vec2.min(n,n,e),vec2.max(r,r,e)}),n=[n[0],n[1],0],r=[r[0],r[1],0],o=[n,r],cache.set(e,o),o},measureBoundingBoxOfGeom2=e=>{let o=cache.get(e);if(o)return o;const t=geom2.toPoints(e);let n;n=0===t.length?vec2.create():vec2.clone(t[0]);let r=vec2.clone(n);return t.forEach(e=>{vec2.min(n,n,e),vec2.max(r,r,e)}),n=[n[0],n[1],0],r=[r[0],r[1],0],o=[n,r],cache.set(e,o),o},measureBoundingBoxOfGeom3=e=>{let o=cache.get(e);if(o)return o;const t=geom3.toPolygons(e);let n=vec3.create();if(t.length>0){const e=poly3.toPoints(t[0]);vec3.copy(n,e[0])}let r=vec3.clone(n);return t.forEach(e=>{poly3.toPoints(e).forEach(e=>{vec3.min(n,n,e),vec3.max(r,r,e)})}),n=[n[0],n[1],n[2]],r=[r[0],r[1],r[2]],o=[n,r],cache.set(e,o),o},measureBoundingBox=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");const o=e.map(e=>path2.isA(e)?measureBoundingBoxOfPath2(e):geom2.isA(e)?measureBoundingBoxOfGeom2(e):geom3.isA(e)?measureBoundingBoxOfGeom3(e):[[0,0,0],[0,0,0]]);return 1===o.length?o[0]:o};module.exports=measureBoundingBox;
|
|
1528
1528
|
|
|
1529
|
-
},{"../geometries/geom2":149,"../geometries/geom3":165,"../geometries/path2":186,"../geometries/poly3":203,"../maths/vec2":315,"../maths/vec3":346,"../utils/flatten":
|
|
1529
|
+
},{"../geometries/geom2":149,"../geometries/geom3":165,"../geometries/path2":186,"../geometries/poly3":203,"../maths/vec2":315,"../maths/vec3":346,"../utils/flatten":522}],383:[function(require,module,exports){
|
|
1530
1530
|
const flatten=require("../utils/flatten"),vec2=require("../maths/vec2"),vec3=require("../maths/vec3"),geom2=require("../geometries/geom2"),geom3=require("../geometries/geom3"),path2=require("../geometries/path2"),poly3=require("../geometries/poly3"),cacheOfBoundingSpheres=new WeakMap,measureBoundingSphereOfPath2=e=>{let t=cacheOfBoundingSpheres.get(e);if(void 0!==t)return t;const r=vec3.create();let o=0;const c=path2.toPoints(e);if(c.length>0){let e=0;const t=vec3.create();c.forEach(o=>{vec3.add(r,r,vec3.fromVec2(t,o,0)),e++}),vec3.scale(r,r,1/e),c.forEach(e=>{o=Math.max(o,vec2.squaredDistance(r,e))}),o=Math.sqrt(o)}return t=[r,o],cacheOfBoundingSpheres.set(e,t),t},measureBoundingSphereOfGeom2=e=>{let t=cacheOfBoundingSpheres.get(e);if(void 0!==t)return t;const r=vec3.create();let o=0;const c=geom2.toSides(e);if(c.length>0){let e=0;const t=vec3.create();c.forEach(o=>{vec3.add(r,r,vec3.fromVec2(t,o[0],0)),e++}),vec3.scale(r,r,1/e),c.forEach(e=>{o=Math.max(o,vec2.squaredDistance(r,e[0]))}),o=Math.sqrt(o)}return t=[r,o],cacheOfBoundingSpheres.set(e,t),t},measureBoundingSphereOfGeom3=e=>{let t=cacheOfBoundingSpheres.get(e);if(void 0!==t)return t;const r=vec3.create();let o=0;const c=geom3.toPolygons(e);if(c.length>0){let e=0;c.forEach(t=>{poly3.toPoints(t).forEach(t=>{vec3.add(r,r,t),e++})}),vec3.scale(r,r,1/e),c.forEach(e=>{poly3.toPoints(e).forEach(e=>{o=Math.max(o,vec3.squaredDistance(r,e))})}),o=Math.sqrt(o)}return t=[r,o],cacheOfBoundingSpheres.set(e,t),t},measureBoundingSphere=(...e)=>{const t=(e=flatten(e)).map(e=>path2.isA(e)?measureBoundingSphereOfPath2(e):geom2.isA(e)?measureBoundingSphereOfGeom2(e):geom3.isA(e)?measureBoundingSphereOfGeom3(e):[[0,0,0],0]);return 1===t.length?t[0]:t};module.exports=measureBoundingSphere;
|
|
1531
1531
|
|
|
1532
|
-
},{"../geometries/geom2":149,"../geometries/geom3":165,"../geometries/path2":186,"../geometries/poly3":203,"../maths/vec2":315,"../maths/vec3":346,"../utils/flatten":
|
|
1532
|
+
},{"../geometries/geom2":149,"../geometries/geom3":165,"../geometries/path2":186,"../geometries/poly3":203,"../maths/vec2":315,"../maths/vec3":346,"../utils/flatten":522}],384:[function(require,module,exports){
|
|
1533
1533
|
const flatten=require("../utils/flatten"),measureBoundingBox=require("./measureBoundingBox"),measureCenter=(...e)=>{const n=(e=flatten(e)).map(e=>{const n=measureBoundingBox(e);return[n[0][0]+(n[1][0]-n[0][0])/2,n[0][1]+(n[1][1]-n[0][1])/2,n[0][2]+(n[1][2]-n[0][2])/2]});return 1===n.length?n[0]:n};module.exports=measureCenter;
|
|
1534
1534
|
|
|
1535
|
-
},{"../utils/flatten":
|
|
1535
|
+
},{"../utils/flatten":522,"./measureBoundingBox":382}],385:[function(require,module,exports){
|
|
1536
1536
|
const flatten=require("../utils/flatten"),vec3=require("../maths/vec3"),geom2=require("../geometries/geom2"),geom3=require("../geometries/geom3"),cacheOfCenterOfMass=new WeakMap,measureCenterOfMassGeom2=e=>{let t=cacheOfCenterOfMass.get(e);if(void 0!==t)return t;const s=geom2.toSides(e);let r=0,c=0,a=0;if(s.length>0){for(let e=0;e<s.length;e++){const t=s[e][0],o=s[e][1],n=t[0]*o[1]-t[1]*o[0];r+=n,c+=(t[0]+o[0])*n,a+=(t[1]+o[1])*n}const e=1/(6*(r/=2));c*=e,a*=e}return t=vec3.fromValues(c,a,0),cacheOfCenterOfMass.set(e,t),t},measureCenterOfMassGeom3=e=>{let t=cacheOfCenterOfMass.get(e);if(void 0!==t)return t;t=vec3.create();const s=geom3.toPolygons(e);if(0===s.length)return t;let r=0;const c=vec3.create();return s.forEach(e=>{const s=e.vertices;for(let e=0;e<s.length-2;e++){vec3.cross(c,s[e+1],s[e+2]);const a=vec3.dot(s[0],c)/6;r+=a,vec3.add(c,s[0],s[e+1]),vec3.add(c,c,s[e+2]);const o=vec3.scale(c,c,.25*a);vec3.add(t,t,o)}}),vec3.scale(t,t,1/r),cacheOfCenterOfMass.set(e,t),t},measureCenterOfMass=(...e)=>{const t=(e=flatten(e)).map(e=>geom2.isA(e)?measureCenterOfMassGeom2(e):geom3.isA(e)?measureCenterOfMassGeom3(e):[0,0,0]);return 1===t.length?t[0]:t};module.exports=measureCenterOfMass;
|
|
1537
1537
|
|
|
1538
|
-
},{"../geometries/geom2":149,"../geometries/geom3":165,"../maths/vec3":346,"../utils/flatten":
|
|
1538
|
+
},{"../geometries/geom2":149,"../geometries/geom3":165,"../maths/vec3":346,"../utils/flatten":522}],386:[function(require,module,exports){
|
|
1539
1539
|
const flatten=require("../utils/flatten"),measureBoundingBox=require("./measureBoundingBox"),measureDimensions=(...e)=>{const n=(e=flatten(e)).map(e=>{const n=measureBoundingBox(e);return[n[1][0]-n[0][0],n[1][1]-n[0][1],n[1][2]-n[0][2]]});return 1===n.length?n[0]:n};module.exports=measureDimensions;
|
|
1540
1540
|
|
|
1541
|
-
},{"../utils/flatten":
|
|
1541
|
+
},{"../utils/flatten":522,"./measureBoundingBox":382}],387:[function(require,module,exports){
|
|
1542
1542
|
const flatten=require("../utils/flatten"),{geom2:geom2,geom3:geom3,path2:path2}=require("../geometries"),calculateEpsilonFromBounds=require("./calculateEpsilonFromBounds"),measureBoundingBox=require("./measureBoundingBox"),measureEpsilonOfPath2=e=>calculateEpsilonFromBounds(measureBoundingBox(e),2),measureEpsilonOfGeom2=e=>calculateEpsilonFromBounds(measureBoundingBox(e),2),measureEpsilonOfGeom3=e=>calculateEpsilonFromBounds(measureBoundingBox(e),3),measureEpsilon=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");const o=e.map(e=>path2.isA(e)?measureEpsilonOfPath2(e):geom2.isA(e)?measureEpsilonOfGeom2(e):geom3.isA(e)?measureEpsilonOfGeom3(e):0);return 1===o.length?o[0]:o};module.exports=measureEpsilon;
|
|
1543
1543
|
|
|
1544
|
-
},{"../geometries":174,"../utils/flatten":
|
|
1544
|
+
},{"../geometries":174,"../utils/flatten":522,"./calculateEpsilonFromBounds":375,"./measureBoundingBox":382}],388:[function(require,module,exports){
|
|
1545
1545
|
const flatten=require("../utils/flatten"),geom2=require("../geometries/geom2"),geom3=require("../geometries/geom3"),path2=require("../geometries/path2"),poly3=require("../geometries/poly3"),cache=new WeakMap,measureVolumeOfPath2=()=>0,measureVolumeOfGeom2=()=>0,measureVolumeOfGeom3=e=>{let r=cache.get(e);if(r)return r;return r=geom3.toPolygons(e).reduce((e,r)=>e+poly3.measureSignedVolume(r),0),cache.set(e,r),r},measureVolume=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");const r=e.map(e=>path2.isA(e)?0:geom2.isA(e)?0:geom3.isA(e)?measureVolumeOfGeom3(e):0);return 1===r.length?r[0]:r};module.exports=measureVolume;
|
|
1546
1546
|
|
|
1547
|
-
},{"../geometries/geom2":149,"../geometries/geom3":165,"../geometries/path2":186,"../geometries/poly3":203,"../utils/flatten":
|
|
1547
|
+
},{"../geometries/geom2":149,"../geometries/geom3":165,"../geometries/path2":186,"../geometries/poly3":203,"../utils/flatten":522}],389:[function(require,module,exports){
|
|
1548
1548
|
const vec2=require("../../maths/vec2"),geom2=require("../../geometries/geom2"),fromFakePolygon=(e,o)=>{if(o.vertices.length<4)return null;const r=[],n=o.vertices.filter((e,o)=>e[2]>0&&(r.push(o),!0));if(2!==n.length)throw new Error("Assertion failed: fromFakePolygon: not enough points found");const t=n.map(o=>{const r=Math.round(o[0]/e)*e+0,n=Math.round(o[1]/e)*e+0;return vec2.fromValues(r,n)});if(vec2.equals(t[0],t[1]))return null;const s=r[1]-r[0];if(1!==s&&3!==s)throw new Error("Assertion failed: fromFakePolygon: unknown index ordering");return 1===s&&t.reverse(),t},fromFakePolygons=(e,o)=>{const r=o.map(o=>fromFakePolygon(e,o)).filter(e=>null!==e);return geom2.create(r)};module.exports=fromFakePolygons;
|
|
1549
1549
|
|
|
1550
1550
|
},{"../../geometries/geom2":149,"../../maths/vec2":315}],390:[function(require,module,exports){
|
|
@@ -1553,13 +1553,13 @@ module.exports={intersect:require("./intersect"),scission:require("./scission"),
|
|
|
1553
1553
|
},{"./intersect":391,"./scission":396,"./subtract":398,"./union":409}],391:[function(require,module,exports){
|
|
1554
1554
|
const flatten=require("../../utils/flatten"),areAllShapesTheSameType=require("../../utils/areAllShapesTheSameType"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),intersectGeom2=require("./intersectGeom2"),intersectGeom3=require("./intersectGeom3"),intersect=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");if(!areAllShapesTheSameType(e))throw new Error("only intersect of the types are supported");const r=e[0];return geom2.isA(r)?intersectGeom2(e):geom3.isA(r)?intersectGeom3(e):r};module.exports=intersect;
|
|
1555
1555
|
|
|
1556
|
-
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../utils/areAllShapesTheSameType":
|
|
1556
|
+
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../utils/areAllShapesTheSameType":520,"../../utils/flatten":522,"./intersectGeom2":392,"./intersectGeom3":393}],392:[function(require,module,exports){
|
|
1557
1557
|
const flatten=require("../../utils/flatten"),geom3=require("../../geometries/geom3"),measureEpsilon=require("../../measurements/measureEpsilon"),fromFakePolygons=require("./fromFakePolygons"),to3DWalls=require("./to3DWalls"),intersectGeom3=require("./intersectGeom3"),intersect=(...e)=>{const o=(e=flatten(e)).map(e=>to3DWalls({z0:-1,z1:1},e)),r=intersectGeom3(o),t=measureEpsilon(r);return fromFakePolygons(t,geom3.toPolygons(r))};module.exports=intersect;
|
|
1558
1558
|
|
|
1559
|
-
},{"../../geometries/geom3":165,"../../measurements/measureEpsilon":387,"../../utils/flatten":
|
|
1559
|
+
},{"../../geometries/geom3":165,"../../measurements/measureEpsilon":387,"../../utils/flatten":522,"./fromFakePolygons":389,"./intersectGeom3":393,"./to3DWalls":402}],393:[function(require,module,exports){
|
|
1560
1560
|
const flatten=require("../../utils/flatten"),retessellate=require("../modifiers/retessellate"),intersectSub=require("./intersectGeom3Sub"),intersect=(...e)=>{let t=(e=flatten(e)).shift();return e.forEach(e=>{t=intersectSub(t,e)}),t=retessellate(t)};module.exports=intersect;
|
|
1561
1561
|
|
|
1562
|
-
},{"../../utils/flatten":
|
|
1562
|
+
},{"../../utils/flatten":522,"../modifiers/retessellate":480,"./intersectGeom3Sub":394}],394:[function(require,module,exports){
|
|
1563
1563
|
const geom3=require("../../geometries/geom3"),mayOverlap=require("./mayOverlap"),{Tree:Tree}=require("./trees"),intersectGeom3Sub=(e,o)=>{if(!mayOverlap(e,o))return geom3.create();const r=new Tree(geom3.toPolygons(e)),t=new Tree(geom3.toPolygons(o));r.invert(),t.clipTo(r),t.invert(),r.clipTo(t),t.clipTo(r),r.addPolygons(t.allPolygons()),r.invert();const n=r.allPolygons();return geom3.create(n)};module.exports=intersectGeom3Sub;
|
|
1564
1564
|
|
|
1565
1565
|
},{"../../geometries/geom3":165,"./mayOverlap":395,"./trees":406}],395:[function(require,module,exports){
|
|
@@ -1568,19 +1568,19 @@ const{EPS:EPS}=require("../../maths/constants"),measureBoundingBox=require("../.
|
|
|
1568
1568
|
},{"../../maths/constants":218,"../../measurements/measureBoundingBox":382}],396:[function(require,module,exports){
|
|
1569
1569
|
const flatten=require("../../utils/flatten"),geom3=require("../../geometries/geom3"),scissionGeom3=require("./scissionGeom3"),scission=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");const s=e.map(e=>geom3.isA(e)?scissionGeom3(e):e);return 1===s.length?s[0]:s};module.exports=scission;
|
|
1570
1570
|
|
|
1571
|
-
},{"../../geometries/geom3":165,"../../utils/flatten":
|
|
1571
|
+
},{"../../geometries/geom3":165,"../../utils/flatten":522,"./scissionGeom3":397}],397:[function(require,module,exports){
|
|
1572
1572
|
const vec3=require("../../maths/vec3"),measureEpsilon=require("../../measurements/measureEpsilon"),geom3=require("../../geometries/geom3"),sortNb=e=>e.sort((e,s)=>e-s).filter((e,s,o)=>!s||e!==o[s-1]),insertMapping=(e,s,o)=>{const t=`${s}`,n=e.get(t);void 0===n?e.set(t,[o]):n.push(o)},findMapping=(e,s)=>{const o=`${s}`;return e.get(o)},scissionGeom3=e=>{const s=measureEpsilon(e),o=geom3.toPolygons(e),t=o.length,n=new Map,r=vec3.create();o.forEach((e,o)=>{e.vertices.forEach(e=>{insertMapping(n,vec3.snap(r,e,s),o)})});const c=o.map(e=>{let o=[];return e.vertices.forEach(e=>{o=o.concat(findMapping(n,vec3.snap(r,e,s)))}),{e:1,d:sortNb(o)}});n.clear();let i=0;const a=c.length;for(let e=0;e<a;e++){const s=c[e];if(s.e>0){const o=new Array(t);o[e]=!0;do{i=0,o.forEach((e,s)=>{const t=c[s];if(t.e>0){t.e=-1;for(let e=0;e<t.d.length;e++)o[t.d[e]]=!0;i++}})}while(i>0);s.indexes=o}}const p=[];for(let e=0;e<a;e++)if(c[e].indexes){const s=[];c[e].indexes.forEach((e,t)=>s.push(o[t])),p.push(geom3.create(s))}return p};module.exports=scissionGeom3;
|
|
1573
1573
|
|
|
1574
1574
|
},{"../../geometries/geom3":165,"../../maths/vec3":346,"../../measurements/measureEpsilon":387}],398:[function(require,module,exports){
|
|
1575
1575
|
const flatten=require("../../utils/flatten"),areAllShapesTheSameType=require("../../utils/areAllShapesTheSameType"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),subtractGeom2=require("./subtractGeom2"),subtractGeom3=require("./subtractGeom3"),subtract=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");if(!areAllShapesTheSameType(e))throw new Error("only subtract of the types are supported");const r=e[0];return geom2.isA(r)?subtractGeom2(e):geom3.isA(r)?subtractGeom3(e):r};module.exports=subtract;
|
|
1576
1576
|
|
|
1577
|
-
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../utils/areAllShapesTheSameType":
|
|
1577
|
+
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../utils/areAllShapesTheSameType":520,"../../utils/flatten":522,"./subtractGeom2":399,"./subtractGeom3":400}],399:[function(require,module,exports){
|
|
1578
1578
|
const flatten=require("../../utils/flatten"),geom3=require("../../geometries/geom3"),measureEpsilon=require("../../measurements/measureEpsilon"),fromFakePolygons=require("./fromFakePolygons"),to3DWalls=require("./to3DWalls"),subtractGeom3=require("./subtractGeom3"),subtract=(...e)=>{const o=(e=flatten(e)).map(e=>to3DWalls({z0:-1,z1:1},e)),r=subtractGeom3(o),t=measureEpsilon(r);return fromFakePolygons(t,geom3.toPolygons(r))};module.exports=subtract;
|
|
1579
1579
|
|
|
1580
|
-
},{"../../geometries/geom3":165,"../../measurements/measureEpsilon":387,"../../utils/flatten":
|
|
1580
|
+
},{"../../geometries/geom3":165,"../../measurements/measureEpsilon":387,"../../utils/flatten":522,"./fromFakePolygons":389,"./subtractGeom3":400,"./to3DWalls":402}],400:[function(require,module,exports){
|
|
1581
1581
|
const flatten=require("../../utils/flatten"),retessellate=require("../modifiers/retessellate"),subtractSub=require("./subtractGeom3Sub"),subtract=(...t)=>{let e=(t=flatten(t)).shift();return t.forEach(t=>{e=subtractSub(e,t)}),e=retessellate(e)};module.exports=subtract;
|
|
1582
1582
|
|
|
1583
|
-
},{"../../utils/flatten":
|
|
1583
|
+
},{"../../utils/flatten":522,"../modifiers/retessellate":480,"./subtractGeom3Sub":401}],401:[function(require,module,exports){
|
|
1584
1584
|
const geom3=require("../../geometries/geom3"),mayOverlap=require("./mayOverlap"),{Tree:Tree}=require("./trees"),subtractGeom3Sub=(e,o)=>{if(!mayOverlap(e,o))return geom3.clone(e);const r=new Tree(geom3.toPolygons(e)),t=new Tree(geom3.toPolygons(o));r.invert(),r.clipTo(t),t.clipTo(r,!0),r.addPolygons(t.allPolygons()),r.invert();const l=r.allPolygons();return geom3.create(l)};module.exports=subtractGeom3Sub;
|
|
1585
1585
|
|
|
1586
1586
|
},{"../../geometries/geom3":165,"./mayOverlap":395,"./trees":406}],402:[function(require,module,exports){
|
|
@@ -1607,19 +1607,19 @@ const{EPS:EPS}=require("../../../maths/constants"),plane=require("../../../maths
|
|
|
1607
1607
|
},{"../../../geometries/poly3":203,"../../../maths/constants":218,"../../../maths/plane":287,"../../../maths/vec3":346,"./splitLineSegmentByPlane":407}],409:[function(require,module,exports){
|
|
1608
1608
|
const flatten=require("../../utils/flatten"),areAllShapesTheSameType=require("../../utils/areAllShapesTheSameType"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),unionGeom2=require("./unionGeom2"),unionGeom3=require("./unionGeom3"),union=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");if(!areAllShapesTheSameType(e))throw new Error("only unions of the same type are supported");const o=e[0];return geom2.isA(o)?unionGeom2(e):geom3.isA(o)?unionGeom3(e):o};module.exports=union;
|
|
1609
1609
|
|
|
1610
|
-
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../utils/areAllShapesTheSameType":
|
|
1610
|
+
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../utils/areAllShapesTheSameType":520,"../../utils/flatten":522,"./unionGeom2":410,"./unionGeom3":411}],410:[function(require,module,exports){
|
|
1611
1611
|
const flatten=require("../../utils/flatten"),geom3=require("../../geometries/geom3"),measureEpsilon=require("../../measurements/measureEpsilon"),fromFakePolygons=require("./fromFakePolygons"),to3DWalls=require("./to3DWalls"),unionGeom3=require("./unionGeom3"),union=(...e)=>{const o=(e=flatten(e)).map(e=>to3DWalls({z0:-1,z1:1},e)),n=unionGeom3(o),r=measureEpsilon(n);return fromFakePolygons(r,geom3.toPolygons(n))};module.exports=union;
|
|
1612
1612
|
|
|
1613
|
-
},{"../../geometries/geom3":165,"../../measurements/measureEpsilon":387,"../../utils/flatten":
|
|
1613
|
+
},{"../../geometries/geom3":165,"../../measurements/measureEpsilon":387,"../../utils/flatten":522,"./fromFakePolygons":389,"./to3DWalls":402,"./unionGeom3":411}],411:[function(require,module,exports){
|
|
1614
1614
|
const flatten=require("../../utils/flatten"),retessellate=require("../modifiers/retessellate"),unionSub=require("./unionGeom3Sub"),union=(...e)=>{let t;for(e=flatten(e),t=1;t<e.length;t+=2)e.push(unionSub(e[t-1],e[t]));let n=e[t-1];return n=retessellate(n)};module.exports=union;
|
|
1615
1615
|
|
|
1616
|
-
},{"../../utils/flatten":
|
|
1616
|
+
},{"../../utils/flatten":522,"../modifiers/retessellate":480,"./unionGeom3Sub":412}],412:[function(require,module,exports){
|
|
1617
1617
|
const geom3=require("../../geometries/geom3"),mayOverlap=require("./mayOverlap"),{Tree:Tree}=require("./trees"),unionSub=(e,o)=>{if(!mayOverlap(e,o))return unionForNonIntersecting(e,o);const n=new Tree(geom3.toPolygons(e)),r=new Tree(geom3.toPolygons(o));n.clipTo(r,!1),r.clipTo(n),r.invert(),r.clipTo(n),r.invert();const t=n.allPolygons().concat(r.allPolygons());return geom3.create(t)},unionForNonIntersecting=(e,o)=>{let n=geom3.toPolygons(e);return n=n.concat(geom3.toPolygons(o)),geom3.create(n)};module.exports=unionSub;
|
|
1618
1618
|
|
|
1619
1619
|
},{"../../geometries/geom3":165,"./mayOverlap":395,"./trees":406}],413:[function(require,module,exports){
|
|
1620
1620
|
const flatten=require("../../utils/flatten"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),path2=require("../../geometries/path2"),expandGeom2=require("./expandGeom2"),expandGeom3=require("./expandGeom3"),expandPath2=require("./expandPath2"),expand=(e,...r)=>{if(0===(r=flatten(r)).length)throw new Error("wrong number of arguments");const t=r.map(r=>path2.isA(r)?expandPath2(e,r):geom2.isA(r)?expandGeom2(e,r):geom3.isA(r)?expandGeom3(e,r):r);return 1===t.length?t[0]:t};module.exports=expand;
|
|
1621
1621
|
|
|
1622
|
-
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../geometries/path2":186,"../../utils/flatten":
|
|
1622
|
+
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../geometries/path2":186,"../../utils/flatten":522,"./expandGeom2":414,"./expandGeom3":415,"./expandPath2":416}],414:[function(require,module,exports){
|
|
1623
1623
|
const geom2=require("../../geometries/geom2"),offsetFromPoints=require("./offsetFromPoints"),expandGeom2=(e,o)=>{const{delta:r,corners:s,segments:t}=Object.assign({},{delta:1,corners:"edge",segments:16},e);if("edge"!==s&&"chamfer"!==s&&"round"!==s)throw new Error('corners must be "edge", "chamfer", or "round"');const n=geom2.toOutlines(o).map(o=>offsetFromPoints(e={delta:r,corners:s,closed:!0,segments:t},o)).reduce((e,o)=>e.concat(geom2.toSides(geom2.fromPoints(o))),[]);return geom2.create(n)};module.exports=expandGeom2;
|
|
1624
1624
|
|
|
1625
1625
|
},{"../../geometries/geom2":149,"./offsetFromPoints":421}],415:[function(require,module,exports){
|
|
@@ -1631,7 +1631,7 @@ const area=require("../../maths/utils/area"),vec2=require("../../maths/vec2"),ge
|
|
|
1631
1631
|
},{"../../geometries/geom2":149,"../../geometries/path2":186,"../../maths/utils/area":292,"../../maths/vec2":315,"./offsetFromPoints":421}],417:[function(require,module,exports){
|
|
1632
1632
|
const{EPS:EPS,TAU:TAU}=require("../../maths/constants"),mat4=require("../../maths/mat4"),vec3=require("../../maths/vec3"),fnNumberSort=require("../../utils/fnNumberSort"),geom3=require("../../geometries/geom3"),poly3=require("../../geometries/poly3"),sphere=require("../../primitives/sphere"),retessellate=require("../modifiers/retessellate"),unionGeom3Sub=require("../booleans/unionGeom3Sub"),extrudePolygon=require("./extrudePolygon"),mapPlaneToVertex=(e,t,o)=>{const n=t.toString();if(e.has(n)){e.get(n)[1].push(o)}else{const s=[t,[o]];e.set(n,s)}},mapPlaneToEdge=(e,t,o)=>{const n=t[0].toString(),s=t[1].toString(),r=n<s?`${n},${s}`:`${s},${n}`;if(e.has(r)){e.get(r)[1].push(o)}else{const n=[t,[o]];e.set(r,n)}},addUniqueAngle=(e,t)=>{e.findIndex(e=>e===t)<0&&e.push(t)},expandShell=(e,t)=>{const{delta:o,segments:n}=Object.assign({},{delta:1,segments:12},e);let s=geom3.create();const r=new Map,c=new Map,a=vec3.create(),l=vec3.create();return geom3.toPolygons(t).forEach((e,t)=>{const n=vec3.scale(vec3.create(),poly3.plane(e),2*o),a=poly3.transform(mat4.fromTranslation(mat4.create(),vec3.scale(vec3.create(),n,-.5)),e),l=extrudePolygon(n,a);s=unionGeom3Sub(s,l);const u=e.vertices;for(let t=0;t<u.length;t++){mapPlaneToVertex(r,u[t],poly3.plane(e));const o=(t+1)%u.length,n=[u[t],u[o]];mapPlaneToEdge(c,n,poly3.plane(e))}}),c.forEach(e=>{const t=e[0],r=e[1],c=t[0],u=t[1],i=vec3.subtract(vec3.create(),u,c);vec3.normalize(i,i);const m=r[0],g=vec3.cross(vec3.create(),m,i);let p=[];for(let e=0;e<n;e++)addUniqueAngle(p,e*TAU/n);for(let e=0,t=r.length;e<t;e++){const t=r[e],o=vec3.dot(g,t),n=vec3.dot(m,t);let s=Math.atan2(o,n);s<0&&(s+=TAU),addUniqueAngle(p,s),(s=Math.atan2(-o,-n))<0&&(s+=TAU),addUniqueAngle(p,s)}const h=(p=p.sort(fnNumberSort)).length;let v,d;const f=[],S=[],q=[];for(let e=-1;e<h;e++){const t=p[e<0?e+h:e],n=Math.sin(t),s=Math.cos(t);vec3.scale(a,m,s*o),vec3.scale(l,g,n*o),vec3.add(a,a,l);const r=vec3.add(vec3.create(),c,a),i=vec3.add(vec3.create(),u,a);let y=!1;if(e>=0&&vec3.distance(r,v)<EPS&&(y=!0),!y){if(e>=0){f.push(r),S.push(i);const e=[d,i,r,v],t=poly3.create(e);q.push(t)}v=r,d=i}}S.reverse(),q.push(poly3.create(f)),q.push(poly3.create(S));const y=geom3.create(q);s=unionGeom3Sub(s,y)}),r.forEach(e=>{const t=e[0],r=e[1],c=r[0];let u=null,i=0;for(let e=1;e<r.length;e++){const t=r[e],o=vec3.cross(a,c,t),n=vec3.length(o);n>.05&&n>i&&(i=n,u=t)}u||(u=vec3.orthogonal(a,c));const m=vec3.cross(a,c,u);vec3.normalize(m,m);const g=vec3.cross(l,m,c),p=sphere({center:[t[0],t[1],t[2]],radius:o,segments:n,axes:[c,m,g]});s=unionGeom3Sub(s,p)}),retessellate(s)};module.exports=expandShell;
|
|
1633
1633
|
|
|
1634
|
-
},{"../../geometries/geom3":165,"../../geometries/poly3":203,"../../maths/constants":218,"../../maths/mat4":267,"../../maths/vec3":346,"../../primitives/sphere":
|
|
1634
|
+
},{"../../geometries/geom3":165,"../../geometries/poly3":203,"../../maths/constants":218,"../../maths/mat4":267,"../../maths/vec3":346,"../../primitives/sphere":510,"../../utils/fnNumberSort":523,"../booleans/unionGeom3Sub":412,"../modifiers/retessellate":480,"./extrudePolygon":418}],418:[function(require,module,exports){
|
|
1635
1635
|
const mat4=require("../../maths/mat4"),vec3=require("../../maths/vec3"),geom3=require("../../geometries/geom3"),poly3=require("../../geometries/poly3"),extrudePolygon=(e,r)=>{vec3.dot(poly3.plane(r),e)>0&&(r=poly3.invert(r));const t=[r],o=poly3.transform(mat4.fromTranslation(mat4.create(),e),r),s=r.vertices.length;for(let e=0;e<s;e++){const c=e<s-1?e+1:0,i=poly3.create([r.vertices[e],o.vertices[e],o.vertices[c],r.vertices[c]]);t.push(i)}return t.push(poly3.invert(o)),geom3.create(t)};module.exports=extrudePolygon;
|
|
1636
1636
|
|
|
1637
1637
|
},{"../../geometries/geom3":165,"../../geometries/poly3":203,"../../maths/mat4":267,"../../maths/vec3":346}],419:[function(require,module,exports){
|
|
@@ -1640,7 +1640,7 @@ module.exports={expand:require("./expand"),offset:require("./offset")};
|
|
|
1640
1640
|
},{"./expand":413,"./offset":420}],420:[function(require,module,exports){
|
|
1641
1641
|
const flatten=require("../../utils/flatten"),geom2=require("../../geometries/geom2"),path2=require("../../geometries/path2"),offsetGeom2=require("./offsetGeom2"),offsetPath2=require("./offsetPath2"),offset=(e,...t)=>{if(0===(t=flatten(t)).length)throw new Error("wrong number of arguments");const o=t.map(t=>path2.isA(t)?offsetPath2(e,t):geom2.isA(t)?offsetGeom2(e,t):t);return 1===o.length?o[0]:o};module.exports=offset;
|
|
1642
1642
|
|
|
1643
|
-
},{"../../geometries/geom2":149,"../../geometries/path2":186,"../../utils/flatten":
|
|
1643
|
+
},{"../../geometries/geom2":149,"../../geometries/path2":186,"../../utils/flatten":522,"./offsetGeom2":422,"./offsetPath2":423}],421:[function(require,module,exports){
|
|
1644
1644
|
const{EPS:EPS,TAU:TAU}=require("../../maths/constants"),intersect=require("../../maths/utils/intersect"),line2=require("../../maths/line2"),vec2=require("../../maths/vec2"),area=require("../../maths/utils/area"),offsetFromPoints=(e,t)=>{let{delta:s,corners:c,closed:n,segments:a}=Object.assign({},{delta:1,corners:"edge",closed:!1,segments:16},e);if(Math.abs(s)<EPS)return t;let r=e.closed?area(t):1;0===r&&(r=1);const o=r>0&&s>=0||r<0&&s<0;s=Math.abs(s);let i=null,l=[];const u=[],v=vec2.create(),f=t.length;for(let e=0;e<f;e++){const c=(e+1)%f,a=t[e],r=t[c];o?vec2.subtract(v,a,r):vec2.subtract(v,r,a),vec2.normal(v,v),vec2.normalize(v,v),vec2.scale(v,v,s);const h=vec2.add(vec2.create(),a,v),d=vec2.add(vec2.create(),r,v),m=[h,d];if(null!=i&&(n||!n&&0!==c)){const e=intersect(i[0],i[1],m[0],m[1]);e?(l.pop(),m[0]=e):u.push({c:a,s0:i,s1:m})}i=[h,d],(0!==c||n)&&(l.push(m[0]),l.push(m[1]))}if(n&&null!=i){const e=l[0],s=l[1],c=intersect(i[0],i[1],e,s);if(c)l[0]=c,l.pop();else{const c=t[0],n=[e,s];u.push({c:c,s0:i,s1:n})}}if("edge"===c){const e=new Map;l.forEach((t,s)=>e.set(t,s));const t=line2.create(),s=line2.create();u.forEach(c=>{line2.fromPoints(t,c.s0[0],c.s0[1]),line2.fromPoints(s,c.s1[0],c.s1[1]);const n=line2.intersectPointOfLines(t,s);if(Number.isFinite(n[0])&&Number.isFinite(n[1])){const t=c.s0[1],s=e.get(t);l[s]=n,l[(s+1)%l.length]=void 0}else{const t=c.s1[0],s=e.get(t);l[s]=void 0}}),l=l.filter(e=>void 0!==e)}if("round"===c){let e=Math.floor(a/4);const t=vec2.create();u.forEach(c=>{let n=vec2.angle(vec2.subtract(t,c.s1[0],c.c));if(n-=vec2.angle(vec2.subtract(t,c.s0[1],c.c)),o&&n<0&&(n+=Math.PI)<0&&(n+=Math.PI),!o&&n>0&&(n-=Math.PI)>0&&(n-=Math.PI),0!==n){const r=n/(e=Math.floor(a*(Math.abs(n)/TAU))),o=vec2.angle(vec2.subtract(t,c.s0[1],c.c)),i=[];for(let t=1;t<e;t++){const e=o+r*t,n=vec2.fromAngleRadians(vec2.create(),e);vec2.scale(n,n,s),vec2.add(n,n,c.c),i.push(n)}if(i.length>0){const e=c.s0[1];let t=l.findIndex(t=>vec2.equals(e,t));t=(t+1)%l.length,l.splice(t,0,...i)}}else{const e=c.s1[0],t=l.findIndex(t=>vec2.equals(e,t));l.splice(t,1)}})}return l};module.exports=offsetFromPoints;
|
|
1645
1645
|
|
|
1646
1646
|
},{"../../maths/constants":218,"../../maths/line2":229,"../../maths/utils/area":292,"../../maths/utils/intersect":295,"../../maths/vec2":315}],422:[function(require,module,exports){
|
|
@@ -1682,7 +1682,7 @@ const{TAU:TAU}=require("../../maths/constants"),slice=require("./slice"),mat4=re
|
|
|
1682
1682
|
},{"../../geometries/geom2":149,"../../maths/constants":218,"../../maths/mat4":267,"./extrudeFromSlices":432,"./slice":450}],434:[function(require,module,exports){
|
|
1683
1683
|
const flatten=require("../../utils/flatten"),geom2=require("../../geometries/geom2"),path2=require("../../geometries/path2"),extrudeLinearGeom2=require("./extrudeLinearGeom2"),extrudeLinearPath2=require("./extrudeLinearPath2"),extrudeLinear=(e,...t)=>{const{height:r,twistAngle:i,twistSteps:n,repair:a}=Object.assign({},{height:1,twistAngle:0,twistSteps:1,repair:!0},e);if(0===(t=flatten(t)).length)throw new Error("wrong number of arguments");e={offset:[0,0,r],twistAngle:i,twistSteps:n,repair:a};const s=t.map(t=>path2.isA(t)?extrudeLinearPath2(e,t):geom2.isA(t)?extrudeLinearGeom2(e,t):t);return 1===s.length?s[0]:s};module.exports=extrudeLinear;
|
|
1684
1684
|
|
|
1685
|
-
},{"../../geometries/geom2":149,"../../geometries/path2":186,"../../utils/flatten":
|
|
1685
|
+
},{"../../geometries/geom2":149,"../../geometries/path2":186,"../../utils/flatten":522,"./extrudeLinearGeom2":435,"./extrudeLinearPath2":436}],435:[function(require,module,exports){
|
|
1686
1686
|
const mat4=require("../../maths/mat4"),vec3=require("../../maths/vec3"),geom2=require("../../geometries/geom2"),slice=require("./slice"),extrudeFromSlices=require("./extrudeFromSlices"),extrudeGeom2=(e,t)=>{let{offset:r,twistAngle:s,twistSteps:o,repair:i}=Object.assign({},{offset:[0,0,1],twistAngle:0,twistSteps:12,repair:!0},e);if(o<1)throw new Error("twistSteps must be 1 or more");0===s&&(o=1);const c=vec3.clone(r),m=geom2.toSides(t);if(0===m.length)throw new Error("the given geometry cannot be empty");const a=slice.fromSides(m);c[2]<0&&slice.reverse(a,a);const n=mat4.create();return extrudeFromSlices(e={numberOfSlices:o+1,capStart:!0,capEnd:!0,repair:i,callback:(e,t,r)=>{const i=t/o*s,m=vec3.scale(vec3.create(),c,t/o);return mat4.multiply(n,mat4.fromZRotation(n,i),mat4.fromTranslation(mat4.create(),m)),slice.transform(n,r)}},a)};module.exports=extrudeGeom2;
|
|
1687
1687
|
|
|
1688
1688
|
},{"../../geometries/geom2":149,"../../maths/mat4":267,"../../maths/vec3":346,"./extrudeFromSlices":432,"./slice":450}],436:[function(require,module,exports){
|
|
@@ -1691,7 +1691,7 @@ const geom2=require("../../geometries/geom2"),path2=require("../../geometries/pa
|
|
|
1691
1691
|
},{"../../geometries/geom2":149,"../../geometries/path2":186,"./extrudeLinearGeom2":435}],437:[function(require,module,exports){
|
|
1692
1692
|
const flatten=require("../../utils/flatten"),geom2=require("../../geometries/geom2"),path2=require("../../geometries/path2"),extrudeRectangularPath2=require("./extrudeRectangularPath2"),extrudeRectangularGeom2=require("./extrudeRectangularGeom2"),extrudeRectangular=(e,...t)=>{const{size:r,height:a}=Object.assign({},{size:1,height:1},e);if(0===(t=flatten(t)).length)throw new Error("wrong number of arguments");if(r<=0)throw new Error("size must be positive");if(a<=0)throw new Error("height must be positive");const u=t.map(t=>path2.isA(t)?extrudeRectangularPath2(e,t):geom2.isA(t)?extrudeRectangularGeom2(e,t):t);return 1===u.length?u[0]:u};module.exports=extrudeRectangular;
|
|
1693
1693
|
|
|
1694
|
-
},{"../../geometries/geom2":149,"../../geometries/path2":186,"../../utils/flatten":
|
|
1694
|
+
},{"../../geometries/geom2":149,"../../geometries/path2":186,"../../utils/flatten":522,"./extrudeRectangularGeom2":438,"./extrudeRectangularPath2":439}],438:[function(require,module,exports){
|
|
1695
1695
|
const{area:area}=require("../../maths/utils"),geom2=require("../../geometries/geom2"),path2=require("../../geometries/path2"),expand=require("../expansions/expand"),extrudeLinearGeom2=require("./extrudeLinearGeom2"),extrudeRectangularGeom2=(e,r)=>{const{size:t,height:o}=Object.assign({},{size:1,height:1},e);e.delta=t,e.offset=[0,0,o];const a=geom2.toOutlines(r);if(0===a.length)throw new Error("the given geometry cannot be empty");const n=a.map(r=>(area(r)<0&&r.reverse(),expand(e,path2.fromPoints({closed:!0},r)))).reduce((e,r)=>e.concat(geom2.toSides(r)),[]),i=geom2.create(n);return extrudeLinearGeom2(e,i)};module.exports=extrudeRectangularGeom2;
|
|
1696
1696
|
|
|
1697
1697
|
},{"../../geometries/geom2":149,"../../geometries/path2":186,"../../maths/utils":293,"../expansions/expand":413,"./extrudeLinearGeom2":435}],439:[function(require,module,exports){
|
|
@@ -1700,7 +1700,7 @@ const path2=require("../../geometries/path2"),expand=require("../expansions/expa
|
|
|
1700
1700
|
},{"../../geometries/path2":186,"../expansions/expand":413,"./extrudeLinearGeom2":435}],440:[function(require,module,exports){
|
|
1701
1701
|
const{TAU:TAU}=require("../../maths/constants"),mat4=require("../../maths/mat4"),{mirrorX:mirrorX}=require("../transforms/mirror"),geom2=require("../../geometries/geom2"),slice=require("./slice"),extrudeFromSlices=require("./extrudeFromSlices"),extrudeRotate=(e,t)=>{const r={segments:12,startAngle:0,angle:TAU,overflow:"cap"};let{segments:a,startAngle:o,angle:s,overflow:m}=Object.assign({},r,e);if(a<3)throw new Error("segments must be greater then 3");o=Math.abs(o)>TAU?o%TAU:o,s=Math.abs(s)>TAU?s%TAU:s;let n=o+s;if((n=Math.abs(n)>TAU?n%TAU:n)<o){const e=o;o=n,n=e}let l=n-o;if(l<=0&&(l=TAU),Math.abs(l)<TAU){const e=TAU/a;a=Math.floor(Math.abs(l)/e),Math.abs(l)>a*e&&a++}let i=geom2.toSides(t);if(0===i.length)throw new Error("the given geometry cannot be empty");const c=i.filter(e=>e[0][0]<0),g=i.filter(e=>e[0][0]>=0);c.length>0&&g.length>0&&"cap"===m&&(c.length>g.length?(i=i.map(e=>{let t=e[0],r=e[1];return[t=[Math.min(t[0],0),t[1]],r=[Math.min(r[0],0),r[1]]]}),t=geom2.create(i),t=mirrorX(t)):g.length>=c.length&&(i=i.map(e=>{let t=e[0],r=e[1];return[t=[Math.max(t[0],0),t[1]],r=[Math.max(r[0],0),r[1]]]}),t=geom2.create(i)));const h=l/a,u=Math.abs(l)<TAU,A=slice.fromSides(geom2.toSides(t));slice.reverse(A,A);const f=mat4.create();return extrudeFromSlices(e={numberOfSlices:a+1,capStart:u,capEnd:u,close:!u,callback:(e,t,r)=>{let s=h*t+o;return l===TAU&&t===a&&(s=o),mat4.multiply(f,mat4.fromZRotation(f,s),mat4.fromXRotation(mat4.create(),TAU/4)),slice.transform(f,r)}},A)};module.exports=extrudeRotate;
|
|
1702
1702
|
|
|
1703
|
-
},{"../../geometries/geom2":149,"../../maths/constants":218,"../../maths/mat4":267,"../transforms/mirror":
|
|
1703
|
+
},{"../../geometries/geom2":149,"../../maths/constants":218,"../../maths/mat4":267,"../transforms/mirror":487,"./extrudeFromSlices":432,"./slice":450}],441:[function(require,module,exports){
|
|
1704
1704
|
const{EPS:EPS}=require("../../maths/constants"),vec3=require("../../maths/vec3"),poly3=require("../../geometries/poly3"),slice=require("./slice"),gcd=(e,t)=>e===t?e:e<t?gcd(t,e):1===t?1:0===t?e:gcd(t,e%t),lcm=(e,t)=>e*t/gcd(e,t),repartitionEdges=(e,t)=>{const r=e/t.length;if(1===r)return t;const s=vec3.fromValues(r,r,r),c=[];return t.forEach(e=>{const t=vec3.subtract(vec3.create(),e[1],e[0]);vec3.divide(t,t,s);let l=e[0];for(let e=1;e<=r;++e){const e=vec3.add(vec3.create(),l,t);c.push([l,e]),l=e}}),c},EPSAREA=EPS*EPS/2*Math.sin(Math.PI/3),extrudeWalls=(e,t)=>{let r=slice.toEdges(e),s=slice.toEdges(t);if(r.length!==s.length){const e=lcm(r.length,s.length);e!==r.length&&(r=repartitionEdges(e,r)),e!==s.length&&(s=repartitionEdges(e,s))}const c=[];return r.forEach((e,t)=>{const r=s[t],l=poly3.create([e[0],e[1],r[1]]),o=poly3.measureArea(l);Number.isFinite(o)&&o>EPSAREA&&c.push(l);const n=poly3.create([e[0],r[1],r[0]]),i=poly3.measureArea(n);Number.isFinite(i)&&i>EPSAREA&&c.push(n)}),c};module.exports=extrudeWalls;
|
|
1705
1705
|
|
|
1706
1706
|
},{"../../geometries/poly3":203,"../../maths/constants":218,"../../maths/vec3":346,"./slice":450}],442:[function(require,module,exports){
|
|
@@ -1709,7 +1709,7 @@ module.exports={extrudeFromSlices:require("./extrudeFromSlices"),extrudeLinear:r
|
|
|
1709
1709
|
},{"./extrudeFromSlices":432,"./extrudeHelical":433,"./extrudeLinear":434,"./extrudeRectangular":437,"./extrudeRotate":440,"./project":443,"./slice":450}],443:[function(require,module,exports){
|
|
1710
1710
|
const flatten=require("../../utils/flatten"),aboutEqualNormals=require("../../maths/utils/aboutEqualNormals"),plane=require("../../maths/plane"),mat4=require("../../maths/mat4"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),poly3=require("../../geometries/poly3"),measureEpsilon=require("../../measurements/measureEpsilon"),unionGeom2=require("../booleans/unionGeom2"),projectGeom3=(e,o)=>{const r=plane.fromNormalAndPoint(plane.create(),e.axis,e.origin);if(Number.isNaN(r[0])||Number.isNaN(r[1])||Number.isNaN(r[2])||Number.isNaN(r[3]))throw new Error("project: invalid axis or origin");const t=measureEpsilon(o),a=t*t*Math.sqrt(3)/4;if(0===t)return geom2.create();const n=geom3.toPolygons(o);let s=[];for(let e=0;e<n.length;e++){const o=n[e].vertices.map(e=>plane.projectionOfPoint(r,e)),t=poly3.create(o),i=poly3.plane(t);aboutEqualNormals(r,i)&&(poly3.measureArea(t)<a||s.push(t))}if(!aboutEqualNormals(r,[0,0,1])){const e=mat4.fromVectorRotation(mat4.create(),r,[0,0,1]);s=s.map(o=>poly3.transform(e,o))}const i=(s=s.sort((e,o)=>poly3.measureArea(o)-poly3.measureArea(e))).map(e=>geom2.fromPoints(e.vertices));return unionGeom2(i)},project=(e,...o)=>{const{axis:r,origin:t}=Object.assign({},{axis:[0,0,1],origin:[0,0,0]},e);if(0===(o=flatten(o)).length)throw new Error("wrong number of arguments");e={axis:r,origin:t};const a=o.map(o=>geom3.isA(o)?projectGeom3(e,o):o);return 1===a.length?a[0]:a};module.exports=project;
|
|
1711
1711
|
|
|
1712
|
-
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../geometries/poly3":203,"../../maths/mat4":267,"../../maths/plane":287,"../../maths/utils/aboutEqualNormals":291,"../../measurements/measureEpsilon":387,"../../utils/flatten":
|
|
1712
|
+
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../geometries/poly3":203,"../../maths/mat4":267,"../../maths/plane":287,"../../maths/utils/aboutEqualNormals":291,"../../measurements/measureEpsilon":387,"../../utils/flatten":522,"../booleans/unionGeom2":410}],444:[function(require,module,exports){
|
|
1713
1713
|
const plane=require("../../../maths/plane"),vec3=require("../../../maths/vec3"),calculatePlane=e=>{const c=e.edges;if(c.length<3)throw new Error("slices must have 3 or more edges to calculate a plane");const a=c.reduce((e,c)=>vec3.add(vec3.create(),e,c[0]),vec3.create());let t;vec3.scale(a,a,1/c.length);let l=0;c.forEach(e=>{if(!vec3.equals(e[0],e[1])){const c=vec3.squaredDistance(a,e[0]);c>l&&(t=e,l=c)}});const r=c.find(e=>vec3.equals(e[1],t[0]));return plane.fromPoints(plane.create(),r[0],t[0],t[1])};module.exports=calculatePlane;
|
|
1714
1714
|
|
|
1715
1715
|
},{"../../../maths/plane":287,"../../../maths/vec3":346}],445:[function(require,module,exports){
|
|
@@ -1754,235 +1754,238 @@ const vec3=require("../../../maths/vec3"),create=require("./create"),transform=(
|
|
|
1754
1754
|
},{"../../../maths/vec3":346,"./create":446}],458:[function(require,module,exports){
|
|
1755
1755
|
const flatten=require("../../utils/flatten"),areAllShapesTheSameType=require("../../utils/areAllShapesTheSameType"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),path2=require("../../geometries/path2"),hullPath2=require("./hullPath2"),hullGeom2=require("./hullGeom2"),hullGeom3=require("./hullGeom3"),hull=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");if(!areAllShapesTheSameType(e))throw new Error("only hulls of the same type are supported");const l=e[0];return path2.isA(l)?hullPath2(e):geom2.isA(l)?hullGeom2(e):geom3.isA(l)?hullGeom3(e):l};module.exports=hull;
|
|
1756
1756
|
|
|
1757
|
-
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../geometries/path2":186,"../../utils/areAllShapesTheSameType":
|
|
1757
|
+
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../geometries/path2":186,"../../utils/areAllShapesTheSameType":520,"../../utils/flatten":522,"./hullGeom2":460,"./hullGeom3":461,"./hullPath2":462}],459:[function(require,module,exports){
|
|
1758
1758
|
const flatten=require("../../utils/flatten"),union=require("../booleans/union"),hull=require("./hull"),hullChain=(...n)=>{if((n=flatten(n)).length<2)throw new Error("wrong number of arguments");const e=[];for(let l=1;l<n.length;l++)e.push(hull(n[l-1],n[l]));return union(e)};module.exports=hullChain;
|
|
1759
1759
|
|
|
1760
|
-
},{"../../utils/flatten":
|
|
1760
|
+
},{"../../utils/flatten":522,"../booleans/union":409,"./hull":458}],460:[function(require,module,exports){
|
|
1761
1761
|
const flatten=require("../../utils/flatten"),geom2=require("../../geometries/geom2"),hullPoints2=require("./hullPoints2"),toUniquePoints=require("./toUniquePoints"),hullGeom2=(...e)=>{e=flatten(e);const t=toUniquePoints(e),o=hullPoints2(t);return o.length<3?geom2.create():geom2.fromPoints(o)};module.exports=hullGeom2;
|
|
1762
1762
|
|
|
1763
|
-
},{"../../geometries/geom2":149,"../../utils/flatten":
|
|
1764
|
-
const flatten=require("../../utils/flatten"),geom3=require("../../geometries/geom3"),
|
|
1763
|
+
},{"../../geometries/geom2":149,"../../utils/flatten":522,"./hullPoints2":463,"./toUniquePoints":474}],461:[function(require,module,exports){
|
|
1764
|
+
const flatten=require("../../utils/flatten"),geom3=require("../../geometries/geom3"),toUniquePoints=require("./toUniquePoints"),hullPoints3=require("./hullPoints3"),hullGeom3=(...e)=>{e=flatten(e);const t=toUniquePoints(e);return 0===t.length?geom3.create():geom3.create(hullPoints3(t))};module.exports=hullGeom3;
|
|
1765
1765
|
|
|
1766
|
-
},{"../../geometries/geom3":165,"../../
|
|
1766
|
+
},{"../../geometries/geom3":165,"../../utils/flatten":522,"./hullPoints3":464,"./toUniquePoints":474}],462:[function(require,module,exports){
|
|
1767
1767
|
const flatten=require("../../utils/flatten"),path2=require("../../geometries/path2"),hullPoints2=require("./hullPoints2"),toUniquePoints=require("./toUniquePoints"),hullPath2=(...t)=>{t=flatten(t);const e=toUniquePoints(t),o=hullPoints2(e);return path2.fromPoints({closed:!0},o)};module.exports=hullPath2;
|
|
1768
1768
|
|
|
1769
|
-
},{"../../geometries/path2":186,"../../utils/flatten":
|
|
1769
|
+
},{"../../geometries/path2":186,"../../utils/flatten":522,"./hullPoints2":463,"./toUniquePoints":474}],463:[function(require,module,exports){
|
|
1770
1770
|
const vec2=require("../../maths/vec2"),hullPoints2=e=>{let t=vec2.fromValues(1/0,1/0);e.forEach(e=>{(e[1]<t[1]||e[1]===t[1]&&e[0]<t[0])&&(t=e)});const n=[];e.forEach(e=>{const o=fakeAtan2(e[1]-t[1],e[0]-t[0]),s=vec2.squaredDistance(e,t);n.push({point:e,angle:o,distSq:s})}),n.sort((e,t)=>e.angle!==t.angle?e.angle-t.angle:e.distSq-t.distSq);const o=[];return n.forEach(e=>{let t=o.length;for(;t>1&&ccw(o[t-2],o[t-1],e.point)<=Number.EPSILON;)o.pop(),t=o.length;o.push(e.point)}),o},ccw=(e,t,n)=>(t[0]-e[0])*(n[1]-e[1])-(t[1]-e[1])*(n[0]-e[0]),fakeAtan2=(e,t)=>0===e&&0===t?-1/0:-t/e;module.exports=hullPoints2;
|
|
1771
1771
|
|
|
1772
1772
|
},{"../../maths/vec2":315}],464:[function(require,module,exports){
|
|
1773
|
-
|
|
1773
|
+
const poly3=require("../../geometries/poly3"),quickhull=require("./quickhull"),hullPoints3=l=>{return quickhull(l,{skipTriangulation:!0}).map(u=>{const e=u.map(u=>l[u]);return poly3.create(e)})};module.exports=hullPoints3;
|
|
1774
|
+
|
|
1775
|
+
},{"../../geometries/poly3":203,"./quickhull":472}],465:[function(require,module,exports){
|
|
1776
|
+
module.exports={hull:require("./hull"),hullChain:require("./hullChain"),hullPoints2:require("./hullPoints2"),hullPoints3:require("./hullPoints3")};
|
|
1774
1777
|
|
|
1775
|
-
},{"./hull":458,"./hullChain":459}],
|
|
1778
|
+
},{"./hull":458,"./hullChain":459,"./hullPoints2":463,"./hullPoints3":464}],466:[function(require,module,exports){
|
|
1776
1779
|
const add=require("../../../maths/vec3/add"),copy=require("../../../maths/vec3/copy"),cross=require("../../../maths/vec3/cross"),dot=require("../../../maths/vec3/dot"),length=require("../../../maths/vec3/length"),normalize=require("../../../maths/vec3/normalize"),scale=require("../../../maths/vec3/scale"),subtract=require("../../../maths/vec3/subtract"),HalfEdge=require("./HalfEdge"),VISIBLE=0,NON_CONVEX=1,DELETED=2;class Face{constructor(){this.normal=[],this.centroid=[],this.offset=0,this.outside=null,this.mark=VISIBLE,this.edge=null,this.nVertices=0}getEdge(e){if("number"!=typeof e)throw Error("requires a number");let t=this.edge;for(;e>0;)t=t.next,e-=1;for(;e<0;)t=t.prev,e+=1;return t}computeNormal(){const e=this.edge,t=e.next;let r=t.next;const s=subtract([],t.head().point,e.head().point),o=[],i=[];for(this.nVertices=2,this.normal=[0,0,0];r!==e;)copy(i,s),subtract(s,r.head().point,e.head().point),add(this.normal,this.normal,cross(o,i,s)),r=r.next,this.nVertices+=1;this.area=length(this.normal),this.normal=scale(this.normal,this.normal,1/this.area)}computeNormalMinArea(e){if(this.computeNormal(),this.area<e){let e,t=0,r=this.edge;do{const s=r.lengthSquared();s>t&&(e=r,t=s),r=r.next}while(r!==this.edge);const s=e.tail().point,o=e.head().point,i=subtract([],o,s),n=Math.sqrt(t);scale(i,i,1/n);const a=dot(this.normal,i);scale(i,i,-a),add(this.normal,this.normal,i),normalize(this.normal,this.normal)}}computeCentroid(){this.centroid=[0,0,0];let e=this.edge;do{add(this.centroid,this.centroid,e.head().point),e=e.next}while(e!==this.edge);scale(this.centroid,this.centroid,1/this.nVertices)}computeNormalAndCentroid(e){void 0!==e?this.computeNormalMinArea(e):this.computeNormal(),this.computeCentroid(),this.offset=dot(this.normal,this.centroid)}distanceToPlane(e){return dot(this.normal,e)-this.offset}connectHalfEdges(e,t){let r;if(e.opposite.face===t.opposite.face){const s=t.opposite.face;let o;e===this.edge&&(this.edge=t),3===s.nVertices?(o=t.opposite.prev.opposite,s.mark=DELETED,r=s):(o=t.opposite.next,s.edge===o.prev&&(s.edge=o),o.prev=o.prev.prev,o.prev.next=o),t.prev=e.prev,t.prev.next=t,t.setOpposite(o),s.computeNormalAndCentroid()}else e.next=t,t.prev=e;return r}mergeAdjacentFaces(e,t){const r=e.opposite,s=r.face;t.push(s),s.mark=DELETED;let o,i,n=e.prev,a=e.next,c=r.prev,h=r.next;for(;n.opposite.face===s;)n=n.prev,h=h.next;for(;a.opposite.face===s;)a=a.next,c=c.prev;for(o=h;o!==c.next;o=o.next)o.face=this;return this.edge=a,(i=this.connectHalfEdges(c,a))&&t.push(i),(i=this.connectHalfEdges(n,h))&&t.push(i),this.computeNormalAndCentroid(),t}collectIndices(){const e=[];let t=this.edge;do{e.push(t.head().index),t=t.next}while(t!==this.edge);return e}static createTriangle(e,t,r,s=0){const o=new Face,i=new HalfEdge(e,o),n=new HalfEdge(t,o),a=new HalfEdge(r,o);return i.next=a.prev=n,n.next=i.prev=a,a.next=n.prev=i,o.edge=i,o.computeNormalAndCentroid(s),o}}module.exports={VISIBLE:VISIBLE,NON_CONVEX:1,DELETED:DELETED,Face:Face};
|
|
1777
1780
|
|
|
1778
|
-
},{"../../../maths/vec3/add":333,"../../../maths/vec3/copy":336,"../../../maths/vec3/cross":338,"../../../maths/vec3/dot":341,"../../../maths/vec3/length":347,"../../../maths/vec3/normalize":353,"../../../maths/vec3/scale":358,"../../../maths/vec3/subtract":362,"./HalfEdge":
|
|
1781
|
+
},{"../../../maths/vec3/add":333,"../../../maths/vec3/copy":336,"../../../maths/vec3/cross":338,"../../../maths/vec3/dot":341,"../../../maths/vec3/length":347,"../../../maths/vec3/normalize":353,"../../../maths/vec3/scale":358,"../../../maths/vec3/subtract":362,"./HalfEdge":467}],467:[function(require,module,exports){
|
|
1779
1782
|
const distance=require("../../../maths/vec3/distance"),squaredDistance=require("../../../maths/vec3/squaredDistance");class HalfEdge{constructor(t,e){this.vertex=t,this.face=e,this.next=null,this.prev=null,this.opposite=null}head(){return this.vertex}tail(){return this.prev?this.prev.vertex:null}length(){return this.tail()?distance(this.tail().point,this.head().point):-1}lengthSquared(){return this.tail()?squaredDistance(this.tail().point,this.head().point):-1}setOpposite(t){this.opposite=t,t.opposite=this}}module.exports=HalfEdge;
|
|
1780
1783
|
|
|
1781
|
-
},{"../../../maths/vec3/distance":339,"../../../maths/vec3/squaredDistance":360}],
|
|
1784
|
+
},{"../../../maths/vec3/distance":339,"../../../maths/vec3/squaredDistance":360}],468:[function(require,module,exports){
|
|
1782
1785
|
const dot=require("../../../maths/vec3/dot"),pointLineDistance=require("./point-line-distance"),getPlaneNormal=require("./get-plane-normal"),VertexList=require("./VertexList"),Vertex=require("./Vertex"),{Face:Face,VISIBLE:VISIBLE,NON_CONVEX:NON_CONVEX,DELETED:DELETED}=require("./Face"),MERGE_NON_CONVEX_WRT_LARGER_FACE=1,MERGE_NON_CONVEX=2;class QuickHull{constructor(e){if(!Array.isArray(e))throw TypeError("input is not a valid array");if(e.length<4)throw Error("cannot build a simplex out of <4 points");this.tolerance=-1,this.nFaces=0,this.nPoints=e.length,this.faces=[],this.newFaces=[],this.claimed=new VertexList,this.unclaimed=new VertexList,this.vertices=[];for(let t=0;t<e.length;t+=1)this.vertices.push(new Vertex(e[t],t));this.discardedFaces=[],this.vertexPointIndices=[]}addVertexToFace(e,t){e.face=t,t.outside?this.claimed.insertBefore(t.outside,e):this.claimed.add(e),t.outside=e}removeVertexFromFace(e,t){e===t.outside&&(e.next&&e.next.face===t?t.outside=e.next:t.outside=null),this.claimed.remove(e)}removeAllVerticesFromFace(e){if(e.outside){let t=e.outside;for(;t.next&&t.next.face===e;)t=t.next;return this.claimed.removeChain(e.outside,t),t.next=null,e.outside}}deleteFaceVertices(e,t){const i=this.removeAllVerticesFromFace(e);if(i)if(t){let e;for(let s=i;s;s=e){e=s.next,t.distanceToPlane(s.point)>this.tolerance?this.addVertexToFace(s,t):this.unclaimed.add(s)}}else this.unclaimed.addAll(i)}resolveUnclaimedPoints(e){let t=this.unclaimed.first();for(let i=t;i;i=t){t=i.next;let s,o=this.tolerance;for(let t=0;t<e.length;t+=1){const a=e[t];if(a.mark===VISIBLE){const e=a.distanceToPlane(i.point);if(e>o&&(o=e,s=a),o>1e3*this.tolerance)break}}s&&this.addVertexToFace(i,s)}}computeExtremes(){const e=[],t=[],i=[],s=[];let o,a;for(o=0;o<3;o+=1)i[o]=s[o]=this.vertices[0];for(o=0;o<3;o+=1)e[o]=t[o]=this.vertices[0].point[o];for(o=1;o<this.vertices.length;o+=1){const c=this.vertices[o],n=c.point;for(a=0;a<3;a+=1)n[a]<e[a]&&(e[a]=n[a],i[a]=c);for(a=0;a<3;a+=1)n[a]>t[a]&&(t[a]=n[a],s[a]=c)}return this.tolerance=3*Number.EPSILON*(Math.max(Math.abs(e[0]),Math.abs(t[0]))+Math.max(Math.abs(e[1]),Math.abs(t[1]))+Math.max(Math.abs(e[2]),Math.abs(t[2]))),[i,s]}createInitialSimplex(){const e=this.vertices,[t,i]=this.computeExtremes();let s,o,a,c,n=0,r=0;for(a=0;a<3;a+=1){const e=i[a].point[a]-t[a].point[a];e>n&&(n=e,r=a)}const l=t[r],h=i[r];for(n=0,a=0;a<this.vertices.length;a+=1){const e=this.vertices[a];if(e!==l&&e!==h){const t=pointLineDistance(e.point,l.point,h.point);t>n&&(n=t,s=e)}}const d=getPlaneNormal([],l.point,h.point,s.point),p=dot(l.point,d);for(n=-1,a=0;a<this.vertices.length;a+=1){const e=this.vertices[a];if(e!==l&&e!==h&&e!==s){const t=Math.abs(dot(d,e.point)-p);t>n&&(n=t,o=e)}}const f=[];if(dot(o.point,d)-p<0)for(f.push(Face.createTriangle(l,h,s),Face.createTriangle(o,h,l),Face.createTriangle(o,s,h),Face.createTriangle(o,l,s)),a=0;a<3;a+=1){const e=(a+1)%3;f[a+1].getEdge(2).setOpposite(f[0].getEdge(e)),f[a+1].getEdge(1).setOpposite(f[e+1].getEdge(0))}else for(f.push(Face.createTriangle(l,s,h),Face.createTriangle(o,l,h),Face.createTriangle(o,h,s),Face.createTriangle(o,s,l)),a=0;a<3;a+=1){const e=(a+1)%3;f[a+1].getEdge(2).setOpposite(f[0].getEdge((3-a)%3)),f[a+1].getEdge(0).setOpposite(f[e+1].getEdge(1))}for(a=0;a<4;a+=1)this.faces.push(f[a]);for(a=0;a<e.length;a+=1){const t=e[a];if(t!==l&&t!==h&&t!==s&&t!==o){let e;for(n=this.tolerance,c=0;c<4;c+=1){const i=f[c].distanceToPlane(t.point);i>n&&(n=i,e=f[c])}e&&this.addVertexToFace(t,e)}}}reindexFaceAndVertices(){const e=[];for(let t=0;t<this.faces.length;t+=1){const i=this.faces[t];i.mark===VISIBLE&&e.push(i)}this.faces=e}collectFaces(e){const t=[];for(let i=0;i<this.faces.length;i+=1){if(this.faces[i].mark!==VISIBLE)throw Error("attempt to include a destroyed face in the hull");const s=this.faces[i].collectIndices();if(e)t.push(s);else for(let e=0;e<s.length-2;e+=1)t.push([s[0],s[e+1],s[e+2]])}return t}nextVertexToAdd(){if(!this.claimed.isEmpty()){let e,t,i=0;const s=this.claimed.first().face;for(t=s.outside;t&&t.face===s;t=t.next){const o=s.distanceToPlane(t.point);o>i&&(i=o,e=t)}return e}}computeHorizon(e,t,i,s){let o;this.deleteFaceVertices(i),i.mark=DELETED,o=t?t.next:t=i.getEdge(0);do{const t=o.opposite,i=t.face;i.mark===VISIBLE&&(i.distanceToPlane(e)>this.tolerance?this.computeHorizon(e,t,i,s):s.push(o)),o=o.next}while(o!==t)}addAdjoiningFace(e,t){const i=Face.createTriangle(e,t.tail(),t.head());return this.faces.push(i),i.getEdge(-1).setOpposite(t.opposite),i.getEdge(0)}addNewFaces(e,t){let i,s;this.newFaces=[];for(let o=0;o<t.length;o+=1){const a=t[o],c=this.addAdjoiningFace(e,a);i?c.next.setOpposite(s):i=c,this.newFaces.push(c.face),s=c}i.next.setOpposite(s)}oppositeFaceDistance(e){return e.face.distanceToPlane(e.opposite.face.centroid)}doAdjacentMerge(e,t){let i=e.edge,s=!0,o=0;do{if(o>=e.nVertices)throw Error("merge recursion limit exceeded");const a=i.opposite.face;let c=!1;if(t===MERGE_NON_CONVEX?(this.oppositeFaceDistance(i)>-this.tolerance||this.oppositeFaceDistance(i.opposite)>-this.tolerance)&&(c=!0):e.area>a.area?this.oppositeFaceDistance(i)>-this.tolerance?c=!0:this.oppositeFaceDistance(i.opposite)>-this.tolerance&&(s=!1):this.oppositeFaceDistance(i.opposite)>-this.tolerance?c=!0:this.oppositeFaceDistance(i)>-this.tolerance&&(s=!1),c){const t=e.mergeAdjacentFaces(i,[]);for(let i=0;i<t.length;i+=1)this.deleteFaceVertices(t[i],e);return!0}i=i.next,o+=1}while(i!==e.edge);return s||(e.mark=NON_CONVEX),!1}addVertexToHull(e){const t=[];this.unclaimed.clear(),this.removeVertexFromFace(e,e.face),this.computeHorizon(e.point,null,e.face,t),this.addNewFaces(e,t);for(let e=0;e<this.newFaces.length;e+=1){const t=this.newFaces[e];if(t.mark===VISIBLE)for(;this.doAdjacentMerge(t,MERGE_NON_CONVEX_WRT_LARGER_FACE););}for(let e=0;e<this.newFaces.length;e+=1){const t=this.newFaces[e];if(t.mark===NON_CONVEX)for(t.mark=VISIBLE;this.doAdjacentMerge(t,MERGE_NON_CONVEX););}this.resolveUnclaimedPoints(this.newFaces)}build(){let e;for(this.createInitialSimplex();e=this.nextVertexToAdd();)this.addVertexToHull(e);this.reindexFaceAndVertices()}}module.exports=QuickHull;
|
|
1783
1786
|
|
|
1784
|
-
},{"../../../maths/vec3/dot":341,"./Face":
|
|
1787
|
+
},{"../../../maths/vec3/dot":341,"./Face":466,"./Vertex":469,"./VertexList":470,"./get-plane-normal":471,"./point-line-distance":473}],469:[function(require,module,exports){
|
|
1785
1788
|
class Vertex{constructor(t,e){this.point=t,this.index=e,this.next=null,this.prev=null,this.face=null}}module.exports=Vertex;
|
|
1786
1789
|
|
|
1787
|
-
},{}],
|
|
1790
|
+
},{}],470:[function(require,module,exports){
|
|
1788
1791
|
class VertexList{constructor(){this.head=null,this.tail=null}clear(){this.head=this.tail=null}insertBefore(e,t){t.prev=e.prev,t.next=e,t.prev?t.prev.next=t:this.head=t,e.prev=t}insertAfter(e,t){t.prev=e,t.next=e.next,t.next?t.next.prev=t:this.tail=t,e.next=t}add(e){this.head?this.tail.next=e:this.head=e,e.prev=this.tail,e.next=null,this.tail=e}addAll(e){for(this.head?this.tail.next=e:this.head=e,e.prev=this.tail;e.next;)e=e.next;this.tail=e}remove(e){e.prev?e.prev.next=e.next:this.head=e.next,e.next?e.next.prev=e.prev:this.tail=e.prev}removeChain(e,t){e.prev?e.prev.next=t.next:this.head=t.next,t.next?t.next.prev=e.prev:this.tail=e.prev}first(){return this.head}isEmpty(){return!this.head}}module.exports=VertexList;
|
|
1789
1792
|
|
|
1790
|
-
},{}],
|
|
1793
|
+
},{}],471:[function(require,module,exports){
|
|
1791
1794
|
const cross=require("../../../maths/vec3/cross"),normalize=require("../../../maths/vec3/normalize"),subtract=require("../../../maths/vec3/subtract"),planeNormal=(r,e,s,t)=>{const a=[0,0,0];return subtract(r,e,s),subtract(a,s,t),cross(r,r,a),normalize(r,r)};module.exports=planeNormal;
|
|
1792
1795
|
|
|
1793
|
-
},{"../../../maths/vec3/cross":338,"../../../maths/vec3/normalize":353,"../../../maths/vec3/subtract":362}],
|
|
1796
|
+
},{"../../../maths/vec3/cross":338,"../../../maths/vec3/normalize":353,"../../../maths/vec3/subtract":362}],472:[function(require,module,exports){
|
|
1794
1797
|
const QuickHull=require("./QuickHull"),runner=(u,l={})=>{const e=new QuickHull(u);return e.build(),e.collectFaces(l.skipTriangulation)};module.exports=runner;
|
|
1795
1798
|
|
|
1796
|
-
},{"./QuickHull":
|
|
1799
|
+
},{"./QuickHull":468}],473:[function(require,module,exports){
|
|
1797
1800
|
const cross=require("../../../maths/vec3/cross"),subtract=require("../../../maths/vec3/subtract"),squaredLength=require("../../../maths/vec3/squaredLength"),distanceSquared=(e,t,r)=>{const s=[],a=[];subtract(s,r,t),subtract(a,e,t);const n=squaredLength(cross([],a,s)),c=squaredLength(s);if(0===c)throw Error("a and b are the same point");return n/c},pointLineDistance=(e,t,r)=>Math.sqrt(distanceSquared(e,t,r));module.exports=pointLineDistance;
|
|
1798
1801
|
|
|
1799
|
-
},{"../../../maths/vec3/cross":338,"../../../maths/vec3/squaredLength":361,"../../../maths/vec3/subtract":362}],
|
|
1802
|
+
},{"../../../maths/vec3/cross":338,"../../../maths/vec3/squaredLength":361,"../../../maths/vec3/subtract":362}],474:[function(require,module,exports){
|
|
1800
1803
|
const geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),path2=require("../../geometries/path2"),toUniquePoints=o=>{const e=new Set,t=[],r=o=>{const r=o.toString();e.has(r)||(t.push(o),e.add(r))};return o.forEach(o=>{geom2.isA(o)?geom2.toPoints(o).forEach(r):geom3.isA(o)?geom3.toPoints(o).forEach(o=>o.forEach(r)):path2.isA(o)&&path2.toPoints(o).forEach(r)}),t};module.exports=toUniquePoints;
|
|
1801
1804
|
|
|
1802
|
-
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../geometries/path2":186}],
|
|
1805
|
+
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../geometries/path2":186}],475:[function(require,module,exports){
|
|
1803
1806
|
const flatten=require("../../utils/flatten"),measureEpsilon=require("../../measurements/measureEpsilon"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),path2=require("../../geometries/path2"),snapPolygons=require("./snapPolygons"),mergePolygons=require("./mergePolygons"),insertTjunctions=require("./insertTjunctions"),triangulatePolygons=require("./triangulatePolygons"),generalizePath2=(e,r)=>r,generalizeGeom2=(e,r)=>r,generalizeGeom3=(e,r)=>{const{snap:n,simplify:o,triangulate:t}=Object.assign({},{snap:!1,simplify:!1,triangulate:!1},e),i=measureEpsilon(r);let s=geom3.toPolygons(r);n&&(s=snapPolygons(i,s)),o&&(s=mergePolygons(i,s)),t&&(s=insertTjunctions(s),s=triangulatePolygons(i,s));const g=Object.assign({},r);return g.polygons=s,g},generalize=(e,...r)=>{if(0===(r=flatten(r)).length)throw new Error("wrong number of arguments");const n=r.map(r=>{if(path2.isA(r))return generalizePath2(0,r);if(geom2.isA(r))return generalizeGeom2(0,r);if(geom3.isA(r))return generalizeGeom3(e,r);throw new Error("invalid geometry")});return 1===n.length?n[0]:n};module.exports=generalize;
|
|
1804
1807
|
|
|
1805
|
-
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../geometries/path2":186,"../../measurements/measureEpsilon":387,"../../utils/flatten":
|
|
1808
|
+
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../geometries/path2":186,"../../measurements/measureEpsilon":387,"../../utils/flatten":522,"./insertTjunctions":477,"./mergePolygons":478,"./snapPolygons":482,"./triangulatePolygons":483}],476:[function(require,module,exports){
|
|
1806
1809
|
module.exports={generalize:require("./generalize"),snap:require("./snap"),retessellate:require("./retessellate")};
|
|
1807
1810
|
|
|
1808
|
-
},{"./generalize":
|
|
1811
|
+
},{"./generalize":475,"./retessellate":480,"./snap":481}],477:[function(require,module,exports){
|
|
1809
1812
|
const constants=require("../../maths/constants"),vec3=require("../../maths/vec3"),poly3=require("../../geometries/poly3"),assert=!1,getTag=e=>`${e}`,addSide=(e,t,s,n,r,c)=>{const o=getTag(n),g=getTag(r);const l=`${o}/${g}`,a=`${g}/${o}`;if(e.has(a))return deleteSide(e,t,s,r,n,null),null;const i={vertex0:n,vertex1:r,polygonindex:c};return e.has(l)?e.get(l).push(i):e.set(l,[i]),t.has(o)?t.get(o).push(l):t.set(o,[l]),s.has(g)?s.get(g).push(l):s.set(g,[l]),l},deleteSide=(e,t,s,n,r,c)=>{const o=getTag(n),g=getTag(r),l=`${o}/${g}`;let a=-1;const i=e.get(l);for(let e=0;e<i.length;e++){const t=i[e];let s=getTag(t.vertex0);if(s===o&&((s=getTag(t.vertex1))===g&&(null===c||t.polygonindex===c))){a=e;break}}i.splice(a,1),0===i.length&&e.delete(l),a=t.get(o).indexOf(l),t.get(o).splice(a,1),0===t.get(o).length&&t.delete(o),a=s.get(g).indexOf(l),s.get(g).splice(a,1),0===s.get(g).length&&s.delete(g)},insertTjunctions=e=>{const t=new Map;for(let s=0;s<e.length;s++){const n=e[s],r=n.vertices.length;if(r>=3){let e=n.vertices[0],c=getTag(e);for(let o=0;o<r;o++){let g=o+1;g===r&&(g=0);const l=n.vertices[g],a=getTag(l),i=`${c}/${a}`,v=`${a}/${c}`;if(t.has(v)){const e=t.get(v);e.splice(-1,1),0===e.length&&t.delete(v)}else{const n={vertex0:e,vertex1:l,polygonindex:s};t.has(i)?t.get(i).push(n):t.set(i,[n])}e=l,c=a}}else console.warn("warning: invalid polygon found during insertTjunctions")}if(t.size>0){const s=new Map,n=new Map,r=new Map;for(const[e,c]of t)r.set(e,!0),c.forEach(t=>{const r=getTag(t.vertex0),c=getTag(t.vertex1);s.has(r)?s.get(r).push(e):s.set(r,[e]),n.has(c)?n.get(c).push(e):n.set(c,[e])});const c=e.slice(0);for(;0!==t.size;){for(const e of t.keys())r.set(e,!0);let e=!1;for(;;){const o=Array.from(r.keys());if(0===o.length)break;const g=o[0];let l=!0;if(t.has(g)){const o=t.get(g);0;const a=o[0];for(let o=0;o<2;o++){const g=0===o?a.vertex0:a.vertex1,i=0===o?a.vertex1:a.vertex0,v=getTag(g),d=getTag(i);let h=[];0===o?n.has(v)&&(h=n.get(v)):s.has(v)&&(h=s.get(v));for(let a=0;a<h.length;a++){const v=h[a],f=t.get(v)[0],u=0===o?f.vertex0:f.vertex1,x=0===o?f.vertex1:f.vertex0,p=getTag(u);getTag(x);if(p===d){deleteSide(t,s,n,g,i,null),deleteSide(t,s,n,i,g,null),l=!1,o=2,e=!0;break}{const a=g,v=i,d=u,h=vec3.subtract(vec3.create(),d,a),x=vec3.dot(vec3.subtract(vec3.create(),v,a),h)/vec3.dot(h,h);if(x>0&&x<1){const g=vec3.scale(vec3.create(),h,x);if(vec3.add(g,g,a),vec3.squaredDistance(g,v)<constants.EPS*constants.EPS){const g=f.polygonindex,a=c[g],v=getTag(f.vertex1);let d=-1;for(let e=0;e<a.vertices.length;e++)if(getTag(a.vertices[e])===v){d=e;break}0;const h=a.vertices.slice(0);h.splice(d,0,i);const u=poly3.create(h);c[g]=u,deleteSide(t,s,n,f.vertex0,f.vertex1,g);const x=addSide(t,s,n,f.vertex0,i,g),p=addSide(t,s,n,i,f.vertex1,g);null!==x&&r.set(x,!0),null!==p&&r.set(p,!0),l=!1,o=2,e=!0;break}}}}}}l&&r.delete(g)}if(!e)break}e=c}return t.clear(),e};module.exports=insertTjunctions;
|
|
1810
1813
|
|
|
1811
|
-
},{"../../geometries/poly3":203,"../../maths/constants":218,"../../maths/vec3":346}],
|
|
1814
|
+
},{"../../geometries/poly3":203,"../../maths/constants":218,"../../maths/vec3":346}],478:[function(require,module,exports){
|
|
1812
1815
|
const aboutEqualNormals=require("../../maths/utils/aboutEqualNormals"),vec3=require("../../maths/vec3"),poly3=require("../../geometries/poly3"),createEdges=e=>{const n=poly3.toPoints(e),t=[];for(let e=0;e<n.length;e++){const l=(e+1)%n.length,r={v1:n[e],v2:n[l]};t.push(r)}for(let e=0;e<t.length;e++){const l=(e+1)%n.length;t[e].next=t[l],t[l].prev=t[e]}return t},insertEdge=(e,n)=>{const t=`${n.v1}:${n.v2}`;e.set(t,n)},deleteEdge=(e,n)=>{const t=`${n.v1}:${n.v2}`;e.delete(t)},findOppositeEdge=(e,n)=>{const t=`${n.v2}:${n.v1}`;return e.get(t)},calculateAnglesBetween=(e,n,t)=>{let l=e.prev.v1,r=e.prev.v2,o=n.next.v2;const v=calculateAngle(l,r,o,t);return l=n.prev.v1,r=n.prev.v2,o=e.next.v2,[v,calculateAngle(l,r,o,t)]},v1=vec3.create(),v2=vec3.create(),calculateAngle=(e,n,t,l)=>{const r=vec3.subtract(v1,n,e),o=vec3.subtract(v2,t,n);return vec3.cross(r,r,o),vec3.dot(r,l)},createPolygonAnd=e=>{let n;const t=[];for(;e.next;){const n=e.next;t.push(e.v1),e.v1=null,e.v2=null,e.next=null,e.prev=null,e=n}return t.length>0&&(n=poly3.create(t)),n},mergeCoplanarPolygons=e=>{if(e.length<2)return e;const n=e[0].plane,t=e.slice(),l=new Map;for(;t.length>0;){const e=t.shift(),r=createEdges(e);for(let e=0;e<r.length;e++){const t=r[e],o=findOppositeEdge(l,t);if(o){const e=calculateAnglesBetween(t,o,n);if(e[0]>=0&&e[1]>=0){const n=o.next,r=t.next;t.prev.next=o.next,t.next.prev=o.prev,o.prev.next=t.next,o.next.prev=t.prev,t.v1=null,t.v2=null,t.next=null,t.prev=null,deleteEdge(l,o),o.v1=null,o.v2=null,o.next=null,o.prev=null;const v=(e,n,t)=>{const l={v1:t.v1,v2:n.v2,next:n.next,prev:t.prev};t.prev.next=l,n.next.prev=l,deleteEdge(e,n),n.v1=null,n.v2=null,n.next=null,n.prev=null,deleteEdge(e,t),t.v1=null,t.v2=null,t.next=null,t.prev=null};0===e[0]&&v(l,n,n.prev),0===e[1]&&v(l,r,r.prev)}}else t.next&&insertEdge(l,t)}}const r=[];return l.forEach(e=>{const n=createPolygonAnd(e);n&&r.push(n)}),l.clear(),r},coplanar=(e,n)=>Math.abs(e[3]-n[3])<1.5e-7&&aboutEqualNormals(e,n),mergePolygons=(e,n)=>{const t=[];n.forEach(e=>{const n=t.find(n=>coplanar(n[0],poly3.plane(e)));if(n){n[1].push(e)}else t.push([poly3.plane(e),[e]])});let l=[];return t.forEach(e=>{const n=e[1],t=mergeCoplanarPolygons(n);l=l.concat(t)}),l};module.exports=mergePolygons;
|
|
1813
1816
|
|
|
1814
|
-
},{"../../geometries/poly3":203,"../../maths/utils/aboutEqualNormals":291,"../../maths/vec3":346}],
|
|
1817
|
+
},{"../../geometries/poly3":203,"../../maths/utils/aboutEqualNormals":291,"../../maths/vec3":346}],479:[function(require,module,exports){
|
|
1815
1818
|
const{EPS:EPS}=require("../../maths/constants"),line2=require("../../maths/line2"),vec2=require("../../maths/vec2"),OrthoNormalBasis=require("../../maths/OrthoNormalBasis"),interpolateBetween2DPointsForY=require("../../maths/utils/interpolateBetween2DPointsForY"),{insertSorted:insertSorted,fnNumberSort:fnNumberSort}=require("../../utils"),poly3=require("../../geometries/poly3"),reTesselateCoplanarPolygons=t=>{if(t.length<2)return t;const e=[],o=t.length,n=poly3.plane(t[0]),l=new OrthoNormalBasis(n),i=[],r=[],s=new Map,f=new Map,p=new Map,h=10/EPS;for(let e=0;e<o;e++){const o=t[e];let n=[],g=o.vertices.length,c=-1;if(g>0){let t,i;for(let r=0;r<g;r++){let s=l.to2D(o.vertices[r]);const g=Math.floor(s[1]*h);let a;p.has(g)?a=p.get(g):p.has(g+1)?a=p.get(g+1):p.has(g-1)?a=p.get(g-1):(a=s[1],p.set(g,s[1])),s=vec2.fromValues(s[0],a),n.push(s);const u=s[1];(0===r||u<t)&&(t=u,c=r),(0===r||u>i)&&(i=u);let m=f.get(u);m||(m={},f.set(u,m)),m[e]=!0}if(t>=i)n=[],g=0,c=-1;else{let o=s.get(t);o||(o=[],s.set(t,o)),o.push(e)}}n.reverse(),c=g-c-1,i.push(n),r.push(c)}const g=[];f.forEach((t,e)=>g.push(e)),g.sort(fnNumberSort);let c=[],a=[];for(let t=0;t<g.length;t++){const o=[],p=g[t],h=f.get(p);for(let t=0;t<c.length;++t){const e=c[t],o=e.polygonindex;if(h[o]){const n=i[o],l=n.length;let r=e.leftvertexindex,s=e.rightvertexindex;for(;;){let t=r+1;if(t>=l&&(t=0),n[t][1]!==p)break;r=t}let f=s-1;if(f<0&&(f=l-1),n[f][1]===p&&(s=f),r!==e.leftvertexindex&&r===s)c.splice(t,1),--t;else{e.leftvertexindex=r,e.rightvertexindex=s,e.topleft=n[r],e.topright=n[s];let t=r+1;t>=l&&(t=0),e.bottomleft=n[t];let o=s-1;o<0&&(o=l-1),e.bottomright=n[o]}}}let u;if(t>=g.length-1)c=[],u=null;else{const e=.5*(p+(u=Number(g[t+1]))),o=s.get(p);for(const t in o){const n=o[t],l=i[n],s=l.length,f=r[n];let h=f;for(;;){let t=h+1;if(t>=s&&(t=0),l[t][1]!==p)break;if(t===f)break;h=t}let g=f;for(;;){let t=g-1;if(t<0&&(t=s-1),l[t][1]!==p)break;if(t===h)break;g=t}let a=h+1;a>=s&&(a=0);let u=g-1;u<0&&(u=s-1);const m={polygonindex:n,leftvertexindex:h,rightvertexindex:g,topleft:l[h],topright:l[g],bottomleft:l[a],bottomright:l[u]};insertSorted(c,m,(t,o)=>{const n=interpolateBetween2DPointsForY(t.topleft,t.bottomleft,e),l=interpolateBetween2DPointsForY(o.topleft,o.bottomleft,e);return n>l?1:n<l?-1:0})}}for(const t in c){const e=c[t];let n=interpolateBetween2DPointsForY(e.topleft,e.bottomleft,p);const l=vec2.fromValues(n,p);n=interpolateBetween2DPointsForY(e.topright,e.bottomright,p);const i=vec2.fromValues(n,p);n=interpolateBetween2DPointsForY(e.topleft,e.bottomleft,u);const r=vec2.fromValues(n,u);n=interpolateBetween2DPointsForY(e.topright,e.bottomright,u);const s=vec2.fromValues(n,u),f={topleft:l,topright:i,bottomleft:r,bottomright:s,leftline:line2.fromPoints(line2.create(),l,r),rightline:line2.fromPoints(line2.create(),s,i)};if(o.length>0){const t=o[o.length-1],e=vec2.distance(f.topleft,t.topright),n=vec2.distance(f.bottomleft,t.bottomright);e<EPS&&n<EPS&&(f.topleft=t.topleft,f.leftline=t.leftline,f.bottomleft=t.bottomleft,o.splice(o.length-1,1))}o.push(f)}if(t>0){const t=new Set,i=new Set;for(let e=0;e<o.length;e++){const n=o[e];for(let e=0;e<a.length;e++)if(!i.has(e)){const o=a[e];if(vec2.distance(o.bottomleft,n.topleft)<EPS&&vec2.distance(o.bottomright,n.topright)<EPS){i.add(e);const l=line2.direction(n.leftline),r=line2.direction(o.leftline),s=l[0]-r[0],f=line2.direction(n.rightline),p=line2.direction(o.rightline),h=f[0]-p[0],g=Math.abs(s)<EPS,c=Math.abs(h)<EPS,a=c||h>=0;(g||s>=0)&&a&&(n.outpolygon=o.outpolygon,n.leftlinecontinues=g,n.rightlinecontinues=c,t.add(e));break}}}for(let o=0;o<a.length;o++)if(!t.has(o)){const t=a[o];t.outpolygon.rightpoints.push(t.bottomright),vec2.distance(t.bottomright,t.bottomleft)>EPS&&t.outpolygon.leftpoints.push(t.bottomleft),t.outpolygon.leftpoints.reverse();const i=t.outpolygon.rightpoints.concat(t.outpolygon.leftpoints).map(t=>l.to3D(t)),r=poly3.fromPointsAndPlane(i,n);r.vertices.length&&e.push(r)}}for(let t=0;t<o.length;t++){const e=o[t];e.outpolygon?(e.leftlinecontinues||e.outpolygon.leftpoints.push(e.topleft),e.rightlinecontinues||e.outpolygon.rightpoints.push(e.topright)):(e.outpolygon={leftpoints:[],rightpoints:[]},e.outpolygon.leftpoints.push(e.topleft),vec2.distance(e.topleft,e.topright)>EPS&&e.outpolygon.rightpoints.push(e.topright))}a=o}return e};module.exports=reTesselateCoplanarPolygons;
|
|
1816
1819
|
|
|
1817
|
-
},{"../../geometries/poly3":203,"../../maths/OrthoNormalBasis":217,"../../maths/constants":218,"../../maths/line2":229,"../../maths/utils/interpolateBetween2DPointsForY":294,"../../maths/vec2":315,"../../utils":
|
|
1820
|
+
},{"../../geometries/poly3":203,"../../maths/OrthoNormalBasis":217,"../../maths/constants":218,"../../maths/line2":229,"../../maths/utils/interpolateBetween2DPointsForY":294,"../../maths/vec2":315,"../../utils":524}],480:[function(require,module,exports){
|
|
1818
1821
|
const geom3=require("../../geometries/geom3"),poly3=require("../../geometries/poly3"),{NEPS:NEPS}=require("../../maths/constants"),reTesselateCoplanarPolygons=require("./reTesselateCoplanarPolygons"),retessellate=e=>{if(e.isRetesselated)return e;const s=geom3.toPolygons(e).map((e,s)=>({vertices:e.vertices,plane:poly3.plane(e),index:s})),o=classifyPolygons(s),l=[];o.forEach(e=>{if(Array.isArray(e)){const s=reTesselateCoplanarPolygons(e);l.push(...s)}else l.push(e)});const n=geom3.create(l);return n.isRetesselated=!0,n},classifyPolygons=e=>{let s=[e];const o=[];for(let e=3;e>=0;e--){const l=[],n=3===e?1.5e-8:NEPS;s.forEach(s=>{s.sort(byPlaneComponent(e,n));let t=0;for(let r=1;r<s.length;r++)s[r].plane[e]-s[t].plane[e]>n&&(r-t==1?o.push(s[t]):l.push(s.slice(t,r)),t=r);s.length-t==1?o.push(s[t]):l.push(s.slice(t))}),s=l}const l=[];return s.forEach(e=>{e[0]&&(l[e[0].index]=e)}),o.forEach(e=>{l[e.index]=e}),l},byPlaneComponent=(e,s)=>(o,l)=>o.plane[e]-l.plane[e]>s?1:l.plane[e]-o.plane[e]>s?-1:0;module.exports=retessellate;
|
|
1819
1822
|
|
|
1820
|
-
},{"../../geometries/geom3":165,"../../geometries/poly3":203,"../../maths/constants":218,"./reTesselateCoplanarPolygons":
|
|
1823
|
+
},{"../../geometries/geom3":165,"../../geometries/poly3":203,"../../maths/constants":218,"./reTesselateCoplanarPolygons":479}],481:[function(require,module,exports){
|
|
1821
1824
|
const flatten=require("../../utils/flatten"),vec2=require("../../maths/vec2"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),path2=require("../../geometries/path2"),measureEpsilon=require("../../measurements/measureEpsilon"),snapPolygons=require("./snapPolygons"),snapPath2=e=>{const s=measureEpsilon(e),r=path2.toPoints(e).map(e=>vec2.snap(vec2.create(),e,s));return path2.create(r)},snapGeom2=e=>{const s=measureEpsilon(e);let r=geom2.toSides(e).map(e=>[vec2.snap(vec2.create(),e[0],s),vec2.snap(vec2.create(),e[1],s)]);return r=r.filter(e=>!vec2.equals(e[0],e[1])),geom2.create(r)},snapGeom3=e=>{const s=measureEpsilon(e),r=geom3.toPolygons(e),o=snapPolygons(s,r);return geom3.create(o)},snap=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");const s=e.map(e=>path2.isA(e)?snapPath2(e):geom2.isA(e)?snapGeom2(e):geom3.isA(e)?snapGeom3(e):e);return 1===s.length?s[0]:s};module.exports=snap;
|
|
1822
1825
|
|
|
1823
|
-
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../geometries/path2":186,"../../maths/vec2":315,"../../measurements/measureEpsilon":387,"../../utils/flatten":
|
|
1826
|
+
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../geometries/path2":186,"../../maths/vec2":315,"../../measurements/measureEpsilon":387,"../../utils/flatten":522,"./snapPolygons":482}],482:[function(require,module,exports){
|
|
1824
1827
|
const vec3=require("../../maths/vec3"),poly3=require("../../geometries/poly3"),isValidPoly3=(e,o)=>{const r=Math.abs(poly3.measureArea(o));return Number.isFinite(r)&&r>e},snapPolygons=(e,o)=>{let r=o.map(o=>{const r=o.vertices.map(o=>vec3.snap(vec3.create(),o,e)),t=[];for(let e=0;e<r.length;e++){const o=(e+1)%r.length;vec3.equals(r[e],r[o])||t.push(r[e])}const s=poly3.create(t);return o.color&&(s.color=o.color),s});const t=e*e*Math.sqrt(3)/4;return r=r.filter(e=>isValidPoly3(t,e))};module.exports=snapPolygons;
|
|
1825
1828
|
|
|
1826
|
-
},{"../../geometries/poly3":203,"../../maths/vec3":346}],
|
|
1829
|
+
},{"../../geometries/poly3":203,"../../maths/vec3":346}],483:[function(require,module,exports){
|
|
1827
1830
|
const vec3=require("../../maths/vec3"),poly3=require("../../geometries/poly3"),triangulatePolygon=(e,o,r)=>{const t=o.vertices.length;if(t>3){if(t>4){const c=[0,0,0];o.vertices.forEach(e=>vec3.add(c,c,e)),vec3.snap(c,vec3.divide(c,c,[t,t,t]),e);for(let e=0;e<t;e++){const s=poly3.create([c,o.vertices[e],o.vertices[(e+1)%t]]);o.color&&(s.color=o.color),r.push(s)}return}const c=poly3.create([o.vertices[0],o.vertices[1],o.vertices[2]]),s=poly3.create([o.vertices[0],o.vertices[2],o.vertices[3]]);return o.color&&(c.color=o.color,s.color=o.color),void r.push(c,s)}r.push(o)},triangulatePolygons=(e,o)=>{const r=[];return o.forEach(o=>{triangulatePolygon(e,o,r)}),r};module.exports=triangulatePolygons;
|
|
1828
1831
|
|
|
1829
|
-
},{"../../geometries/poly3":203,"../../maths/vec3":346}],
|
|
1832
|
+
},{"../../geometries/poly3":203,"../../maths/vec3":346}],484:[function(require,module,exports){
|
|
1830
1833
|
const flatten=require("../../utils/flatten"),padArrayToLength=require("../../utils/padArrayToLength"),measureAggregateBoundingBox=require("../../measurements/measureAggregateBoundingBox"),{translate:translate}=require("./translate"),validateOptions=e=>{if(!Array.isArray(e.modes)||e.modes.length>3)throw new Error("align(): modes must be an array of length <= 3");if(e.modes=padArrayToLength(e.modes,"none",3),3!==e.modes.filter(e=>["center","max","min","none"].includes(e)).length)throw new Error('align(): all modes must be one of "center", "max" or "min"');if(!Array.isArray(e.relativeTo)||e.relativeTo.length>3)throw new Error("align(): relativeTo must be an array of length <= 3");if(e.relativeTo=padArrayToLength(e.relativeTo,0,3),3!==e.relativeTo.filter(e=>Number.isFinite(e)||null==e).length)throw new Error("align(): all relativeTo values must be a number, or null.");if("boolean"!=typeof e.grouped)throw new Error("align(): grouped must be a boolean value.");return e},populateRelativeToFromBounds=(e,r,t)=>{for(let n=0;n<3;n++)null==e[n]&&("center"===r[n]?e[n]=(t[0][n]+t[1][n])/2:"max"===r[n]?e[n]=t[1][n]:"min"===r[n]&&(e[n]=t[0][n]));return e},alignGeometries=(e,r,t)=>{const n=measureAggregateBoundingBox(e),o=[0,0,0];for(let e=0;e<3;e++)"center"===r[e]?o[e]=t[e]-(n[0][e]+n[1][e])/2:"max"===r[e]?o[e]=t[e]-n[1][e]:"min"===r[e]&&(o[e]=t[e]-n[0][e]);return translate(o,e)},align=(e,...r)=>{e=Object.assign({},{modes:["center","center","min"],relativeTo:[0,0,0],grouped:!1},e),e=validateOptions(e);let{modes:t,relativeTo:n,grouped:o}=e;if(0===(r=flatten(r)).length)throw new Error("align(): No geometries were provided to act upon");if(n.filter(e=>null==e).length){const e=measureAggregateBoundingBox(r);n=populateRelativeToFromBounds(n,t,e)}return 1===(r=o?alignGeometries(r,t,n):r.map(e=>alignGeometries(e,t,n))).length?r[0]:r};module.exports=align;
|
|
1831
1834
|
|
|
1832
|
-
},{"../../measurements/measureAggregateBoundingBox":378,"../../utils/flatten":
|
|
1835
|
+
},{"../../measurements/measureAggregateBoundingBox":378,"../../utils/flatten":522,"../../utils/padArrayToLength":526,"./translate":491}],485:[function(require,module,exports){
|
|
1833
1836
|
const flatten=require("../../utils/flatten"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),path2=require("../../geometries/path2"),measureBoundingBox=require("../../measurements/measureBoundingBox"),{translate:translate}=require("./translate"),centerGeometry=(e,r)=>{const{axes:t,relativeTo:n}=Object.assign({},{axes:[!0,!0,!0],relativeTo:[0,0,0]},e),a=measureBoundingBox(r),o=[0,0,0];return t[0]&&(o[0]=n[0]-(a[0][0]+(a[1][0]-a[0][0])/2)),t[1]&&(o[1]=n[1]-(a[0][1]+(a[1][1]-a[0][1])/2)),t[2]&&(o[2]=n[2]-(a[0][2]+(a[1][2]-a[0][2])/2)),translate(o,r)},center=(e,...r)=>{const{axes:t,relativeTo:n}=Object.assign({},{axes:[!0,!0,!0],relativeTo:[0,0,0]},e);if(0===(r=flatten(r)).length)throw new Error("wrong number of arguments");if(3!==n.length)throw new Error("relativeTo must be an array of length 3");e={axes:t,relativeTo:n};const a=r.map(r=>path2.isA(r)?centerGeometry(e,r):geom2.isA(r)?centerGeometry(e,r):geom3.isA(r)?centerGeometry(e,r):r);return 1===a.length?a[0]:a},centerX=(...e)=>center({axes:[!0,!1,!1]},e),centerY=(...e)=>center({axes:[!1,!0,!1]},e),centerZ=(...e)=>center({axes:[!1,!1,!0]},e);module.exports={center:center,centerX:centerX,centerY:centerY,centerZ:centerZ};
|
|
1834
1837
|
|
|
1835
|
-
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../geometries/path2":186,"../../measurements/measureBoundingBox":382,"../../utils/flatten":
|
|
1838
|
+
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../geometries/path2":186,"../../measurements/measureBoundingBox":382,"../../utils/flatten":522,"./translate":491}],486:[function(require,module,exports){
|
|
1836
1839
|
module.exports={align:require("./align"),center:require("./center").center,centerX:require("./center").centerX,centerY:require("./center").centerY,centerZ:require("./center").centerZ,mirror:require("./mirror").mirror,mirrorX:require("./mirror").mirrorX,mirrorY:require("./mirror").mirrorY,mirrorZ:require("./mirror").mirrorZ,rotate:require("./rotate").rotate,rotateX:require("./rotate").rotateX,rotateY:require("./rotate").rotateY,rotateZ:require("./rotate").rotateZ,scale:require("./scale").scale,scaleX:require("./scale").scaleX,scaleY:require("./scale").scaleY,scaleZ:require("./scale").scaleZ,transform:require("./transform"),translate:require("./translate").translate,translateX:require("./translate").translateX,translateY:require("./translate").translateY,translateZ:require("./translate").translateZ};
|
|
1837
1840
|
|
|
1838
|
-
},{"./align":
|
|
1841
|
+
},{"./align":484,"./center":485,"./mirror":487,"./rotate":488,"./scale":489,"./transform":490,"./translate":491}],487:[function(require,module,exports){
|
|
1839
1842
|
const flatten=require("../../utils/flatten"),mat4=require("../../maths/mat4"),plane=require("../../maths/plane"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),path2=require("../../geometries/path2"),mirror=(r,...e)=>{const{origin:o,normal:m}=Object.assign({},{origin:[0,0,0],normal:[0,0,1]},r);if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");const i=plane.fromNormalAndPoint(plane.create(),m,o);if(Number.isNaN(i[0]))throw new Error("the given origin and normal do not define a proper plane");const n=mat4.mirrorByPlane(mat4.create(),i),t=e.map(r=>path2.isA(r)?path2.transform(n,r):geom2.isA(r)?geom2.transform(n,r):geom3.isA(r)?geom3.transform(n,r):r);return 1===t.length?t[0]:t},mirrorX=(...r)=>mirror({normal:[1,0,0]},r),mirrorY=(...r)=>mirror({normal:[0,1,0]},r),mirrorZ=(...r)=>mirror({normal:[0,0,1]},r);module.exports={mirror:mirror,mirrorX:mirrorX,mirrorY:mirrorY,mirrorZ:mirrorZ};
|
|
1840
1843
|
|
|
1841
|
-
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../geometries/path2":186,"../../maths/mat4":267,"../../maths/plane":287,"../../utils/flatten":
|
|
1844
|
+
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../geometries/path2":186,"../../maths/mat4":267,"../../maths/plane":287,"../../utils/flatten":522}],488:[function(require,module,exports){
|
|
1842
1845
|
const flatten=require("../../utils/flatten"),mat4=require("../../maths/mat4"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),path2=require("../../geometries/path2"),rotate=(t,...e)=>{if(!Array.isArray(t))throw new Error("angles must be an array");if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");for(t=t.slice();t.length<3;)t.push(0);const r=t[2],o=t[1],a=t[0],m=mat4.fromTaitBryanRotation(mat4.create(),r,o,a),n=e.map(t=>path2.isA(t)?path2.transform(m,t):geom2.isA(t)?geom2.transform(m,t):geom3.isA(t)?geom3.transform(m,t):t);return 1===n.length?n[0]:n},rotateX=(t,...e)=>rotate([t,0,0],e),rotateY=(t,...e)=>rotate([0,t,0],e),rotateZ=(t,...e)=>rotate([0,0,t],e);module.exports={rotate:rotate,rotateX:rotateX,rotateY:rotateY,rotateZ:rotateZ};
|
|
1843
1846
|
|
|
1844
|
-
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../geometries/path2":186,"../../maths/mat4":267,"../../utils/flatten":
|
|
1847
|
+
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../geometries/path2":186,"../../maths/mat4":267,"../../utils/flatten":522}],489:[function(require,module,exports){
|
|
1845
1848
|
const flatten=require("../../utils/flatten"),mat4=require("../../maths/mat4"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),path2=require("../../geometries/path2"),scale=(e,...r)=>{if(!Array.isArray(e))throw new Error("factors must be an array");if(0===(r=flatten(r)).length)throw new Error("wrong number of arguments");for(e=e.slice();e.length<3;)e.push(1);if(e[0]<=0||e[1]<=0||e[2]<=0)throw new Error("factors must be positive");const a=mat4.fromScaling(mat4.create(),e),t=r.map(e=>path2.isA(e)?path2.transform(a,e):geom2.isA(e)?geom2.transform(a,e):geom3.isA(e)?geom3.transform(a,e):e);return 1===t.length?t[0]:t},scaleX=(e,...r)=>scale([e,1,1],r),scaleY=(e,...r)=>scale([1,e,1],r),scaleZ=(e,...r)=>scale([1,1,e],r);module.exports={scale:scale,scaleX:scaleX,scaleY:scaleY,scaleZ:scaleZ};
|
|
1846
1849
|
|
|
1847
|
-
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../geometries/path2":186,"../../maths/mat4":267,"../../utils/flatten":
|
|
1850
|
+
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../geometries/path2":186,"../../maths/mat4":267,"../../utils/flatten":522}],490:[function(require,module,exports){
|
|
1848
1851
|
const flatten=require("../../utils/flatten"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),path2=require("../../geometries/path2"),transform=(e,...r)=>{if(0===(r=flatten(r)).length)throw new Error("wrong number of arguments");const t=r.map(r=>path2.isA(r)?path2.transform(e,r):geom2.isA(r)?geom2.transform(e,r):geom3.isA(r)?geom3.transform(e,r):r);return 1===t.length?t[0]:t};module.exports=transform;
|
|
1849
1852
|
|
|
1850
|
-
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../geometries/path2":186,"../../utils/flatten":
|
|
1853
|
+
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../geometries/path2":186,"../../utils/flatten":522}],491:[function(require,module,exports){
|
|
1851
1854
|
const flatten=require("../../utils/flatten"),mat4=require("../../maths/mat4"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),path2=require("../../geometries/path2"),translate=(t,...e)=>{if(!Array.isArray(t))throw new Error("offset must be an array");if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");for(t=t.slice();t.length<3;)t.push(0);const r=mat4.fromTranslation(mat4.create(),t),a=e.map(t=>path2.isA(t)?path2.transform(r,t):geom2.isA(t)?geom2.transform(r,t):geom3.isA(t)?geom3.transform(r,t):t);return 1===a.length?a[0]:a},translateX=(t,...e)=>translate([t,0,0],e),translateY=(t,...e)=>translate([0,t,0],e),translateZ=(t,...e)=>translate([0,0,t],e);module.exports={translate:translate,translateX:translateX,translateY:translateY,translateZ:translateZ};
|
|
1852
1855
|
|
|
1853
|
-
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../geometries/path2":186,"../../maths/mat4":267,"../../utils/flatten":
|
|
1856
|
+
},{"../../geometries/geom2":149,"../../geometries/geom3":165,"../../geometries/path2":186,"../../maths/mat4":267,"../../utils/flatten":522}],492:[function(require,module,exports){
|
|
1854
1857
|
const{EPS:EPS,TAU:TAU}=require("../maths/constants"),vec2=require("../maths/vec2"),path2=require("../geometries/path2"),{isGT:isGT,isGTE:isGTE,isNumberArray:isNumberArray}=require("./commonChecks"),arc=e=>{const r={center:[0,0],radius:1,startAngle:0,endAngle:TAU,makeTangent:!1,segments:32};let{center:t,radius:s,startAngle:n,endAngle:a,makeTangent:o,segments:c}=Object.assign({},r,e);if(!isNumberArray(t,2))throw new Error("center must be an array of X and Y values");if(!isGT(s,0))throw new Error("radius must be greater than zero");if(!isGTE(n,0))throw new Error("startAngle must be positive");if(!isGTE(a,0))throw new Error("endAngle must be positive");if(!isGTE(c,4))throw new Error("segments must be four or more");let i=TAU;(n%=TAU)<(a%=TAU)&&(i=a-n),n>a&&(i=a+(TAU-n));const m=Math.acos((s*s+s*s-EPS*EPS)/(2*s*s)),l=vec2.clone(t);let u;const A=[];if(i<m)u=vec2.fromAngleRadians(vec2.create(),n),vec2.scale(u,u,s),vec2.add(u,u,l),A.push(u);else{const e=Math.max(1,Math.floor(c*(i/TAU)))+1;let r=.5*e/i;r>.25&&(r=.25);const t=o?e+2:e;for(let a=0;a<=t;a++){let t=a;o&&((t=(a-1)*(e-2*r)/e+r)<0&&(t=0),t>e&&(t=e));const c=n+t*(i/e);u=vec2.fromAngleRadians(vec2.create(),c),vec2.scale(u,u,s),vec2.add(u,u,l),A.push(u)}}return path2.fromPoints({closed:!1},A)};module.exports=arc;
|
|
1855
1858
|
|
|
1856
|
-
},{"../geometries/path2":186,"../maths/constants":218,"../maths/vec2":315,"./commonChecks":
|
|
1859
|
+
},{"../geometries/path2":186,"../maths/constants":218,"../maths/vec2":315,"./commonChecks":494}],493:[function(require,module,exports){
|
|
1857
1860
|
const{TAU:TAU}=require("../maths/constants"),ellipse=require("./ellipse"),{isGTE:isGTE}=require("./commonChecks"),circle=e=>{const s={center:[0,0],radius:1,startAngle:0,endAngle:TAU,segments:32};let{center:r,radius:t,startAngle:n,endAngle:i,segments:l}=Object.assign({},s,e);if(!isGTE(t,0))throw new Error("radius must be positive");return ellipse({center:r,radius:t=[t,t],startAngle:n,endAngle:i,segments:l})};module.exports=circle;
|
|
1858
1861
|
|
|
1859
|
-
},{"../maths/constants":218,"./commonChecks":
|
|
1862
|
+
},{"../maths/constants":218,"./commonChecks":494,"./ellipse":499}],494:[function(require,module,exports){
|
|
1860
1863
|
const isNumberArray=(i,r)=>!!(Array.isArray(i)&&i.length>=r)&&i.every(i=>Number.isFinite(i)),isGT=(i,r)=>Number.isFinite(i)&&i>r,isGTE=(i,r)=>Number.isFinite(i)&&i>=r;module.exports={isNumberArray:isNumberArray,isGT:isGT,isGTE:isGTE};
|
|
1861
1864
|
|
|
1862
|
-
},{}],
|
|
1865
|
+
},{}],495:[function(require,module,exports){
|
|
1863
1866
|
const cuboid=require("./cuboid"),{isGTE:isGTE}=require("./commonChecks"),cube=e=>{let{center:i,size:r}=Object.assign({},{center:[0,0,0],size:2},e);if(!isGTE(r,0))throw new Error("size must be positive");return cuboid({center:i,size:r=[r,r,r]})};module.exports=cube;
|
|
1864
1867
|
|
|
1865
|
-
},{"./commonChecks":
|
|
1868
|
+
},{"./commonChecks":494,"./cuboid":496}],496:[function(require,module,exports){
|
|
1866
1869
|
const geom3=require("../geometries/geom3"),poly3=require("../geometries/poly3"),{isNumberArray:isNumberArray}=require("./commonChecks"),cuboid=e=>{const{center:r,size:o}=Object.assign({},{center:[0,0,0],size:[2,2,2]},e);if(!isNumberArray(r,3))throw new Error("center must be an array of X, Y and Z values");if(!isNumberArray(o,3))throw new Error("size must be an array of width, depth and height values");if(!o.every(e=>e>=0))throw new Error("size values must be positive");return 0===o[0]||0===o[1]||0===o[2]?geom3.create():geom3.create([[[0,4,6,2],[-1,0,0]],[[1,3,7,5],[1,0,0]],[[0,1,5,4],[0,-1,0]],[[2,6,7,3],[0,1,0]],[[0,2,3,1],[0,0,-1]],[[4,5,7,6],[0,0,1]]].map(e=>{const t=e[0].map(e=>{return[r[0]+o[0]/2*(2*!!(1&e)-1),r[1]+o[1]/2*(2*!!(2&e)-1),r[2]+o[2]/2*(2*!!(4&e)-1)]});return poly3.create(t)}))};module.exports=cuboid;
|
|
1867
1870
|
|
|
1868
|
-
},{"../geometries/geom3":165,"../geometries/poly3":203,"./commonChecks":
|
|
1871
|
+
},{"../geometries/geom3":165,"../geometries/poly3":203,"./commonChecks":494}],497:[function(require,module,exports){
|
|
1869
1872
|
const geom3=require("../geometries/geom3"),cylinderElliptic=require("./cylinderElliptic"),{isGTE:isGTE}=require("./commonChecks"),cylinder=e=>{const{center:i,height:r,radius:s,segments:t}=Object.assign({},{center:[0,0,0],height:2,radius:1,segments:32},e);if(!isGTE(s,0))throw new Error("radius must be positive");return 0===r||0===s?geom3.create():cylinderElliptic({center:i,height:r,startRadius:[s,s],endRadius:[s,s],segments:t})};module.exports=cylinder;
|
|
1870
1873
|
|
|
1871
|
-
},{"../geometries/geom3":165,"./commonChecks":
|
|
1874
|
+
},{"../geometries/geom3":165,"./commonChecks":494,"./cylinderElliptic":498}],498:[function(require,module,exports){
|
|
1872
1875
|
const{EPS:EPS,TAU:TAU}=require("../maths/constants"),vec3=require("../maths/vec3"),geom3=require("../geometries/geom3"),poly3=require("../geometries/poly3"),{sin:sin,cos:cos}=require("../maths/utils/trigonometry"),{isGT:isGT,isGTE:isGTE,isNumberArray:isNumberArray}=require("./commonChecks"),cylinderElliptic=e=>{const r={center:[0,0,0],height:2,startRadius:[1,1],startAngle:0,endRadius:[1,1],endAngle:TAU,segments:32};let{center:s,height:t,startRadius:a,startAngle:i,endRadius:o,endAngle:n,segments:u}=Object.assign({},r,e);if(!isNumberArray(s,3))throw new Error("center must be an array of X, Y and Z values");if(!isGT(t,0))throw new Error("height must be greater then zero");if(!isNumberArray(a,2))throw new Error("startRadius must be an array of X and Y values");if(!a.every(e=>e>=0))throw new Error("startRadius values must be positive");if(!isNumberArray(o,2))throw new Error("endRadius must be an array of X and Y values");if(!o.every(e=>e>=0))throw new Error("endRadius values must be positive");if(o.every(e=>0===e)&&a.every(e=>0===e))throw new Error("at least one radius must be positive");if(!isGTE(i,0))throw new Error("startAngle must be positive");if(!isGTE(n,0))throw new Error("endAngle must be positive");if(!isGTE(u,4))throw new Error("segments must be four or more");let c=TAU;(i%=TAU)<(n%=TAU)&&(c=n-i),i>n&&(c=n+(TAU-i));const l=Math.min(a[0],a[1],o[0],o[1]),m=Math.acos((l*l+l*l-EPS*EPS)/(2*l*l));if(c<m)throw new Error("startAngle and endAngle do not define a significant rotation");const h=Math.floor(u*(c/TAU)),d=vec3.fromValues(0,0,-t/2),v=vec3.fromValues(0,0,t/2),f=vec3.subtract(vec3.create(),v,d),g=vec3.fromValues(1,0,0),p=vec3.fromValues(0,1,0),A=vec3.create(),w=vec3.create(),E=vec3.create(),y=(e,r,s)=>{const t=r*c+i;return vec3.scale(A,g,s[0]*cos(t)),vec3.scale(w,p,s[1]*sin(t)),vec3.add(A,A,w),vec3.scale(E,f,e),vec3.add(E,E,d),vec3.add(vec3.create(),A,E)},T=(...e)=>{const r=e.map(e=>vec3.add(vec3.create(),e,s));return poly3.create(r)},b=[];for(let e=0;e<h;e++){const r=e/h;let s=(e+1)/h;c===TAU&&e===h-1&&(s=0),o[0]===a[0]&&o[1]===a[1]?(b.push(T(d,y(0,s,o),y(0,r,o))),b.push(T(y(0,s,o),y(1,s,o),y(1,r,o),y(0,r,o))),b.push(T(v,y(1,r,o),y(1,s,o)))):(a[0]>0&&a[1]>0&&b.push(T(d,y(0,s,a),y(0,r,a))),(a[0]>0||a[1]>0)&&b.push(T(y(0,r,a),y(0,s,a),y(1,r,o))),o[0]>0&&o[1]>0&&b.push(T(v,y(1,r,o),y(1,s,o))),(o[0]>0||o[1]>0)&&b.push(T(y(1,r,o),y(0,s,a),y(1,s,o))))}return c<TAU&&(b.push(T(d,y(0,0,a),v)),b.push(T(y(0,0,a),y(1,0,o),v)),b.push(T(d,v,y(0,1,a))),b.push(T(y(0,1,a),v,y(1,1,o)))),geom3.create(b)};module.exports=cylinderElliptic;
|
|
1873
1876
|
|
|
1874
|
-
},{"../geometries/geom3":165,"../geometries/poly3":203,"../maths/constants":218,"../maths/utils/trigonometry":297,"../maths/vec3":346,"./commonChecks":
|
|
1877
|
+
},{"../geometries/geom3":165,"../geometries/poly3":203,"../maths/constants":218,"../maths/utils/trigonometry":297,"../maths/vec3":346,"./commonChecks":494}],499:[function(require,module,exports){
|
|
1875
1878
|
const{EPS:EPS,TAU:TAU}=require("../maths/constants"),vec2=require("../maths/vec2"),geom2=require("../geometries/geom2"),{sin:sin,cos:cos}=require("../maths/utils/trigonometry"),{isGTE:isGTE,isNumberArray:isNumberArray}=require("./commonChecks"),ellipse=e=>{const r={center:[0,0],radius:[1,1],startAngle:0,endAngle:TAU,segments:32};let{center:s,radius:t,startAngle:n,endAngle:o,segments:i}=Object.assign({},r,e);if(!isNumberArray(s,2))throw new Error("center must be an array of X and Y values");if(!isNumberArray(t,2))throw new Error("radius must be an array of X and Y values");if(!t.every(e=>e>=0))throw new Error("radius values must be positive");if(!isGTE(n,0))throw new Error("startAngle must be positive");if(!isGTE(o,0))throw new Error("endAngle must be positive");if(!isGTE(i,3))throw new Error("segments must be three or more");if(0===t[0]||0===t[1])return geom2.create();let a=TAU;(n%=TAU)<(o%=TAU)&&(a=o-n),n>o&&(a=o+(TAU-n));const m=Math.min(t[0],t[1]);if(a<Math.acos((m*m+m*m-EPS*EPS)/(2*m*m)))throw new Error("startAngle and endAngle do not define a significant rotation");i=Math.floor(i*(a/TAU));const u=vec2.clone(s),c=a/i,l=[];i=a<TAU?i+1:i;for(let e=0;e<i;e++){const r=c*e+n,s=vec2.fromValues(t[0]*cos(r),t[1]*sin(r));vec2.add(s,u,s),l.push(s)}return a<TAU&&l.push(u),geom2.fromPoints(l)};module.exports=ellipse;
|
|
1876
1879
|
|
|
1877
|
-
},{"../geometries/geom2":149,"../maths/constants":218,"../maths/utils/trigonometry":297,"../maths/vec2":315,"./commonChecks":
|
|
1880
|
+
},{"../geometries/geom2":149,"../maths/constants":218,"../maths/utils/trigonometry":297,"../maths/vec2":315,"./commonChecks":494}],500:[function(require,module,exports){
|
|
1878
1881
|
const{TAU:TAU}=require("../maths/constants"),vec3=require("../maths/vec3"),geom3=require("../geometries/geom3"),poly3=require("../geometries/poly3"),{sin:sin,cos:cos}=require("../maths/utils/trigonometry"),{isGTE:isGTE,isNumberArray:isNumberArray}=require("./commonChecks"),ellipsoid=e=>{const{center:c,radius:r,segments:s,axes:a}=Object.assign({},{center:[0,0,0],radius:[1,1,1],segments:32,axes:[[1,0,0],[0,-1,0],[0,0,1]]},e);if(!isNumberArray(c,3))throw new Error("center must be an array of X, Y and Z values");if(!isNumberArray(r,3))throw new Error("radius must be an array of X, Y and Z values");if(!r.every(e=>e>=0))throw new Error("radius values must be positive");if(!isGTE(s,4))throw new Error("segments must be four or more");if(0===r[0]||0===r[1]||0===r[2])return geom3.create();const t=vec3.scale(vec3.create(),vec3.normalize(vec3.create(),a[0]),r[0]),v=vec3.scale(vec3.create(),vec3.normalize(vec3.create(),a[1]),r[1]),o=vec3.scale(vec3.create(),vec3.normalize(vec3.create(),a[2]),r[2]),i=Math.round(s/4);let l;const u=[],d=vec3.create(),n=vec3.create();for(let e=0;e<=s;e++){const r=TAU*e/s,a=vec3.add(vec3.create(),vec3.scale(d,t,cos(r)),vec3.scale(n,v,sin(r)));if(e>0){let e,r;for(let s=0;s<=i;s++){const t=TAU/4*s/i,v=cos(t),m=sin(t);if(s>0){let t,h=[];t=vec3.subtract(vec3.create(),vec3.scale(d,l,e),vec3.scale(n,o,r)),h.push(vec3.add(t,t,c)),t=vec3.subtract(vec3.create(),vec3.scale(d,a,e),vec3.scale(n,o,r)),h.push(vec3.add(t,t,c)),s<i&&(t=vec3.subtract(vec3.create(),vec3.scale(d,a,v),vec3.scale(n,o,m)),h.push(vec3.add(t,t,c))),t=vec3.subtract(vec3.create(),vec3.scale(d,l,v),vec3.scale(n,o,m)),h.push(vec3.add(t,t,c)),u.push(poly3.create(h)),h=[],t=vec3.add(vec3.create(),vec3.scale(d,l,e),vec3.scale(n,o,r)),h.push(vec3.add(vec3.create(),c,t)),t=vec3.add(t,vec3.scale(d,a,e),vec3.scale(n,o,r)),h.push(vec3.add(vec3.create(),c,t)),s<i&&(t=vec3.add(t,vec3.scale(d,a,v),vec3.scale(n,o,m)),h.push(vec3.add(vec3.create(),c,t))),t=vec3.add(t,vec3.scale(d,l,v),vec3.scale(n,o,m)),h.push(vec3.add(vec3.create(),c,t)),h.reverse(),u.push(poly3.create(h))}e=v,r=m}}l=a}return geom3.create(u)};module.exports=ellipsoid;
|
|
1879
1882
|
|
|
1880
|
-
},{"../geometries/geom3":165,"../geometries/poly3":203,"../maths/constants":218,"../maths/utils/trigonometry":297,"../maths/vec3":346,"./commonChecks":
|
|
1883
|
+
},{"../geometries/geom3":165,"../geometries/poly3":203,"../maths/constants":218,"../maths/utils/trigonometry":297,"../maths/vec3":346,"./commonChecks":494}],501:[function(require,module,exports){
|
|
1881
1884
|
const mat4=require("../maths/mat4"),vec3=require("../maths/vec3"),geom3=require("../geometries/geom3"),polyhedron=require("./polyhedron"),{isGTE:isGTE}=require("./commonChecks"),geodesicSphere=e=>{let{radius:r,frequency:t}=Object.assign({},{radius:1,frequency:6},e);if(!isGTE(r,0))throw new Error("radius must be positive");if(!isGTE(t,6))throw new Error("frequency must be six or more");if(0===r)return geom3.create();t=Math.floor(t/6);const o=[[.850651,0,-.525731],[.850651,-0,.525731],[-.850651,-0,.525731],[-.850651,0,-.525731],[0,-.525731,.850651],[0,.525731,.850651],[0,.525731,-.850651],[0,-.525731,-.850651],[-.525731,-.850651,-0],[.525731,-.850651,-0],[.525731,.850651,0],[-.525731,.850651,0]],s=[[0,9,1],[1,10,0],[6,7,0],[10,6,0],[7,9,0],[5,1,4],[4,1,9],[5,10,1],[2,8,3],[3,11,2],[2,5,4],[4,8,2],[2,11,5],[3,7,6],[6,11,3],[8,7,3],[9,8,4],[11,10,5],[10,11,6],[8,9,7]],n=(e,r,t)=>{const o=e[0],s=e[1],n=e[2];let c=t;const f=[],l=[];for(let e=0;e<r;e++)for(let t=0;t<r-e;t++){const a=e/r,u=(e+1)/r,m=t/(r-e),h=(t+1)/(r-e),g=r-e-1?t/(r-e-1):1,p=[];p[0]=i(i(o,s,m),n,a),p[1]=i(i(o,s,h),n,a),p[2]=i(i(o,s,g),n,u);for(let e=0;e<3;e++){const r=vec3.length(p[e]);for(let t=0;t<3;t++)p[e][t]/=r}if(f.push(p[0],p[1],p[2]),l.push([c,c+1,c+2]),c+=3,t<r-e-1){const m=r-e-1?(t+1)/(r-e-1):1;p[0]=i(i(o,s,h),n,a),p[1]=i(i(o,s,m),n,u),p[2]=i(i(o,s,g),n,u);for(let e=0;e<3;e++){const r=vec3.length(p[e]);for(let t=0;t<3;t++)p[e][t]/=r}f.push(p[0],p[1],p[2]),l.push([c,c+1,c+2]),c+=3}}return{points:f,triangles:l,offset:c}},i=(e,r,t)=>{const o=1-t,s=[];for(let n=0;n<3;n++)s[n]=e[n]*o+r[n]*t;return s};let c=[],f=[],l=0;for(let e=0;e<s.length;e++){const r=n([o[s[e][0]],o[s[e][1]],o[s[e][2]]],t,l);c=c.concat(r.points),f=f.concat(r.triangles),l=r.offset}let a=polyhedron({points:c,faces:f,orientation:"inward"});return 1!==r&&(a=geom3.transform(mat4.fromScaling(mat4.create(),[r,r,r]),a)),a};module.exports=geodesicSphere;
|
|
1882
1885
|
|
|
1883
|
-
},{"../geometries/geom3":165,"../maths/mat4":267,"../maths/vec3":346,"./commonChecks":
|
|
1886
|
+
},{"../geometries/geom3":165,"../maths/mat4":267,"../maths/vec3":346,"./commonChecks":494,"./polyhedron":505}],502:[function(require,module,exports){
|
|
1884
1887
|
module.exports={arc:require("./arc"),circle:require("./circle"),cube:require("./cube"),cuboid:require("./cuboid"),cylinder:require("./cylinder"),cylinderElliptic:require("./cylinderElliptic"),ellipse:require("./ellipse"),ellipsoid:require("./ellipsoid"),geodesicSphere:require("./geodesicSphere"),line:require("./line"),polygon:require("./polygon"),polyhedron:require("./polyhedron"),rectangle:require("./rectangle"),roundedCuboid:require("./roundedCuboid"),roundedCylinder:require("./roundedCylinder"),roundedRectangle:require("./roundedRectangle"),sphere:require("./sphere"),square:require("./square"),star:require("./star"),torus:require("./torus"),triangle:require("./triangle")};
|
|
1885
1888
|
|
|
1886
|
-
},{"./arc":
|
|
1889
|
+
},{"./arc":492,"./circle":493,"./cube":495,"./cuboid":496,"./cylinder":497,"./cylinderElliptic":498,"./ellipse":499,"./ellipsoid":500,"./geodesicSphere":501,"./line":503,"./polygon":504,"./polyhedron":505,"./rectangle":506,"./roundedCuboid":507,"./roundedCylinder":508,"./roundedRectangle":509,"./sphere":510,"./square":511,"./star":512,"./torus":513,"./triangle":514}],503:[function(require,module,exports){
|
|
1887
1890
|
const path2=require("../geometries/path2"),line=r=>{if(!Array.isArray(r))throw new Error("points must be an array");return path2.fromPoints({},r)};module.exports=line;
|
|
1888
1891
|
|
|
1889
|
-
},{"../geometries/path2":186}],
|
|
1892
|
+
},{"../geometries/path2":186}],504:[function(require,module,exports){
|
|
1890
1893
|
const geom2=require("../geometries/geom2"),polygon=r=>{const{points:o,paths:t,orientation:e}=Object.assign({},{points:[],paths:[],orientation:"counterclockwise"},r);if(!Array.isArray(o)||!Array.isArray(t))throw new Error("points and paths must be arrays");let s=o;Array.isArray(o[0])&&(Array.isArray(o[0][0])||(s=[o])),s.forEach((r,o)=>{if(!Array.isArray(r))throw new Error("list of points "+o+" must be an array");if(r.length<3)throw new Error("list of points "+o+" must contain three or more points");r.forEach((r,t)=>{if(!Array.isArray(r))throw new Error("list of points "+o+", point "+t+" must be an array");if(r.length<2)throw new Error("list of points "+o+", point "+t+" must contain by X and Y values")})});let a=t;if(0===t.length){let r=0;a=s.map(o=>o.map(o=>r++))}const n=[];s.forEach(r=>r.forEach(r=>n.push(r)));let i=[];a.forEach(r=>{const o=r.map(r=>n[r]),t=geom2.fromPoints(o);i=i.concat(geom2.toSides(t))});let c=geom2.create(i);return"clockwise"==e&&(c=geom2.reverse(c)),c};module.exports=polygon;
|
|
1891
1894
|
|
|
1892
|
-
},{"../geometries/geom2":149}],
|
|
1895
|
+
},{"../geometries/geom2":149}],505:[function(require,module,exports){
|
|
1893
1896
|
const geom3=require("../geometries/geom3"),poly3=require("../geometries/poly3"),{isNumberArray:isNumberArray}=require("./commonChecks"),polyhedron=r=>{const e={points:[],faces:[],colors:void 0,orientation:"outward"},{points:o,faces:a,colors:t,orientation:n}=Object.assign({},e,r);if(!Array.isArray(o)||!Array.isArray(a))throw new Error("points and faces must be arrays");if(o.length<3)throw new Error("three or more points are required");if(a.length<1)throw new Error("one or more faces are required");if(t){if(!Array.isArray(t))throw new Error("colors must be an array");if(t.length!==a.length)throw new Error("faces and colors must have the same length")}o.forEach((r,e)=>{if(!isNumberArray(r,3))throw new Error(`point ${e} must be an array of X, Y, Z values`)}),a.forEach((r,e)=>{if(r.length<3)throw new Error(`face ${e} must contain 3 or more indexes`);if(!isNumberArray(r,r.length))throw new Error(`face ${e} must be an array of numbers`)}),"outward"!==n&&a.forEach(r=>r.reverse());const s=a.map((r,e)=>{const a=poly3.create(r.map(r=>o[r]));return t&&t[e]&&(a.color=t[e]),a});return geom3.create(s)};module.exports=polyhedron;
|
|
1894
1897
|
|
|
1895
|
-
},{"../geometries/geom3":165,"../geometries/poly3":203,"./commonChecks":
|
|
1898
|
+
},{"../geometries/geom3":165,"../geometries/poly3":203,"./commonChecks":494}],506:[function(require,module,exports){
|
|
1896
1899
|
const vec2=require("../maths/vec2"),geom2=require("../geometries/geom2"),{isNumberArray:isNumberArray}=require("./commonChecks"),rectangle=e=>{const{center:r,size:t}=Object.assign({},{center:[0,0],size:[2,2]},e);if(!isNumberArray(r,2))throw new Error("center must be an array of X and Y values");if(!isNumberArray(t,2))throw new Error("size must be an array of X and Y values");if(!t.every(e=>e>=0))throw new Error("size values must be positive");if(0===t[0]||0===t[1])return geom2.create();const a=[t[0]/2,t[1]/2],c=[a[0],-a[1]],s=[vec2.subtract(vec2.create(),r,a),vec2.add(vec2.create(),r,c),vec2.add(vec2.create(),r,a),vec2.subtract(vec2.create(),r,c)];return geom2.fromPoints(s)};module.exports=rectangle;
|
|
1897
1900
|
|
|
1898
|
-
},{"../geometries/geom2":149,"../maths/vec2":315,"./commonChecks":
|
|
1901
|
+
},{"../geometries/geom2":149,"../maths/vec2":315,"./commonChecks":494}],507:[function(require,module,exports){
|
|
1899
1902
|
const{EPS:EPS,TAU:TAU}=require("../maths/constants"),vec2=require("../maths/vec2"),vec3=require("../maths/vec3"),geom3=require("../geometries/geom3"),poly3=require("../geometries/poly3"),{sin:sin,cos:cos}=require("../maths/utils/trigonometry"),{isGTE:isGTE,isNumberArray:isNumberArray}=require("./commonChecks"),cuboid=require("./cuboid"),createCorners=(e,r,t,s,c,o)=>{const a=TAU/4*c/s,n=cos(a),i=sin(a),u=s-c;let l=t*n,h=r[2]-(t-t*i);o||(h=t-t*i-r[2]),l=l>EPS?l:0;const d=vec3.add(vec3.create(),e,[r[0]-t,r[1]-t,h]),v=vec3.add(vec3.create(),e,[t-r[0],r[1]-t,h]),m=vec3.add(vec3.create(),e,[t-r[0],t-r[1],h]),p=vec3.add(vec3.create(),e,[r[0]-t,t-r[1],h]),f=[],g=[],E=[],b=[];for(let e=0;e<=u;e++){const r=u>0?TAU/4*e/u:0,t=vec2.fromAngleRadians(vec2.create(),r);vec2.scale(t,t,l);const s=vec3.fromVec2(vec3.create(),t);f.push(vec3.add(vec3.create(),d,s)),vec3.rotateZ(s,s,[0,0,0],TAU/4),g.push(vec3.add(vec3.create(),v,s)),vec3.rotateZ(s,s,[0,0,0],TAU/4),E.push(vec3.add(vec3.create(),m,s)),vec3.rotateZ(s,s,[0,0,0],TAU/4),b.push(vec3.add(vec3.create(),p,s))}return o?[f,g,E,b]:(f.reverse(),g.reverse(),E.reverse(),b.reverse(),[b,E,g,f])},stitchCorners=(e,r)=>{const t=[];for(let s=0;s<e.length;s++){const c=e[s],o=r[s];for(let e=0;e<c.length-1;e++)t.push(poly3.create([c[e],c[e+1],o[e]])),e<o.length-1&&t.push(poly3.create([o[e],c[e+1],o[e+1]]))}return t},stitchWalls=(e,r)=>{const t=[];for(let s=0;s<e.length;s++){let c=e[s],o=r[s];const a=c[c.length-1],n=o[o.length-1],i=(s+1)%e.length;c=e[i],o=r[i];const u=c[0],l=o[0];t.push(poly3.create([a,u,l,n]))}return t},stitchSides=(e,r)=>{e=(e=[e[3],e[2],e[1],e[0]]).map(e=>e.slice().reverse());const t=[];e.forEach(e=>{e.forEach(e=>t.push(e))});const s=[];r.forEach(e=>{e.forEach(e=>s.push(e))});const c=[];for(let e=0;e<s.length;e++){const r=(e+1)%s.length;c.push(poly3.create([t[e],t[r],s[r],s[e]]))}return c},roundedCuboid=e=>{let{center:r,size:t,roundRadius:s,segments:c}=Object.assign({},{center:[0,0,0],size:[2,2,2],roundRadius:.2,segments:32},e);if(!isNumberArray(r,3))throw new Error("center must be an array of X, Y and Z values");if(!isNumberArray(t,3))throw new Error("size must be an array of X, Y and Z values");if(!t.every(e=>e>=0))throw new Error("size values must be positive");if(!isGTE(s,0))throw new Error("roundRadius must be positive");if(!isGTE(c,4))throw new Error("segments must be four or more");if(0===t[0]||0===t[1]||0===t[2])return geom3.create();if(0===s)return cuboid({center:r,size:t});if(s>(t=t.map(e=>e/2))[0]-EPS||s>t[1]-EPS||s>t[2]-EPS)throw new Error("roundRadius must be smaller than the radius of all dimensions");c=Math.floor(c/4);let o=null,a=null,n=[];for(let e=0;e<=c;e++){const i=createCorners(r,t,s,c,e,!0),u=createCorners(r,t,s,c,e,!1);if(0===e&&(n=n.concat(stitchSides(u,i))),o&&(n=n.concat(stitchCorners(o,i),stitchWalls(o,i))),a&&(n=n.concat(stitchCorners(a,u),stitchWalls(a,u))),e===c){let e=i.map(e=>e[0]);n.push(poly3.create(e)),e=u.map(e=>e[0]),n.push(poly3.create(e))}o=i,a=u}return geom3.create(n)};module.exports=roundedCuboid;
|
|
1900
1903
|
|
|
1901
|
-
},{"../geometries/geom3":165,"../geometries/poly3":203,"../maths/constants":218,"../maths/utils/trigonometry":297,"../maths/vec2":315,"../maths/vec3":346,"./commonChecks":
|
|
1904
|
+
},{"../geometries/geom3":165,"../geometries/poly3":203,"../maths/constants":218,"../maths/utils/trigonometry":297,"../maths/vec2":315,"../maths/vec3":346,"./commonChecks":494,"./cuboid":496}],508:[function(require,module,exports){
|
|
1902
1905
|
const{EPS:EPS,TAU:TAU}=require("../maths/constants"),vec3=require("../maths/vec3"),geom3=require("../geometries/geom3"),poly3=require("../geometries/poly3"),{sin:sin,cos:cos}=require("../maths/utils/trigonometry"),{isGTE:isGTE,isNumberArray:isNumberArray}=require("./commonChecks"),cylinder=require("./cylinder"),roundedCylinder=e=>{const{center:c,height:r,radius:s,roundRadius:a,segments:t}=Object.assign({},{center:[0,0,0],height:2,radius:1,roundRadius:.2,segments:32},e);if(!isNumberArray(c,3))throw new Error("center must be an array of X, Y and Z values");if(!isGTE(r,0))throw new Error("height must be positive");if(!isGTE(s,0))throw new Error("radius must be positive");if(!isGTE(a,0))throw new Error("roundRadius must be positive");if(a>s)throw new Error("roundRadius must be smaller than the radius");if(!isGTE(t,4))throw new Error("segments must be four or more");if(0===r||0===s)return geom3.create();if(0===a)return cylinder({center:c,height:r,radius:s});const v=[0,0,-r/2],o=[0,0,r/2],i=vec3.subtract(vec3.create(),o,v);if(2*a>vec3.length(i)-EPS)throw new Error("height must be larger than twice roundRadius");let u;u=Math.abs(i[0])>Math.abs(i[1])?vec3.fromValues(0,1,0):vec3.fromValues(1,0,0);const d=vec3.scale(vec3.create(),vec3.normalize(vec3.create(),i),a),n=vec3.scale(vec3.create(),vec3.normalize(vec3.create(),vec3.cross(vec3.create(),d,u)),s),l=vec3.scale(vec3.create(),vec3.normalize(vec3.create(),vec3.cross(vec3.create(),n,d)),s);vec3.add(v,v,d),vec3.subtract(o,o,d);const h=Math.floor(.25*t),m=e=>{const r=e.map(e=>vec3.add(e,e,c));return poly3.create(r)},p=[],b=vec3.create(),f=vec3.create();let g;for(let e=0;e<=t;e++){const c=TAU*e/t,r=vec3.add(vec3.create(),vec3.scale(b,n,cos(c)),vec3.scale(f,l,sin(c)));if(e>0){let e,c,s=[];s.push(vec3.add(vec3.create(),v,r)),s.push(vec3.add(vec3.create(),v,g)),s.push(vec3.add(vec3.create(),o,g)),s.push(vec3.add(vec3.create(),o,r)),p.push(m(s));for(let a=0;a<=h;a++){const t=TAU/4*a/h,i=cos(t),u=sin(t);if(a>0){let t;s=[],t=vec3.add(vec3.create(),v,vec3.subtract(b,vec3.scale(b,g,e),vec3.scale(f,d,c))),s.push(t),t=vec3.add(vec3.create(),v,vec3.subtract(b,vec3.scale(b,r,e),vec3.scale(f,d,c))),s.push(t),a<h&&(t=vec3.add(vec3.create(),v,vec3.subtract(b,vec3.scale(b,r,i),vec3.scale(f,d,u))),s.push(t)),t=vec3.add(vec3.create(),v,vec3.subtract(b,vec3.scale(b,g,i),vec3.scale(f,d,u))),s.push(t),p.push(m(s)),s=[],t=vec3.add(vec3.create(),vec3.scale(b,g,e),vec3.scale(f,d,c)),vec3.add(t,t,o),s.push(t),t=vec3.add(vec3.create(),vec3.scale(b,r,e),vec3.scale(f,d,c)),vec3.add(t,t,o),s.push(t),a<h&&(t=vec3.add(vec3.create(),vec3.scale(b,r,i),vec3.scale(f,d,u)),vec3.add(t,t,o),s.push(t)),t=vec3.add(vec3.create(),vec3.scale(b,g,i),vec3.scale(f,d,u)),vec3.add(t,t,o),s.push(t),s.reverse(),p.push(m(s))}e=i,c=u}}g=r}return geom3.create(p)};module.exports=roundedCylinder;
|
|
1903
1906
|
|
|
1904
|
-
},{"../geometries/geom3":165,"../geometries/poly3":203,"../maths/constants":218,"../maths/utils/trigonometry":297,"../maths/vec3":346,"./commonChecks":
|
|
1907
|
+
},{"../geometries/geom3":165,"../geometries/poly3":203,"../maths/constants":218,"../maths/utils/trigonometry":297,"../maths/vec3":346,"./commonChecks":494,"./cylinder":497}],509:[function(require,module,exports){
|
|
1905
1908
|
const{EPS:EPS,TAU:TAU}=require("../maths/constants"),vec2=require("../maths/vec2"),geom2=require("../geometries/geom2"),{isGTE:isGTE,isNumberArray:isNumberArray}=require("./commonChecks"),rectangle=require("./rectangle"),roundedRectangle=e=>{let{center:r,size:t,roundRadius:a,segments:c}=Object.assign({},{center:[0,0],size:[2,2],roundRadius:.2,segments:32},e);if(!isNumberArray(r,2))throw new Error("center must be an array of X and Y values");if(!isNumberArray(t,2))throw new Error("size must be an array of X and Y values");if(!t.every(e=>e>=0))throw new Error("size values must be positive");if(!isGTE(a,0))throw new Error("roundRadius must be positive");if(!isGTE(c,4))throw new Error("segments must be four or more");if(0===t[0]||0===t[1])return geom2.create();if(0===a)return rectangle({center:r,size:t});if(a>(t=t.map(e=>e/2))[0]-EPS||a>t[1]-EPS)throw new Error("roundRadius must be smaller than the radius of all dimensions");const s=Math.floor(c/4),o=vec2.add(vec2.create(),r,[t[0]-a,t[1]-a]),n=vec2.add(vec2.create(),r,[a-t[0],t[1]-a]),i=vec2.add(vec2.create(),r,[a-t[0],a-t[1]]),u=vec2.add(vec2.create(),r,[t[0]-a,a-t[1]]),d=[],v=[],m=[],l=[];for(let e=0;e<=s;e++){const r=TAU/4*e/s,t=vec2.fromAngleRadians(vec2.create(),r);vec2.scale(t,t,a),d.push(vec2.add(vec2.create(),o,t)),vec2.rotate(t,t,vec2.create(),TAU/4),v.push(vec2.add(vec2.create(),n,t)),vec2.rotate(t,t,vec2.create(),TAU/4),m.push(vec2.add(vec2.create(),i,t)),vec2.rotate(t,t,vec2.create(),TAU/4),l.push(vec2.add(vec2.create(),u,t))}return geom2.fromPoints(d.concat(v,m,l))};module.exports=roundedRectangle;
|
|
1906
1909
|
|
|
1907
|
-
},{"../geometries/geom2":149,"../maths/constants":218,"../maths/vec2":315,"./commonChecks":
|
|
1910
|
+
},{"../geometries/geom2":149,"../maths/constants":218,"../maths/vec2":315,"./commonChecks":494,"./rectangle":506}],510:[function(require,module,exports){
|
|
1908
1911
|
const ellipsoid=require("./ellipsoid"),{isGTE:isGTE}=require("./commonChecks"),sphere=e=>{let{center:s,radius:r,segments:i,axes:t}=Object.assign({},{center:[0,0,0],radius:1,segments:32,axes:[[1,0,0],[0,-1,0],[0,0,1]]},e);if(!isGTE(r,0))throw new Error("radius must be positive");return ellipsoid({center:s,radius:r=[r,r,r],segments:i,axes:t})};module.exports=sphere;
|
|
1909
1912
|
|
|
1910
|
-
},{"./commonChecks":
|
|
1913
|
+
},{"./commonChecks":494,"./ellipsoid":500}],511:[function(require,module,exports){
|
|
1911
1914
|
const rectangle=require("./rectangle"),{isGTE:isGTE}=require("./commonChecks"),square=e=>{let{center:r,size:s}=Object.assign({},{center:[0,0],size:2},e);if(!isGTE(s,0))throw new Error("size must be positive");return rectangle({center:r,size:s=[s,s]})};module.exports=square;
|
|
1912
1915
|
|
|
1913
|
-
},{"./commonChecks":
|
|
1916
|
+
},{"./commonChecks":494,"./rectangle":506}],512:[function(require,module,exports){
|
|
1914
1917
|
const{TAU:TAU}=require("../maths/constants"),vec2=require("../maths/vec2"),geom2=require("../geometries/geom2"),{isGT:isGT,isGTE:isGTE,isNumberArray:isNumberArray}=require("./commonChecks"),getRadiusRatio=(e,r)=>e>0&&r>1&&r<e/2?Math.cos(Math.PI*r/e)/Math.cos(Math.PI*(r-1)/e):0,getPoints=(e,r,t,s)=>{const o=TAU/e,i=[];for(let a=0;a<e;a++){const e=vec2.fromAngleRadians(vec2.create(),o*a+t);vec2.scale(e,e,r),vec2.add(e,s,e),i.push(e)}return i},star=e=>{let{center:r,vertices:t,outerRadius:s,innerRadius:o,density:i,startAngle:a}=Object.assign({},{center:[0,0],vertices:5,outerRadius:1,innerRadius:0,density:2,startAngle:0},e);if(!isNumberArray(r,2))throw new Error("center must be an array of X and Y values");if(!isGTE(t,2))throw new Error("vertices must be two or more");if(!isGT(s,0))throw new Error("outerRadius must be greater than zero");if(!isGTE(o,0))throw new Error("innerRadius must be greater than zero");if(!isGTE(a,0))throw new Error("startAngle must be greater than zero");if(t=Math.floor(t),i=Math.floor(i),a%=TAU,0===o){if(!isGTE(i,2))throw new Error("density must be two or more");o=s*getRadiusRatio(t,i)}const n=vec2.clone(r),u=getPoints(t,s,a,n),c=getPoints(t,o,a+Math.PI/t,n),h=[];for(let e=0;e<t;e++)h.push(u[e]),h.push(c[e]);return geom2.fromPoints(h)};module.exports=star;
|
|
1915
1918
|
|
|
1916
|
-
},{"../geometries/geom2":149,"../maths/constants":218,"../maths/vec2":315,"./commonChecks":
|
|
1919
|
+
},{"../geometries/geom2":149,"../maths/constants":218,"../maths/vec2":315,"./commonChecks":494}],513:[function(require,module,exports){
|
|
1917
1920
|
const{TAU:TAU}=require("../maths/constants"),extrudeRotate=require("../operations/extrusions/extrudeRotate"),{rotate:rotate}=require("../operations/transforms/rotate"),{translate:translate}=require("../operations/transforms/translate"),circle=require("./circle"),{isGT:isGT,isGTE:isGTE}=require("./commonChecks"),torus=e=>{const r={innerRadius:1,innerSegments:32,outerRadius:4,outerSegments:32,innerRotation:0,startAngle:0,outerRotation:TAU},{innerRadius:t,innerSegments:o,outerRadius:n,outerSegments:s,innerRotation:i,startAngle:a,outerRotation:u}=Object.assign({},r,e);if(!isGT(t,0))throw new Error("innerRadius must be greater than zero");if(!isGTE(o,3))throw new Error("innerSegments must be three or more");if(!isGT(n,0))throw new Error("outerRadius must be greater than zero");if(!isGTE(s,3))throw new Error("outerSegments must be three or more");if(!isGTE(a,0))throw new Error("startAngle must be positive");if(!isGT(u,0))throw new Error("outerRotation must be greater than zero");if(t>=n)throw new Error("inner circle is two large to rotate about the outer circle");let m=circle({radius:t,segments:o});return 0!==i&&(m=rotate([0,0,i],m)),m=translate([n,0],m),extrudeRotate({startAngle:a,angle:u,segments:s},m)};module.exports=torus;
|
|
1918
1921
|
|
|
1919
|
-
},{"../maths/constants":218,"../operations/extrusions/extrudeRotate":440,"../operations/transforms/rotate":
|
|
1922
|
+
},{"../maths/constants":218,"../operations/extrusions/extrudeRotate":440,"../operations/transforms/rotate":488,"../operations/transforms/translate":491,"./circle":493,"./commonChecks":494}],514:[function(require,module,exports){
|
|
1920
1923
|
const{NEPS:NEPS}=require("../maths/constants"),vec2=require("../maths/vec2"),geom2=require("../geometries/geom2"),{isNumberArray:isNumberArray}=require("./commonChecks"),solveAngleFromSSS=(e,r,t)=>Math.acos((e*e+r*r-t*t)/(2*e*r)),solveSideFromSAS=(e,r,t)=>r>NEPS?Math.sqrt(e*e+t*t-2*e*t*Math.cos(r)):Math.sqrt((e-t)*(e-t)+e*t*r*r*(1-r*r/12)),solveAAA=e=>{if(Math.abs(e[0]+e[1]+e[2]-Math.PI)>NEPS)throw new Error("AAA triangles require angles that sum to PI");const r=e[0],t=e[1],s=Math.PI-r-t,a=1/Math.sin(s)*Math.sin(r),n=1/Math.sin(s)*Math.sin(t);return createTriangle(r,t,s,a,n,1)},solveAAS=e=>{const r=e[0],t=e[1],s=Math.PI+NEPS-r-t;if(s<NEPS)throw new Error("AAS triangles require angles that sum to PI");const a=e[2],n=a/Math.sin(r)*Math.sin(t),o=a/Math.sin(r)*Math.sin(s);return createTriangle(r,t,s,a,n,o)},solveASA=e=>{const r=e[0],t=e[2],s=Math.PI+NEPS-r-t;if(s<NEPS)throw new Error("ASA triangles require angles that sum to PI");const a=e[1],n=a/Math.sin(s)*Math.sin(r),o=a/Math.sin(s)*Math.sin(t);return createTriangle(r,t,s,n,o,a)},solveSAS=e=>{const r=e[0],t=e[1],s=e[2],a=solveSideFromSAS(r,t,s),n=solveAngleFromSSS(a,r,s),o=Math.PI-n-t;return createTriangle(n,t,o,s,a,r)},solveSSA=e=>{const r=e[0],t=e[1],s=e[2],a=Math.asin(t*Math.sin(s)/r),n=Math.PI-a-s,o=r/Math.sin(s)*Math.sin(n);return createTriangle(a,n,s,t,o,r)},solveSSS=e=>{const r=e[1],t=e[2],s=e[0];if(r+t<=s||t+s<=r||s+r<=t)throw new Error("SSS triangle is incorrect, as the longest side is longer than the sum of the other sides");const a=solveAngleFromSSS(t,s,r),n=solveAngleFromSSS(s,r,t),o=Math.PI-a-n;return createTriangle(a,n,o,r,t,s)},createTriangle=(e,r,t,s,a,n)=>{const o=vec2.fromValues(0,0),i=vec2.fromValues(n,0),S=vec2.fromValues(s,0);return vec2.add(S,vec2.rotate(S,S,[0,0],Math.PI-r),i),geom2.fromPoints([o,i,S])},triangle=e=>{let{type:r,values:t}=Object.assign({},{type:"SSS",values:[1,1,1]},e);if("string"!=typeof r)throw new Error("triangle type must be a string");if("A"!==(r=r.toUpperCase())[0]&&"S"!==r[0]||"A"!==r[1]&&"S"!==r[1]||"A"!==r[2]&&"S"!==r[2])throw new Error("triangle type must contain three letters; A or S");if(!isNumberArray(t,3))throw new Error("triangle values must contain three values");if(!t.every(e=>e>0))throw new Error("triangle values must be greater than zero");switch(r){case"AAA":return solveAAA(t);case"AAS":return solveAAS(t);case"ASA":return solveASA(t);case"SAS":return solveSAS(t);case"SSA":return solveSSA(t);case"SSS":return solveSSS(t);default:throw new Error("invalid triangle type, try again")}};module.exports=triangle;
|
|
1921
1924
|
|
|
1922
|
-
},{"../geometries/geom2":149,"../maths/constants":218,"../maths/vec2":315,"./commonChecks":
|
|
1925
|
+
},{"../geometries/geom2":149,"../maths/constants":218,"../maths/vec2":315,"./commonChecks":494}],515:[function(require,module,exports){
|
|
1923
1926
|
module.exports={height:14,32:[16],33:[10,5,21,5,7,void 0,5,2,4,1,5,0,6,1,5,2],34:[16,4,21,4,14,void 0,12,21,12,14],35:[21,11,25,4,-7,void 0,17,25,10,-7,void 0,4,12,18,12,void 0,3,6,17,6],36:[20,8,25,8,-4,void 0,12,25,12,-4,void 0,17,18,15,20,12,21,8,21,5,20,3,18,3,16,4,14,5,13,7,12,13,10,15,9,16,8,17,6,17,3,15,1,12,0,8,0,5,1,3,3],37:[24,21,21,3,0,void 0,8,21,10,19,10,17,9,15,7,14,5,14,3,16,3,18,4,20,6,21,8,21,10,20,13,19,16,19,19,20,21,21,void 0,17,7,15,6,14,4,14,2,16,0,18,0,20,1,21,3,21,5,19,7,17,7],38:[26,23,12,23,13,22,14,21,14,20,13,19,11,17,6,15,3,13,1,11,0,7,0,5,1,4,2,3,4,3,6,4,8,5,9,12,13,13,14,14,16,14,18,13,20,11,21,9,20,8,18,8,16,9,13,11,10,16,3,18,1,20,0,22,0,23,1,23,2],39:[10,5,19,4,20,5,21,6,20,6,18,5,16,4,15],40:[14,11,25,9,23,7,20,5,16,4,11,4,7,5,2,7,-2,9,-5,11,-7],41:[14,3,25,5,23,7,20,9,16,10,11,10,7,9,2,7,-2,5,-5,3,-7],42:[16,8,21,8,9,void 0,3,18,13,12,void 0,13,18,3,12],43:[26,13,18,13,0,void 0,4,9,22,9],44:[10,6,1,5,0,4,1,5,2,6,1,6,-1,5,-3,4,-4],45:[26,4,9,22,9],46:[10,5,2,4,1,5,0,6,1,5,2],47:[22,20,25,2,-7],48:[20,9,21,6,20,4,17,3,12,3,9,4,4,6,1,9,0,11,0,14,1,16,4,17,9,17,12,16,17,14,20,11,21,9,21],49:[20,6,17,8,18,11,21,11,0],50:[20,4,16,4,17,5,19,6,20,8,21,12,21,14,20,15,19,16,17,16,15,15,13,13,10,3,0,17,0],51:[20,5,21,16,21,10,13,13,13,15,12,16,11,17,8,17,6,16,3,14,1,11,0,8,0,5,1,4,2,3,4],52:[20,13,21,3,7,18,7,void 0,13,21,13,0],53:[20,15,21,5,21,4,12,5,13,8,14,11,14,14,13,16,11,17,8,17,6,16,3,14,1,11,0,8,0,5,1,4,2,3,4],54:[20,16,18,15,20,12,21,10,21,7,20,5,17,4,12,4,7,5,3,7,1,10,0,11,0,14,1,16,3,17,6,17,7,16,10,14,12,11,13,10,13,7,12,5,10,4,7],55:[20,17,21,7,0,void 0,3,21,17,21],56:[20,8,21,5,20,4,18,4,16,5,14,7,13,11,12,14,11,16,9,17,7,17,4,16,2,15,1,12,0,8,0,5,1,4,2,3,4,3,7,4,9,6,11,9,12,13,13,15,14,16,16,16,18,15,20,12,21,8,21],57:[20,16,14,15,11,13,9,10,8,9,8,6,9,4,11,3,14,3,15,4,18,6,20,9,21,10,21,13,20,15,18,16,14,16,9,15,4,13,1,10,0,8,0,5,1,4,3],58:[10,5,14,4,13,5,12,6,13,5,14,void 0,5,2,4,1,5,0,6,1,5,2],59:[10,5,14,4,13,5,12,6,13,5,14,void 0,6,1,5,0,4,1,5,2,6,1,6,-1,5,-3,4,-4],60:[24,20,18,4,9,20,0],61:[26,4,12,22,12,void 0,4,6,22,6],62:[24,4,18,20,9,4,0],63:[18,3,16,3,17,4,19,5,20,7,21,11,21,13,20,14,19,15,17,15,15,14,13,13,12,9,10,9,7,void 0,9,2,8,1,9,0,10,1,9,2],64:[27,18,13,17,15,15,16,12,16,10,15,9,14,8,11,8,8,9,6,11,5,14,5,16,6,17,8,void 0,12,16,10,14,9,11,9,8,10,6,11,5,void 0,18,16,17,8,17,6,19,5,21,5,23,7,24,10,24,12,23,15,22,17,20,19,18,20,15,21,12,21,9,20,7,19,5,17,4,15,3,12,3,9,4,6,5,4,7,2,9,1,12,0,15,0,18,1,20,2,21,3,void 0,19,16,18,8,18,6,19,5],65:[18,9,21,1,0,void 0,9,21,17,0,void 0,4,7,14,7],66:[21,4,21,4,0,void 0,4,21,13,21,16,20,17,19,18,17,18,15,17,13,16,12,13,11,void 0,4,11,13,11,16,10,17,9,18,7,18,4,17,2,16,1,13,0,4,0],67:[21,18,16,17,18,15,20,13,21,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5],68:[21,4,21,4,0,void 0,4,21,11,21,14,20,16,18,17,16,18,13,18,8,17,5,16,3,14,1,11,0,4,0],69:[19,4,21,4,0,void 0,4,21,17,21,void 0,4,11,12,11,void 0,4,0,17,0],70:[18,4,21,4,0,void 0,4,21,17,21,void 0,4,11,12,11],71:[21,18,16,17,18,15,20,13,21,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,18,8,void 0,13,8,18,8],72:[22,4,21,4,0,void 0,18,21,18,0,void 0,4,11,18,11],73:[8,4,21,4,0],74:[16,12,21,12,5,11,2,10,1,8,0,6,0,4,1,3,2,2,5,2,7],75:[21,4,21,4,0,void 0,18,21,4,7,void 0,9,12,18,0],76:[17,4,21,4,0,void 0,4,0,16,0],77:[24,4,21,4,0,void 0,4,21,12,0,void 0,20,21,12,0,void 0,20,21,20,0],78:[22,4,21,4,0,void 0,4,21,18,0,void 0,18,21,18,0],79:[22,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,19,8,19,13,18,16,17,18,15,20,13,21,9,21],80:[21,4,21,4,0,void 0,4,21,13,21,16,20,17,19,18,17,18,14,17,12,16,11,13,10,4,10],81:[22,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,19,8,19,13,18,16,17,18,15,20,13,21,9,21,void 0,12,4,18,-2],82:[21,4,21,4,0,void 0,4,21,13,21,16,20,17,19,18,17,18,15,17,13,16,12,13,11,4,11,void 0,11,11,18,0],83:[20,17,18,15,20,12,21,8,21,5,20,3,18,3,16,4,14,5,13,7,12,13,10,15,9,16,8,17,6,17,3,15,1,12,0,8,0,5,1,3,3],84:[16,8,21,8,0,void 0,1,21,15,21],85:[22,4,21,4,6,5,3,7,1,10,0,12,0,15,1,17,3,18,6,18,21],86:[18,1,21,9,0,void 0,17,21,9,0],87:[24,2,21,7,0,void 0,12,21,7,0,void 0,12,21,17,0,void 0,22,21,17,0],88:[20,3,21,17,0,void 0,17,21,3,0],89:[18,1,21,9,11,9,0,void 0,17,21,9,11],90:[20,17,21,3,0,void 0,3,21,17,21,void 0,3,0,17,0],91:[14,4,25,4,-7,void 0,5,25,5,-7,void 0,4,25,11,25,void 0,4,-7,11,-7],92:[14,0,21,14,-3],93:[14,9,25,9,-7,void 0,10,25,10,-7,void 0,3,25,10,25,void 0,3,-7,10,-7],94:[16,6,15,8,18,10,15,void 0,3,12,8,17,13,12,void 0,8,17,8,0],95:[16,0,-2,16,-2],96:[10,6,21,5,20,4,18,4,16,5,15,6,16,5,17],97:[19,15,14,15,0,void 0,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3],98:[19,4,21,4,0,void 0,4,11,6,13,8,14,11,14,13,13,15,11,16,8,16,6,15,3,13,1,11,0,8,0,6,1,4,3],99:[18,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3],100:[19,15,21,15,0,void 0,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3],101:[18,3,8,15,8,15,10,14,12,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3],102:[12,10,21,8,21,6,20,5,17,5,0,void 0,2,14,9,14],103:[19,15,14,15,-2,14,-5,13,-6,11,-7,8,-7,6,-6,void 0,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3],104:[19,4,21,4,0,void 0,4,10,7,13,9,14,12,14,14,13,15,10,15,0],105:[8,3,21,4,20,5,21,4,22,3,21,void 0,4,14,4,0],106:[10,5,21,6,20,7,21,6,22,5,21,void 0,6,14,6,-3,5,-6,3,-7,1,-7],107:[17,4,21,4,0,void 0,14,14,4,4,void 0,8,8,15,0],108:[8,4,21,4,0],109:[30,4,14,4,0,void 0,4,10,7,13,9,14,12,14,14,13,15,10,15,0,void 0,15,10,18,13,20,14,23,14,25,13,26,10,26,0],110:[19,4,14,4,0,void 0,4,10,7,13,9,14,12,14,14,13,15,10,15,0],111:[19,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3,16,6,16,8,15,11,13,13,11,14,8,14],112:[19,4,14,4,-7,void 0,4,11,6,13,8,14,11,14,13,13,15,11,16,8,16,6,15,3,13,1,11,0,8,0,6,1,4,3],113:[19,15,14,15,-7,void 0,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3],114:[13,4,14,4,0,void 0,4,8,5,11,7,13,9,14,12,14],115:[17,14,11,13,13,10,14,7,14,4,13,3,11,4,9,6,8,11,7,13,6,14,4,14,3,13,1,10,0,7,0,4,1,3,3],116:[12,5,21,5,4,6,1,8,0,10,0,void 0,2,14,9,14],117:[19,4,14,4,4,5,1,7,0,10,0,12,1,15,4,void 0,15,14,15,0],118:[16,2,14,8,0,void 0,14,14,8,0],119:[22,3,14,7,0,void 0,11,14,7,0,void 0,11,14,15,0,void 0,19,14,15,0],120:[17,3,14,14,0,void 0,14,14,3,0],121:[16,2,14,8,0,void 0,14,14,8,0,6,-4,4,-6,2,-7,1,-7],122:[17,14,14,3,0,void 0,3,14,14,14,void 0,3,0,14,0],123:[14,9,25,7,24,6,23,5,21,5,19,6,17,7,16,8,14,8,12,6,10,void 0,7,24,6,22,6,20,7,18,8,17,9,15,9,13,8,11,4,9,8,7,9,5,9,3,8,1,7,0,6,-2,6,-4,7,-6,void 0,6,8,8,6,8,4,7,2,6,1,5,-1,5,-3,6,-5,7,-6,9,-7],124:[8,4,25,4,-7],125:[14,5,25,7,24,8,23,9,21,9,19,8,17,7,16,6,14,6,12,8,10,void 0,7,24,8,22,8,20,7,18,6,17,5,15,5,13,6,11,10,9,6,7,5,5,5,3,6,1,7,0,8,-2,8,-4,7,-6,void 0,8,8,6,6,6,4,7,2,8,1,9,-1,9,-3,8,-5,7,-6,5,-7],126:[24,3,6,3,8,4,11,6,12,8,12,10,11,14,8,16,7,18,7,20,8,21,10,void 0,3,8,4,10,6,11,8,11,10,10,14,7,16,6,18,6,20,7,21,10,21,12]};
|
|
1924
1927
|
|
|
1925
|
-
},{}],
|
|
1928
|
+
},{}],516:[function(require,module,exports){
|
|
1926
1929
|
module.exports={vectorChar:require("./vectorChar"),vectorText:require("./vectorText")};
|
|
1927
1930
|
|
|
1928
|
-
},{"./vectorChar":
|
|
1931
|
+
},{"./vectorChar":517,"./vectorText":519}],517:[function(require,module,exports){
|
|
1929
1932
|
const vectorParams=require("./vectorParams"),vectorChar=(t,e)=>{const{xOffset:r,yOffset:s,input:h,font:o,height:c,extrudeOffset:n}=vectorParams(t,e);let a=h.charCodeAt(0);a&&o[a]||(a=63);const f=[].concat(o[a]),i=(c-n)/o.height,u=n/2,g=f.shift()*i,l=[];let v=[];for(let t=0,e=f.length;t<e;t+=2){const e=i*f[t]+r,h=i*f[t+1]+s+u;void 0===f[t]?(l.push(v),v=[],t--):v.push([e,h])}return v.length&&l.push(v),{width:g,height:c,segments:l}};module.exports=vectorChar;
|
|
1930
1933
|
|
|
1931
|
-
},{"./vectorParams":
|
|
1934
|
+
},{"./vectorParams":518}],518:[function(require,module,exports){
|
|
1932
1935
|
const defaultFont=require("./fonts/single-line/hershey/simplex.js"),defaultsVectorParams={xOffset:0,yOffset:0,input:"?",align:"left",font:defaultFont,height:14,lineSpacing:2.142857142857143,letterSpacing:1,extrudeOffset:0},vectorParams=(t,e)=>{e||"string"!=typeof t||(t={input:t}),t=t||{};const s=Object.assign({},defaultsVectorParams,t);return s.input=e||s.input,s};module.exports=vectorParams;
|
|
1933
1936
|
|
|
1934
|
-
},{"./fonts/single-line/hershey/simplex.js":
|
|
1937
|
+
},{"./fonts/single-line/hershey/simplex.js":515}],519:[function(require,module,exports){
|
|
1935
1938
|
const vectorChar=require("./vectorChar"),vectorParams=require("./vectorParams"),translateLine=(t,e)=>{const{x:n,y:s}=Object.assign({x:0,y:0},t||{}),r=e.segments;let h=null,a=null;for(let t=0,e=r.length;t<e;t++)for(let e=0,o=(h=r[t]).length;e<o;e++)a=h[e],h[e]=[a[0]+n,a[1]+s];return e},vectorText=(t,e)=>{const{xOffset:n,yOffset:s,input:r,font:h,height:a,align:o,extrudeOffset:i,lineSpacing:c,letterSpacing:g}=vectorParams(t,e);let l,f,m,x,u,d,[v,w]=[n,s],O={width:0,segments:[]};const p=[];let y=[],C=0;const L=v,P=()=>{p.push(O),C=Math.max(C,O.width),O={width:0,segments:[]}};for(l=0,f=r.length;l<f;l++)m=r[l],x=vectorChar({xOffset:v,yOffset:w,font:h,height:a,extrudeOffset:i},m),"\n"!==m?(u=x.width*g,O.width+=u,v+=u," "!==m&&(O.segments=O.segments.concat(x.segments))):(v=L,w-=x.height*c,P());for(O.segments.length&&P(),l=0,f=p.length;l<f;l++)O=p[l],C>O.width&&(d=C-O.width,"right"===o?O=translateLine({x:d},O):"center"===o&&(O=translateLine({x:d/2},O))),y=y.concat(O.segments);return y};module.exports=vectorText;
|
|
1936
1939
|
|
|
1937
|
-
},{"./vectorChar":
|
|
1940
|
+
},{"./vectorChar":517,"./vectorParams":518}],520:[function(require,module,exports){
|
|
1938
1941
|
const geom2=require("../geometries/geom2"),geom3=require("../geometries/geom3"),path2=require("../geometries/path2"),areAllShapesTheSameType=e=>{let r;for(const o of e){let e=0;if(geom2.isA(o)&&(e=1),geom3.isA(o)&&(e=2),path2.isA(o)&&(e=3),r&&e!==r)return!1;r=e}return!0};module.exports=areAllShapesTheSameType;
|
|
1939
1942
|
|
|
1940
|
-
},{"../geometries/geom2":149,"../geometries/geom3":165,"../geometries/path2":186}],
|
|
1943
|
+
},{"../geometries/geom2":149,"../geometries/geom3":165,"../geometries/path2":186}],521:[function(require,module,exports){
|
|
1941
1944
|
const degToRad=d=>.017453292519943295*d;module.exports=degToRad;
|
|
1942
1945
|
|
|
1943
|
-
},{}],
|
|
1946
|
+
},{}],522:[function(require,module,exports){
|
|
1944
1947
|
const flatten=t=>t.reduce((t,a)=>Array.isArray(a)?t.concat(flatten(a)):t.concat(a),[]);module.exports=flatten;
|
|
1945
1948
|
|
|
1946
|
-
},{}],
|
|
1949
|
+
},{}],523:[function(require,module,exports){
|
|
1947
1950
|
const fnNumberSort=(o,r)=>o-r;module.exports=fnNumberSort;
|
|
1948
1951
|
|
|
1949
|
-
},{}],
|
|
1952
|
+
},{}],524:[function(require,module,exports){
|
|
1950
1953
|
module.exports={areAllShapesTheSameType:require("./areAllShapesTheSameType"),degToRad:require("./degToRad"),flatten:require("./flatten"),fnNumberSort:require("./fnNumberSort"),insertSorted:require("./insertSorted"),radiusToSegments:require("./radiusToSegments"),radToDeg:require("./radToDeg")};
|
|
1951
1954
|
|
|
1952
|
-
},{"./areAllShapesTheSameType":
|
|
1955
|
+
},{"./areAllShapesTheSameType":520,"./degToRad":521,"./flatten":522,"./fnNumberSort":523,"./insertSorted":525,"./radToDeg":527,"./radiusToSegments":528}],525:[function(require,module,exports){
|
|
1953
1956
|
const insertSorted=(t,e,o)=>{let r=0,s=t.length;for(;s>r;){const l=Math.floor((r+s)/2);o(e,t[l])>0?r=l+1:s=l}t.splice(r,0,e)};module.exports=insertSorted;
|
|
1954
1957
|
|
|
1955
|
-
},{}],
|
|
1958
|
+
},{}],526:[function(require,module,exports){
|
|
1956
1959
|
const padArrayToLength=(r,e,o)=>{for(r=r.slice();r.length<o;)r.push(e);return r};module.exports=padArrayToLength;
|
|
1957
1960
|
|
|
1958
|
-
},{}],
|
|
1961
|
+
},{}],527:[function(require,module,exports){
|
|
1959
1962
|
const radToDeg=o=>57.29577951308232*o;module.exports=radToDeg;
|
|
1960
1963
|
|
|
1961
|
-
},{}],
|
|
1964
|
+
},{}],528:[function(require,module,exports){
|
|
1962
1965
|
const{TAU:TAU}=require("../maths/constants"),radiusToSegments=(t,e,s)=>{const a=e>0?t*TAU/e:0,n=s>0?TAU/s:0;return Math.ceil(Math.max(a,n,4))};module.exports=radiusToSegments;
|
|
1963
1966
|
|
|
1964
|
-
},{"../maths/constants":218}],
|
|
1967
|
+
},{"../maths/constants":218}],529:[function(require,module,exports){
|
|
1965
1968
|
const flatten=t=>t.reduce((t,a)=>Array.isArray(a)?t.concat(flatten(a)):t.concat(a),[]);module.exports=flatten;
|
|
1966
1969
|
|
|
1967
|
-
},{}],
|
|
1970
|
+
},{}],530:[function(require,module,exports){
|
|
1968
1971
|
const fnNumberSort=(o,r)=>o-r;module.exports=fnNumberSort;
|
|
1969
1972
|
|
|
1970
|
-
},{}],
|
|
1973
|
+
},{}],531:[function(require,module,exports){
|
|
1971
1974
|
const head=r=>{if(Array.isArray(r)&&0!==r.length)return r[0]};module.exports=head;
|
|
1972
1975
|
|
|
1973
|
-
},{}],
|
|
1976
|
+
},{}],532:[function(require,module,exports){
|
|
1974
1977
|
module.exports={flatten:require("./flatten"),fnNumberSort:require("./fnNumberSort"),head:require("./head"),insertSorted:require("./insertSorted"),nth:require("./nth"),padToLength:require("./padToLength"),toArray:require("./toArray")};
|
|
1975
1978
|
|
|
1976
|
-
},{"./flatten":
|
|
1979
|
+
},{"./flatten":529,"./fnNumberSort":530,"./head":531,"./insertSorted":533,"./nth":534,"./padToLength":535,"./toArray":536}],533:[function(require,module,exports){
|
|
1977
1980
|
const insertSorted=(t,e,o)=>{let r=0,n=t.length;for(;n>r;){const s=Math.floor((r+n)/2);o(e,t[s])>0?r=s+1:n=s}return t.splice(r,0,e),t};module.exports=insertSorted;
|
|
1978
1981
|
|
|
1979
|
-
},{}],
|
|
1982
|
+
},{}],534:[function(require,module,exports){
|
|
1980
1983
|
const nth=(r,t)=>{if(Array.isArray(r)&&!(r.length<t))return r[t]};module.exports=nth;
|
|
1981
1984
|
|
|
1982
|
-
},{}],
|
|
1985
|
+
},{}],535:[function(require,module,exports){
|
|
1983
1986
|
const padToLength=(e,o,t)=>{for(e=e.slice();e.length<t;)e.push(o);return e};module.exports=padToLength;
|
|
1984
1987
|
|
|
1985
|
-
},{}],
|
|
1988
|
+
},{}],536:[function(require,module,exports){
|
|
1986
1989
|
const toArray=r=>Array.isArray(r)?r:null==r?[]:[r];module.exports=toArray;
|
|
1987
1990
|
|
|
1988
1991
|
},{}]},{},[24])(24)
|