diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2019-01-27 19:38:08 +0100 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2019-01-27 19:39:13 +0100 |
| commit | 93a7fae69e5c3a45515a309cfcd96a0fa90a602b (patch) | |
| tree | 9b6accc61a20be6bf813e4ad367237d96f1c7176 /client/splash/face/geometry.js | |
| parent | 25b35038ae1f9cdfa222da44b7a4ddfd47713e3e (diff) | |
add mesh of your typical everyman
Diffstat (limited to 'client/splash/face/geometry.js')
| -rw-r--r-- | client/splash/face/geometry.js | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/client/splash/face/geometry.js b/client/splash/face/geometry.js new file mode 100644 index 00000000..a6a97946 --- /dev/null +++ b/client/splash/face/geometry.js @@ -0,0 +1,67 @@ + +import { Geometry } from 'three' + +export function getLineGeometry(points) { + return [ + points.slice(0, 17), + points.slice(17, 22), + points.slice(22, 27), + points.slice(27, 31), + points.slice(31, 36), + points.slice(36, 42), + points.slice(42, 48), + points.slice(48) + ].map((a, i) => { + const geometry = new Geometry() + a.forEach(p => geometry.vertices.push(p)) + if (i > 4) { + geometry.vertices.push(a[0]) + } + return geometry + }) +} + +export function updateLineGeometry(points, meshes) { + getLineGeometry(points).forEach((geometry, i) => { + const [line, mesh] = meshes[i] + line.setGeometry(geometry, () => 1.5) + mesh.geometry.vertices = line.geometry.vertices + mesh.geometry.verticesNeedUpdate = true + }) +} + +export function lerp(n, a, b) { + return (b - a) * n + a +} + +export function lerpPoint(n, A, B, C) { + C.x = lerp(n, A.x, B.x) + C.y = lerp(n, A.y, B.y) + C.z = lerp(n, A.z, B.z) +} + +export function lerpPoints(n, A, B, C) { + for (let i = 0, len = A.length; i < len; i++) { + lerpPoint(n, A[i], B[i], C[i]) + } +} + +export function updateCubeGeometry(points, cubes) { + cubes.forEach((cube, i) => { + const p = points[i] + cube.position.set(p.x, p.y, p.z) + }) +} + +export function getBounds(obj) { + return obj.reduce((a, p) => { + return [ + Math.min(a[0], p[0]), + Math.max(a[1], p[0]), + Math.min(a[2], p[1]), + Math.max(a[3], p[1]), + Math.min(a[4], p[2]), + Math.max(a[5], p[2]), + ] + }, [Infinity, -Infinity, Infinity, -Infinity, Infinity, -Infinity]) +} |
