{"version":3,"sources":["jsdelivr-header.js","/npm/three@0.169.0/examples/jsm/geometries/RoundedBoxGeometry.js"],"names":[],"mappings":"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","file":"/npm/three@0.169.0/examples/jsm/geometries/RoundedBoxGeometry.js/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v4.62.2 and esbuild v0.28.1.\n * Original file: /npm/three@0.169.0/examples/jsm/geometries/RoundedBoxGeometry.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import {\n\tBoxGeometry,\n\tVector3\n} from 'three';\n\nconst _tempNormal = new Vector3();\n\nfunction getUv( faceDirVector, normal, uvAxis, projectionAxis, radius, sideLength ) {\n\n\tconst totArcLength = 2 * Math.PI * radius / 4;\n\n\t// length of the planes between the arcs on each axis\n\tconst centerLength = Math.max( sideLength - 2 * radius, 0 );\n\tconst halfArc = Math.PI / 4;\n\n\t// Get the vector projected onto the Y plane\n\t_tempNormal.copy( normal );\n\t_tempNormal[ projectionAxis ] = 0;\n\t_tempNormal.normalize();\n\n\t// total amount of UV space alloted to a single arc\n\tconst arcUvRatio = 0.5 * totArcLength / ( totArcLength + centerLength );\n\n\t// the distance along one arc the point is at\n\tconst arcAngleRatio = 1.0 - ( _tempNormal.angleTo( faceDirVector ) / halfArc );\n\n\tif ( Math.sign( _tempNormal[ uvAxis ] ) === 1 ) {\n\n\t\treturn arcAngleRatio * arcUvRatio;\n\n\t} else {\n\n\t\t// total amount of UV space alloted to the plane between the arcs\n\t\tconst lenUv = centerLength / ( totArcLength + centerLength );\n\t\treturn lenUv + arcUvRatio + arcUvRatio * ( 1.0 - arcAngleRatio );\n\n\t}\n\n}\n\nclass RoundedBoxGeometry extends BoxGeometry {\n\n\tconstructor( width = 1, height = 1, depth = 1, segments = 2, radius = 0.1 ) {\n\n\t\t// ensure segments is odd so we have a plane connecting the rounded corners\n\t\tsegments = segments * 2 + 1;\n\n\t\t// ensure radius isn't bigger than shortest side\n\t\tradius = Math.min( width / 2, height / 2, depth / 2, radius );\n\n\t\tsuper( 1, 1, 1, segments, segments, segments );\n\n\t\t// if we just have one segment we're the same as a regular box\n\t\tif ( segments === 1 ) return;\n\n\t\tconst geometry2 = this.toNonIndexed();\n\n\t\tthis.index = null;\n\t\tthis.attributes.position = geometry2.attributes.position;\n\t\tthis.attributes.normal = geometry2.attributes.normal;\n\t\tthis.attributes.uv = geometry2.attributes.uv;\n\n\t\t//\n\n\t\tconst position = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\tconst box = new Vector3( width, height, depth ).divideScalar( 2 ).subScalar( radius );\n\n\t\tconst positions = this.attributes.position.array;\n\t\tconst normals = this.attributes.normal.array;\n\t\tconst uvs = this.attributes.uv.array;\n\n\t\tconst faceTris = positions.length / 6;\n\t\tconst faceDirVector = new Vector3();\n\t\tconst halfSegmentSize = 0.5 / segments;\n\n\t\tfor ( let i = 0, j = 0; i < positions.length; i += 3, j += 2 ) {\n\n\t\t\tposition.fromArray( positions, i );\n\t\t\tnormal.copy( position );\n\t\t\tnormal.x -= Math.sign( normal.x ) * halfSegmentSize;\n\t\t\tnormal.y -= Math.sign( normal.y ) * halfSegmentSize;\n\t\t\tnormal.z -= Math.sign( normal.z ) * halfSegmentSize;\n\t\t\tnormal.normalize();\n\n\t\t\tpositions[ i + 0 ] = box.x * Math.sign( position.x ) + normal.x * radius;\n\t\t\tpositions[ i + 1 ] = box.y * Math.sign( position.y ) + normal.y * radius;\n\t\t\tpositions[ i + 2 ] = box.z * Math.sign( position.z ) + normal.z * radius;\n\n\t\t\tnormals[ i + 0 ] = normal.x;\n\t\t\tnormals[ i + 1 ] = normal.y;\n\t\t\tnormals[ i + 2 ] = normal.z;\n\n\t\t\tconst side = Math.floor( i / faceTris );\n\n\t\t\tswitch ( side ) {\n\n\t\t\t\tcase 0: // right\n\n\t\t\t\t\t// generate UVs along Z then Y\n\t\t\t\t\tfaceDirVector.set( 1, 0, 0 );\n\t\t\t\t\tuvs[ j + 0 ] = getUv( faceDirVector, normal, 'z', 'y', radius, depth );\n\t\t\t\t\tuvs[ j + 1 ] = 1.0 - getUv( faceDirVector, normal, 'y', 'z', radius, height );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 1: // left\n\n\t\t\t\t\t// generate UVs along Z then Y\n\t\t\t\t\tfaceDirVector.set( - 1, 0, 0 );\n\t\t\t\t\tuvs[ j + 0 ] = 1.0 - getUv( faceDirVector, normal, 'z', 'y', radius, depth );\n\t\t\t\t\tuvs[ j + 1 ] = 1.0 - getUv( faceDirVector, normal, 'y', 'z', radius, height );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2: // top\n\n\t\t\t\t\t// generate UVs along X then Z\n\t\t\t\t\tfaceDirVector.set( 0, 1, 0 );\n\t\t\t\t\tuvs[ j + 0 ] = 1.0 - getUv( faceDirVector, normal, 'x', 'z', radius, width );\n\t\t\t\t\tuvs[ j + 1 ] = getUv( faceDirVector, normal, 'z', 'x', radius, depth );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 3: // bottom\n\n\t\t\t\t\t// generate UVs along X then Z\n\t\t\t\t\tfaceDirVector.set( 0, - 1, 0 );\n\t\t\t\t\tuvs[ j + 0 ] = 1.0 - getUv( faceDirVector, normal, 'x', 'z', radius, width );\n\t\t\t\t\tuvs[ j + 1 ] = 1.0 - getUv( faceDirVector, normal, 'z', 'x', radius, depth );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 4: // front\n\n\t\t\t\t\t// generate UVs along X then Y\n\t\t\t\t\tfaceDirVector.set( 0, 0, 1 );\n\t\t\t\t\tuvs[ j + 0 ] = 1.0 - getUv( faceDirVector, normal, 'x', 'y', radius, width );\n\t\t\t\t\tuvs[ j + 1 ] = 1.0 - getUv( faceDirVector, normal, 'y', 'x', radius, height );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 5: // back\n\n\t\t\t\t\t// generate UVs along X then Y\n\t\t\t\t\tfaceDirVector.set( 0, 0, - 1 );\n\t\t\t\t\tuvs[ j + 0 ] = getUv( faceDirVector, normal, 'x', 'y', radius, width );\n\t\t\t\t\tuvs[ j + 1 ] = 1.0 - getUv( faceDirVector, normal, 'y', 'x', radius, height );\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nexport { RoundedBoxGeometry };\n"]}