lathe
Version:
A discrete solid modeller using BSPs
63 lines (41 loc) • 1.95 kB
JavaScript
define(['lib/plane2d', 'lib/vertex2d'], function(Plane2D, Vertex3D) {
describe('2D Vertex', function() {
it('can be created', function() {
new Vertex3D(new Plane2D(1,0,0), new Plane2D(0,1,0));
assert.throws(function() {
new Vertex3D(1,2);
}, Error, 'invalid vertex construction: 1,2');
assert.throws(function() {
new Vertex3D(new Plane2D(1,0,0), new Plane2D(1,0,0));
}, Error, 'invalid vertex');
});
it('can be in front, behind, or on a plane', function() {
var vertex00 = new Vertex3D(new Plane2D(1,0,0), new Plane2D(0,1,0));
var vertex11 = new Vertex3D(new Plane2D(1,0,1), new Plane2D(0,1,1));
assert.equal(vertex00.orientationToPlane(new Plane2D(1,1,1)), '-');
assert.equal(vertex00.orientationToPlane(new Plane2D(-1,-1,-1)), '+');
assert.equal(vertex00.orientationToPlane(new Plane2D(-1,-1,1)), '-');
assert.equal(vertex00.orientationToPlane(new Plane2D(1,1,-1)), '+');
assert.equal(vertex11.orientationToPlane(new Plane2D(0,1,1)), '0');
assert.equal(vertex11.orientationToPlane(new Plane2D(1,0,1)), '0');
assert.equal(vertex11.orientationToPlane(new Plane2D(1,1,2)), '0');
});
it('can generate coordinates', function() {
assert.deepEqual(
new Vertex3D(new Plane2D(1,0,1), new Plane2D(0,1,1)).toCoordinate(),
{x:1, y:1});
assert.deepEqual(
new Vertex3D(new Plane2D(-1,0,2), new Plane2D(0,1,1)).toCoordinate(),
{x:-2, y:1});
assert.deepEqual(
new Vertex3D(new Plane2D(0,1,0.5), new Plane2D(1,0,0.5)).toCoordinate(),
{x:0.5, y:0.5});
assert.deepEqual(
new Vertex3D(new Plane2D(2,3,9), new Plane2D(-1, 1, -2)).toCoordinate(),
{x:3, y:1});
assert.deepEqual(
new Vertex3D(new Plane2D(1,2,4), new Plane2D(3, -5, 1)).toCoordinate(),
{x:2, y:0.9999999999999999});
});
});
});