extrude
Version:
turn a 2d shape into a 3d mesh with extrusion
99 lines (92 loc) • 2.04 kB
JavaScript
var test = require('tape')
var allclose = require('test-allclose')
var extrude = require('./index.js')
test('cube: cells', function (t) {
var opts = {top: 1, bottom: -1, closed: true}
var complex = extrude([[-1, -1], [1, -1], [1, 1], [-1, 1]], opts)
var truth = [
[4, 5, 0],
[1, 0, 5],
[5, 6, 1],
[2, 1, 6],
[6, 7, 2],
[3, 2, 7],
[7, 4, 3],
[0, 3, 4],
[3, 0, 1],
[3, 1, 2],
[7, 5, 4],
[7, 6, 5]
]
allclose(t)(complex.cells, truth)
t.end()
})
test('cube: cells (open)', function (t) {
var opts = {top: 1, bottom: -1, closed: false}
var complex = extrude([[-1, -1], [1, -1], [1, 1], [-1, 1]], opts)
var truth = [
[4, 5, 0],
[1, 0, 5],
[5, 6, 1],
[2, 1, 6],
[6, 7, 2],
[3, 2, 7],
[7, 4, 3],
[0, 3, 4]
]
allclose(t)(complex.cells, truth)
t.end()
})
test('cube: positions', function (t) {
var opts = {top: 1, bottom: -1}
var complex = extrude([[-1, -1], [1, -1], [1, 1], [-1, 1]], opts)
var truth = [
[-1, -1, 1],
[1, -1, 1],
[1, 1, 1],
[-1, 1, 1],
[-1, -1, -1],
[1, -1, -1],
[1, 1, -1],
[-1, 1, -1]
]
allclose(t)(complex.positions, truth)
t.end()
})
test('cube: positions (defaults)', function (t) {
var complex = extrude([[-1, -1], [1, -1], [1, 1], [-1, 1]])
var truth = [
[-1, -1, 1],
[1, -1, 1],
[1, 1, 1],
[-1, 1, 1],
[-1, -1, 0],
[1, -1, 0],
[1, 1, 0],
[-1, 1, 0]
]
allclose(t)(complex.positions, truth)
t.end()
})
test('cube: positions (flat)', function (t) {
var opts = {top: 0, bottom: 0}
var complex = extrude([[-1, -1], [1, -1], [1, 1], [-1, 1]], opts)
var truth = [
[-1, -1, 0],
[1, -1, 0],
[1, 1, 0],
[-1, 1, 0]
]
allclose(t)(complex.positions, truth)
t.end()
})
test('cube: cells (flat)', function (t) {
var opts = {top: 0, bottom: 0}
var complex = extrude([[-1, -1], [1, -1], [1, 1], [-1, 1]], opts)
var truth = [
[3, 0, 1],
[3, 1, 2]
]
allclose(t)(complex.cells, truth)
t.end()
})