UNPKG

wonder.js

Version:
46 lines (42 loc) 1.97 kB
'use strict'; var Caml_int32 = require("bs-platform/lib/js/caml_int32.js"); var ArrayService$Wonderjs = require("../../../atom/ArrayService.js"); function compute(radius, bands) { var vertices = /* array */[]; var normals = /* array */[]; var texCoords = /* array */[]; var indices = /* array */[]; for(var latNumber = 0; latNumber <= bands; ++latNumber){ var theta = latNumber * Math.PI / bands; var sinTheta = Math.sin(theta); var cosTheta = Math.cos(theta); for(var longNumber = 0; longNumber <= bands; ++longNumber){ var phi = longNumber * 2 * Math.PI / bands; var sinPhi = Math.sin(phi); var cosPhi = Math.cos(phi); var x = radius * cosPhi * sinTheta; var y = radius * cosTheta; var z = radius * sinPhi * sinTheta; var u = 1 - longNumber / bands; var v = 1 - latNumber / bands; ArrayService$Wonderjs.push(z, ArrayService$Wonderjs.push(y, ArrayService$Wonderjs.push(x, vertices))); ArrayService$Wonderjs.push(z, ArrayService$Wonderjs.push(y, ArrayService$Wonderjs.push(x, normals))); ArrayService$Wonderjs.push(v, ArrayService$Wonderjs.push(u, texCoords)); } } for(var latNumber$1 = 0 ,latNumber_finish = bands - 1 | 0; latNumber$1 <= latNumber_finish; ++latNumber$1){ for(var longNumber$1 = 0 ,longNumber_finish = bands - 1 | 0; longNumber$1 <= longNumber_finish; ++longNumber$1){ var first = Caml_int32.imul(latNumber$1, bands + 1 | 0) + longNumber$1 | 0; var second = (first + bands | 0) + 1 | 0; ArrayService$Wonderjs.push(second, ArrayService$Wonderjs.push(second + 1 | 0, ArrayService$Wonderjs.push(first + 1 | 0, ArrayService$Wonderjs.push(first, ArrayService$Wonderjs.push(second, ArrayService$Wonderjs.push(first + 1 | 0, indices)))))); } } return /* tuple */[ vertices, texCoords, normals, indices ]; } exports.compute = compute; /* ArrayService-Wonderjs Not a pure module */