{"ast":null,"code":"import { Vector3 } from \"../../Maths/math.vector.js\";\nimport { Color4 } from \"../../Maths/math.color.js\";\nimport { Mesh } from \"../../Meshes/mesh.js\";\nimport { VertexData } from \"../mesh.vertexData.js\";\nimport { Logger } from \"../../Misc/logger.js\";\nimport { _PrimaryIsoTriangle, GeodesicData } from \"../geodesicMesh.js\";\nimport { GoldbergMesh } from \"../goldbergMesh.js\";\nimport { useOpenGLOrientationForUV } from \"../../Compat/compatibilityOptions.js\";\n/**\n * Creates the Mesh for a Goldberg Polyhedron\n * @param options an object used to set the following optional parameters for the polyhedron, required but can be empty\n * @param goldbergData polyhedronData defining the Goldberg polyhedron\n * @returns GoldbergSphere mesh\n */\nexport function CreateGoldbergVertexData(options, goldbergData) {\n const size = options.size;\n const sizeX = options.sizeX || size || 1;\n const sizeY = options.sizeY || size || 1;\n const sizeZ = options.sizeZ || size || 1;\n const sideOrientation = options.sideOrientation === 0 ? 0 : options.sideOrientation || VertexData.DEFAULTSIDE;\n const positions = [];\n const indices = [];\n const normals = [];\n const uvs = [];\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n for (let v = 0; v < goldbergData.vertex.length; v++) {\n minX = Math.min(minX, goldbergData.vertex[v][0] * sizeX);\n maxX = Math.max(maxX, goldbergData.vertex[v][0] * sizeX);\n minY = Math.min(minY, goldbergData.vertex[v][1] * sizeY);\n maxY = Math.max(maxY, goldbergData.vertex[v][1] * sizeY);\n }\n let index = 0;\n for (let f = 0; f < goldbergData.face.length; f++) {\n const verts = goldbergData.face[f];\n const a = Vector3.FromArray(goldbergData.vertex[verts[0]]);\n const b = Vector3.FromArray(goldbergData.vertex[verts[2]]);\n const c = Vector3.FromArray(goldbergData.vertex[verts[1]]);\n const ba = b.subtract(a);\n const ca = c.subtract(a);\n const norm = Vector3.Cross(ca, ba).normalize();\n for (let v = 0; v < verts.length; v++) {\n normals.push(norm.x, norm.y, norm.z);\n const pdata = goldbergData.vertex[verts[v]];\n positions.push(pdata[0] * sizeX, pdata[1] * sizeY, pdata[2] * sizeZ);\n const vCoord = (pdata[1] * sizeY - minY) / (maxY - minY);\n uvs.push((pdata[0] * sizeX - minX) / (maxX - minX), useOpenGLOrientationForUV ? 1 - vCoord : vCoord);\n }\n for (let v = 0; v < verts.length - 2; v++) {\n indices.push(index, index + v + 2, index + v + 1);\n }\n index += verts.length;\n }\n VertexData._ComputeSides(sideOrientation, positions, indices, normals, uvs);\n const vertexData = new VertexData();\n vertexData.positions = positions;\n vertexData.indices = indices;\n vertexData.normals = normals;\n vertexData.uvs = uvs;\n return vertexData;\n}\n/**\n * Creates the Mesh for a Goldberg Polyhedron which is made from 12 pentagonal and the rest hexagonal faces\n * @see https://en.wikipedia.org/wiki/Goldberg_polyhedron\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/polyhedra/goldberg_poly\n * @param name defines the name of the mesh\n * @param options an object used to set the following optional parameters for the polyhedron, required but can be empty\n * @param scene defines the hosting scene\n * @returns Goldberg mesh\n */\nexport function CreateGoldberg(name, options, scene = null) {\n const size = options.size;\n const sizeX = options.sizeX || size || 1;\n const sizeY = options.sizeY || size || 1;\n const sizeZ = options.sizeZ || size || 1;\n let m = options.m || 1;\n if (m !== Math.floor(m)) {\n m = Math.floor(m);\n Logger.Warn(\"m not an integer only floor(m) used\");\n }\n let n = options.n || 0;\n if (n !== Math.floor(n)) {\n n = Math.floor(n);\n Logger.Warn(\"n not an integer only floor(n) used\");\n }\n if (n > m) {\n const temp = n;\n n = m;\n m = temp;\n Logger.Warn(\"n > m therefore m and n swapped\");\n }\n const primTri = new _PrimaryIsoTriangle();\n primTri.build(m, n);\n const geodesicData = GeodesicData.BuildGeodesicData(primTri);\n const goldbergData = geodesicData.toGoldbergPolyhedronData();\n const goldberg = new GoldbergMesh(name, scene);\n options.sideOrientation = Mesh._GetDefaultSideOrientation(options.sideOrientation);\n goldberg._originalBuilderSideOrientation = options.sideOrientation;\n const vertexData = CreateGoldbergVertexData(options, goldbergData);\n vertexData.applyToMesh(goldberg, options.updatable);\n goldberg.goldbergData.nbSharedFaces = geodesicData.sharedNodes;\n goldberg.goldbergData.nbUnsharedFaces = geodesicData.poleNodes;\n goldberg.goldbergData.adjacentFaces = geodesicData.adjacentFaces;\n goldberg.goldbergData.nbFaces = goldberg.goldbergData.nbSharedFaces + goldberg.goldbergData.nbUnsharedFaces;\n goldberg.goldbergData.nbFacesAtPole = (goldberg.goldbergData.nbUnsharedFaces - 12) / 12;\n for (let f = 0; f < geodesicData.vertex.length; f++) {\n goldberg.goldbergData.faceCenters.push(Vector3.FromArray(geodesicData.vertex[f]));\n goldberg.goldbergData.faceCenters[f].x *= sizeX;\n goldberg.goldbergData.faceCenters[f].y *= sizeY;\n goldberg.goldbergData.faceCenters[f].z *= sizeZ;\n goldberg.goldbergData.faceColors.push(new Color4(1, 1, 1, 1));\n }\n for (let f = 0; f < goldbergData.face.length; f++) {\n const verts = goldbergData.face[f];\n const a = Vector3.FromArray(goldbergData.vertex[verts[0]]);\n const b = Vector3.FromArray(goldbergData.vertex[verts[2]]);\n const c = Vector3.FromArray(goldbergData.vertex[verts[1]]);\n const ba = b.subtract(a);\n const ca = c.subtract(a);\n const norm = Vector3.Cross(ca, ba).normalize();\n const z = Vector3.Cross(ca, norm).normalize();\n goldberg.goldbergData.faceXaxis.push(ca.normalize());\n goldberg.goldbergData.faceYaxis.push(norm);\n goldberg.goldbergData.faceZaxis.push(z);\n }\n return goldberg;\n}","map":{"version":3,"names":["Vector3","Color4","Mesh","VertexData","Logger","_PrimaryIsoTriangle","GeodesicData","GoldbergMesh","useOpenGLOrientationForUV","CreateGoldbergVertexData","options","goldbergData","size","sizeX","sizeY","sizeZ","sideOrientation","DEFAULTSIDE","positions","indices","normals","uvs","minX","Infinity","maxX","minY","maxY","v","vertex","length","Math","min","max","index","f","face","verts","a","FromArray","b","c","ba","subtract","ca","norm","Cross","normalize","push","x","y","z","pdata","vCoord","_ComputeSides","vertexData","CreateGoldberg","name","scene","m","floor","Warn","n","temp","primTri","build","geodesicData","BuildGeodesicData","toGoldbergPolyhedronData","goldberg","_GetDefaultSideOrientation","_originalBuilderSideOrientation","applyToMesh","updatable","nbSharedFaces","sharedNodes","nbUnsharedFaces","poleNodes","adjacentFaces","nbFaces","nbFacesAtPole","faceCenters","faceColors","faceXaxis","faceYaxis","faceZaxis"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Meshes/Builders/goldbergBuilder.js"],"sourcesContent":["import { Vector3 } from \"../../Maths/math.vector.js\";\nimport { Color4 } from \"../../Maths/math.color.js\";\nimport { Mesh } from \"../../Meshes/mesh.js\";\nimport { VertexData } from \"../mesh.vertexData.js\";\nimport { Logger } from \"../../Misc/logger.js\";\nimport { _PrimaryIsoTriangle, GeodesicData } from \"../geodesicMesh.js\";\nimport { GoldbergMesh } from \"../goldbergMesh.js\";\nimport { useOpenGLOrientationForUV } from \"../../Compat/compatibilityOptions.js\";\n/**\n * Creates the Mesh for a Goldberg Polyhedron\n * @param options an object used to set the following optional parameters for the polyhedron, required but can be empty\n * @param goldbergData polyhedronData defining the Goldberg polyhedron\n * @returns GoldbergSphere mesh\n */\nexport function CreateGoldbergVertexData(options, goldbergData) {\n const size = options.size;\n const sizeX = options.sizeX || size || 1;\n const sizeY = options.sizeY || size || 1;\n const sizeZ = options.sizeZ || size || 1;\n const sideOrientation = options.sideOrientation === 0 ? 0 : options.sideOrientation || VertexData.DEFAULTSIDE;\n const positions = [];\n const indices = [];\n const normals = [];\n const uvs = [];\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n for (let v = 0; v < goldbergData.vertex.length; v++) {\n minX = Math.min(minX, goldbergData.vertex[v][0] * sizeX);\n maxX = Math.max(maxX, goldbergData.vertex[v][0] * sizeX);\n minY = Math.min(minY, goldbergData.vertex[v][1] * sizeY);\n maxY = Math.max(maxY, goldbergData.vertex[v][1] * sizeY);\n }\n let index = 0;\n for (let f = 0; f < goldbergData.face.length; f++) {\n const verts = goldbergData.face[f];\n const a = Vector3.FromArray(goldbergData.vertex[verts[0]]);\n const b = Vector3.FromArray(goldbergData.vertex[verts[2]]);\n const c = Vector3.FromArray(goldbergData.vertex[verts[1]]);\n const ba = b.subtract(a);\n const ca = c.subtract(a);\n const norm = Vector3.Cross(ca, ba).normalize();\n for (let v = 0; v < verts.length; v++) {\n normals.push(norm.x, norm.y, norm.z);\n const pdata = goldbergData.vertex[verts[v]];\n positions.push(pdata[0] * sizeX, pdata[1] * sizeY, pdata[2] * sizeZ);\n const vCoord = (pdata[1] * sizeY - minY) / (maxY - minY);\n uvs.push((pdata[0] * sizeX - minX) / (maxX - minX), useOpenGLOrientationForUV ? 1 - vCoord : vCoord);\n }\n for (let v = 0; v < verts.length - 2; v++) {\n indices.push(index, index + v + 2, index + v + 1);\n }\n index += verts.length;\n }\n VertexData._ComputeSides(sideOrientation, positions, indices, normals, uvs);\n const vertexData = new VertexData();\n vertexData.positions = positions;\n vertexData.indices = indices;\n vertexData.normals = normals;\n vertexData.uvs = uvs;\n return vertexData;\n}\n/**\n * Creates the Mesh for a Goldberg Polyhedron which is made from 12 pentagonal and the rest hexagonal faces\n * @see https://en.wikipedia.org/wiki/Goldberg_polyhedron\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/polyhedra/goldberg_poly\n * @param name defines the name of the mesh\n * @param options an object used to set the following optional parameters for the polyhedron, required but can be empty\n * @param scene defines the hosting scene\n * @returns Goldberg mesh\n */\nexport function CreateGoldberg(name, options, scene = null) {\n const size = options.size;\n const sizeX = options.sizeX || size || 1;\n const sizeY = options.sizeY || size || 1;\n const sizeZ = options.sizeZ || size || 1;\n let m = options.m || 1;\n if (m !== Math.floor(m)) {\n m = Math.floor(m);\n Logger.Warn(\"m not an integer only floor(m) used\");\n }\n let n = options.n || 0;\n if (n !== Math.floor(n)) {\n n = Math.floor(n);\n Logger.Warn(\"n not an integer only floor(n) used\");\n }\n if (n > m) {\n const temp = n;\n n = m;\n m = temp;\n Logger.Warn(\"n > m therefore m and n swapped\");\n }\n const primTri = new _PrimaryIsoTriangle();\n primTri.build(m, n);\n const geodesicData = GeodesicData.BuildGeodesicData(primTri);\n const goldbergData = geodesicData.toGoldbergPolyhedronData();\n const goldberg = new GoldbergMesh(name, scene);\n options.sideOrientation = Mesh._GetDefaultSideOrientation(options.sideOrientation);\n goldberg._originalBuilderSideOrientation = options.sideOrientation;\n const vertexData = CreateGoldbergVertexData(options, goldbergData);\n vertexData.applyToMesh(goldberg, options.updatable);\n goldberg.goldbergData.nbSharedFaces = geodesicData.sharedNodes;\n goldberg.goldbergData.nbUnsharedFaces = geodesicData.poleNodes;\n goldberg.goldbergData.adjacentFaces = geodesicData.adjacentFaces;\n goldberg.goldbergData.nbFaces = goldberg.goldbergData.nbSharedFaces + goldberg.goldbergData.nbUnsharedFaces;\n goldberg.goldbergData.nbFacesAtPole = (goldberg.goldbergData.nbUnsharedFaces - 12) / 12;\n for (let f = 0; f < geodesicData.vertex.length; f++) {\n goldberg.goldbergData.faceCenters.push(Vector3.FromArray(geodesicData.vertex[f]));\n goldberg.goldbergData.faceCenters[f].x *= sizeX;\n goldberg.goldbergData.faceCenters[f].y *= sizeY;\n goldberg.goldbergData.faceCenters[f].z *= sizeZ;\n goldberg.goldbergData.faceColors.push(new Color4(1, 1, 1, 1));\n }\n for (let f = 0; f < goldbergData.face.length; f++) {\n const verts = goldbergData.face[f];\n const a = Vector3.FromArray(goldbergData.vertex[verts[0]]);\n const b = Vector3.FromArray(goldbergData.vertex[verts[2]]);\n const c = Vector3.FromArray(goldbergData.vertex[verts[1]]);\n const ba = b.subtract(a);\n const ca = c.subtract(a);\n const norm = Vector3.Cross(ca, ba).normalize();\n const z = Vector3.Cross(ca, norm).normalize();\n goldberg.goldbergData.faceXaxis.push(ca.normalize());\n goldberg.goldbergData.faceYaxis.push(norm);\n goldberg.goldbergData.faceZaxis.push(z);\n }\n return goldberg;\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}