(props)
| 100727 | return ColumnGeometry1; |
| 100728 | }((0, _core1.Geometry)); |
| 100729 | function tesselateColumn(props) { |
| 100730 | var radius = props.radius, _props$height = props.height, height = _props$height === void 0 ? 1 : _props$height, _props$nradial = props.nradial, nradial = _props$nradial === void 0 ? 10 : _props$nradial, vertices = props.vertices; |
| 100731 | (0, _core.log).assert(!vertices || vertices.length >= nradial); |
| 100732 | var vertsAroundEdge = nradial + 1; |
| 100733 | var numVertices = vertsAroundEdge * 3; |
| 100734 | var stepAngle = Math.PI * 2 / nradial; |
| 100735 | var indices = new Uint16Array(nradial * 6); |
| 100736 | var positions = new Float32Array(numVertices * 3); |
| 100737 | var normals = new Float32Array(numVertices * 3); |
| 100738 | var i = 0; |
| 100739 | for(var j = 0; j < vertsAroundEdge; j++){ |
| 100740 | var a = j * stepAngle; |
| 100741 | var vertex = vertices && vertices[j % nradial]; |
| 100742 | var nextVertex = vertices && vertices[(j + 1) % nradial]; |
| 100743 | var sin = Math.sin(a); |
| 100744 | var cos = Math.cos(a); |
| 100745 | for(var k = 0; k < 2; k++){ |
| 100746 | positions[i + 0] = vertex ? vertex[0] : cos * radius; |
| 100747 | positions[i + 1] = vertex ? vertex[1] : sin * radius; |
| 100748 | positions[i + 2] = (0.5 - k) * height; |
| 100749 | normals[i + 0] = vertex ? nextVertex[0] - vertex[0] : cos; |
| 100750 | normals[i + 1] = vertex ? nextVertex[1] - vertex[1] : sin; |
| 100751 | i += 3; |
| 100752 | } |
| 100753 | } |
| 100754 | for(var _j = 0; _j < vertsAroundEdge; _j++){ |
| 100755 | var v = Math.floor(_j / 2) * Math.sign(_j % 2 - 0.5); |
| 100756 | var _a = v * stepAngle; |
| 100757 | var _vertex = vertices && vertices[(v + nradial) % nradial]; |
| 100758 | var _sin = Math.sin(_a); |
| 100759 | var _cos = Math.cos(_a); |
| 100760 | positions[i + 0] = _vertex ? _vertex[0] : _cos * radius; |
| 100761 | positions[i + 1] = _vertex ? _vertex[1] : _sin * radius; |
| 100762 | positions[i + 2] = height / 2; |
| 100763 | normals[i + 2] = 1; |
| 100764 | i += 3; |
| 100765 | } |
| 100766 | var index = 0; |
| 100767 | for(var _j2 = 0; _j2 < nradial; _j2++){ |
| 100768 | indices[index++] = _j2 * 2 + 0; |
| 100769 | indices[index++] = _j2 * 2 + 2; |
| 100770 | indices[index++] = _j2 * 2 + 0; |
| 100771 | indices[index++] = _j2 * 2 + 1; |
| 100772 | indices[index++] = _j2 * 2 + 1; |
| 100773 | indices[index++] = _j2 * 2 + 3; |
| 100774 | } |
| 100775 | return { |
| 100776 | indices: indices, |
| 100777 | attributes: { |
| 100778 | POSITION: { |
| 100779 | size: 3, |
| 100780 | value: positions |
| 100781 | }, |
| 100782 | NORMAL: { |
| 100783 | size: 3, |
| 100784 | value: normals |
| 100785 | } |
| 100786 | } |
no test coverage detected