{"version":3,"sources":["jsdelivr-header.js","/npm/three-buffer-geometry-utils@1.0.0/index.js"],"names":[],"mappings":"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","file":"/npm/three-buffer-geometry-utils@1.0.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/three-buffer-geometry-utils@1.0.0/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar THREE = require('three');\n\nfunction BufferGeometryUtils() {\n\n\treturn {\n\n\tcomputeTangents: function ( geometry ) {\n\n\t\tvar index = geometry.index;\n\t\tvar attributes = geometry.attributes;\n\n\t\t// based on http://www.terathon.com/code/tangent.html\n\t\t// (per vertex tangents)\n\n\t\tif ( index === null ||\n\t\t\t attributes.position === undefined ||\n\t\t\t attributes.normal === undefined ||\n\t\t\t attributes.uv === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: Missing required attributes (index, position, normal or uv) in BufferGeometry.computeTangents()' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar indices = index.array;\n\t\tvar positions = attributes.position.array;\n\t\tvar normals = attributes.normal.array;\n\t\tvar uvs = attributes.uv.array;\n\n\t\tvar nVertices = positions.length / 3;\n\n\t\tif ( attributes.tangent === undefined ) {\n\n\t\t\tgeometry.addAttribute( 'tangent', new THREE.BufferAttribute( new Float32Array( 4 * nVertices ), 4 ) );\n\n\t\t}\n\n\t\tvar tangents = attributes.tangent.array;\n\n\t\tvar tan1 = [], tan2 = [];\n\n\t\tfor ( var k = 0; k < nVertices; k ++ ) {\n\n\t\t\ttan1[ k ] = new THREE.Vector3();\n\t\t\ttan2[ k ] = new THREE.Vector3();\n\n\t\t}\n\n\t\tvar vA = new THREE.Vector3(),\n\t\t\tvB = new THREE.Vector3(),\n\t\t\tvC = new THREE.Vector3(),\n\n\t\t\tuvA = new THREE.Vector2(),\n\t\t\tuvB = new THREE.Vector2(),\n\t\t\tuvC = new THREE.Vector2(),\n\n\t\t\tsdir = new THREE.Vector3(),\n\t\t\ttdir = new THREE.Vector3();\n\n\t\tfunction handleTriangle( a, b, c ) {\n\n\t\t\tvA.fromArray( positions, a * 3 );\n\t\t\tvB.fromArray( positions, b * 3 );\n\t\t\tvC.fromArray( positions, c * 3 );\n\n\t\t\tuvA.fromArray( uvs, a * 2 );\n\t\t\tuvB.fromArray( uvs, b * 2 );\n\t\t\tuvC.fromArray( uvs, c * 2 );\n\n\t\t\tvar x1 = vB.x - vA.x;\n\t\t\tvar x2 = vC.x - vA.x;\n\n\t\t\tvar y1 = vB.y - vA.y;\n\t\t\tvar y2 = vC.y - vA.y;\n\n\t\t\tvar z1 = vB.z - vA.z;\n\t\t\tvar z2 = vC.z - vA.z;\n\n\t\t\tvar s1 = uvB.x - uvA.x;\n\t\t\tvar s2 = uvC.x - uvA.x;\n\n\t\t\tvar t1 = uvB.y - uvA.y;\n\t\t\tvar t2 = uvC.y - uvA.y;\n\n\t\t\tvar r = 1.0 / ( s1 * t2 - s2 * t1 );\n\n\t\t\tsdir.set(\n\t\t\t\t( t2 * x1 - t1 * x2 ) * r,\n\t\t\t\t( t2 * y1 - t1 * y2 ) * r,\n\t\t\t\t( t2 * z1 - t1 * z2 ) * r\n\t\t\t);\n\n\t\t\ttdir.set(\n\t\t\t\t( s1 * x2 - s2 * x1 ) * r,\n\t\t\t\t( s1 * y2 - s2 * y1 ) * r,\n\t\t\t\t( s1 * z2 - s2 * z1 ) * r\n\t\t\t);\n\n\t\t\ttan1[ a ].add( sdir );\n\t\t\ttan1[ b ].add( sdir );\n\t\t\ttan1[ c ].add( sdir );\n\n\t\t\ttan2[ a ].add( tdir );\n\t\t\ttan2[ b ].add( tdir );\n\t\t\ttan2[ c ].add( tdir );\n\n\t\t}\n\n\t\tvar groups = geometry.groups;\n\n\t\tif ( groups.length === 0 ) {\n\n\t\t\tgroups = [ {\n\t\t\t\tstart: 0,\n\t\t\t\tcount: indices.length\n\t\t\t} ];\n\n\t\t}\n\n\t\tfor ( var j = 0, jl = groups.length; j < jl; ++ j ) {\n\n\t\t\tvar group = groups[ j ];\n\n\t\t\tvar start = group.start;\n\t\t\tvar count = group.count;\n\n\t\t\tfor ( var i = start, il = start + count; i < il; i += 3 ) {\n\n\t\t\t\thandleTriangle(\n\t\t\t\t\tindices[ i + 0 ],\n\t\t\t\t\tindices[ i + 1 ],\n\t\t\t\t\tindices[ i + 2 ]\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar tmp = new THREE.Vector3(), tmp2 = new THREE.Vector3();\n\t\tvar n = new THREE.Vector3(), n2 = new THREE.Vector3();\n\t\tvar w, t, test;\n\n\t\tfunction handleVertex( v ) {\n\n\t\t\tn.fromArray( normals, v * 3 );\n\t\t\tn2.copy( n );\n\n\t\t\tt = tan1[ v ];\n\n\t\t\t// Gram-Schmidt orthogonalize\n\n\t\t\ttmp.copy( t );\n\t\t\ttmp.sub( n.multiplyScalar( n.dot( t ) ) ).normalize();\n\n\t\t\t// Calculate handedness\n\n\t\t\ttmp2.crossVectors( n2, t );\n\t\t\ttest = tmp2.dot( tan2[ v ] );\n\t\t\tw = ( test < 0.0 ) ? - 1.0 : 1.0;\n\n\t\t\ttangents[ v * 4 ] = tmp.x;\n\t\t\ttangents[ v * 4 + 1 ] = tmp.y;\n\t\t\ttangents[ v * 4 + 2 ] = tmp.z;\n\t\t\ttangents[ v * 4 + 3 ] = w;\n\n\t\t}\n\n\t\tfor ( var j = 0, jl = groups.length; j < jl; ++ j ) {\n\n\t\t\tvar group = groups[ j ];\n\n\t\t\tvar start = group.start;\n\t\t\tvar count = group.count;\n\n\t\t\tfor ( var i = start, il = start + count; i < il; i += 3 ) {\n\n\t\t\t\thandleVertex( indices[ i + 0 ] );\n\t\t\t\thandleVertex( indices[ i + 1 ] );\n\t\t\t\thandleVertex( indices[ i + 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t}\n\n};\n\nmodule.exports = BufferGeometryUtils;\n"]}