Use cuboid generator in tests.

This commit is contained in:
Viktor Kovacs 2021-05-24 13:15:33 +02:00
parent 0394d60581
commit 38cde4b11f
5 changed files with 51 additions and 43 deletions

View File

@ -5,6 +5,24 @@ OV.GeneratorParams = class
this.material = null;
this.transformation = null;
}
SetMaterial (material)
{
this.material = material;
return this;
}
SetTransformation (translation, rotation, scale)
{
const matrix = new OV.Matrix ().ComposeTRS (translation, rotation, scale);
return this.SetTransformationMatrix (matrix);
}
SetTransformationMatrix (matrix)
{
this.transformation = new OV.Transformation (matrix);
return this;
}
};
OV.Generator = class

View File

@ -1,9 +1,31 @@
var assert = require ('assert');
describe ('Generator', function () {
it ('Cuboid', function () {
it ('Cuboid with Default Parameters', function () {
const cuboid = OV.GenerateCuboid (null, 1.0, 1.0, 1.0);
assert (OV.IsSolid (cuboid));
assert (OV.IsEqual (OV.CalculateVolume (cuboid), 1.0));
});
it ('Cuboid with Material', function () {
const params = new OV.GeneratorParams ().SetMaterial (1);
const cuboid = OV.GenerateCuboid (params, 1.0, 1.0, 1.0);
for (let i = 0; i < cuboid.TriangleCount (); i++) {
const triangle = cuboid.GetTriangle (i);
assert.strictEqual (triangle.mat, 1);
}
});
it ('Cuboid with Transformation', function () {
const params = new OV.GeneratorParams ().SetTransformation (
new OV.Coord3D (1.0, 0.0, 0.0),
new OV.Quaternion (0.0, 0.0, 0.0, 1.0),
new OV.Coord3D (1.0, 1.0, 1.0)
);
const cuboid = OV.GenerateCuboid (params, 1.0, 1.0, 1.0);
const bounds = OV.GetBoundingBox (cuboid);
assert (OV.CoordIsEqual3D (bounds.min, new OV.Coord3D (1.0, 0.0, 0.0)));
assert (OV.CoordIsEqual3D (bounds.max, new OV.Coord3D (2.0, 1.0, 1.0)));
});
});

View File

@ -80,7 +80,7 @@ describe ('Model Utils', function () {
});
it ('Mesh Bounding Box', function () {
var cube = testUtils.GetCubeMesh ();
var cube = OV.GenerateCuboid (null, 1.0, 1.0, 1.0);
let cubeBounds = OV.GetBoundingBox (cube);
assert (OV.CoordIsEqual3D (cubeBounds.min, new OV.Coord3D (0.0, 0.0, 0.0)));
assert (OV.CoordIsEqual3D (cubeBounds.max, new OV.Coord3D (1.0, 1.0, 1.0)));
@ -132,7 +132,7 @@ describe ('Model Utils', function () {
});
it ('Cube Topology Calculation', function () {
let cube = testUtils.GetModelWithOneMesh (testUtils.GetCubeMesh ());
let cube = testUtils.GetModelWithOneMesh (OV.GenerateCuboid (null, 1.0, 1.0, 1.0));
assert (OV.IsSolid (cube));
let topology = OV.GetTopology (cube);

View File

@ -3,7 +3,7 @@ var testUtils = require ('../utils/testutils.js');
describe ('Quantities', function () {
it ('Cube Volume Calculation', function () {
const mesh = testUtils.GetCubeMesh ();
const mesh = OV.GenerateCuboid (null, 1.0, 1.0, 1.0);
const model = testUtils.GetModelWithOneMesh (mesh);
assert (OV.IsEqual (OV.CalculateVolume (mesh), 1.0));
assert (OV.IsEqual (OV.CalculateVolume (model), 1.0));
@ -58,7 +58,7 @@ describe ('Quantities', function () {
});
it ('Cube Surface Area Calculation', function () {
const mesh = testUtils.GetCubeMesh ();
const mesh = OV.GenerateCuboid (null, 1.0, 1.0, 1.0);
const model = testUtils.GetModelWithOneMesh (mesh);
assert (OV.IsEqual (OV.CalculateSurfaceArea (mesh), 6.0));
assert (OV.IsEqual (OV.CalculateSurfaceArea (model), 6.0));

View File

@ -137,43 +137,15 @@ module.exports =
return obj;
},
GetCubeMesh ()
{
var cube = new OV.Mesh ();
cube.AddVertex (new OV.Coord3D (0.0, 0.0, 0.0));
cube.AddVertex (new OV.Coord3D (1.0, 0.0, 0.0));
cube.AddVertex (new OV.Coord3D (1.0, 1.0, 0.0));
cube.AddVertex (new OV.Coord3D (0.0, 1.0, 0.0));
cube.AddVertex (new OV.Coord3D (0.0, 0.0, 1.0));
cube.AddVertex (new OV.Coord3D (1.0, 0.0, 1.0));
cube.AddVertex (new OV.Coord3D (1.0, 1.0, 1.0));
cube.AddVertex (new OV.Coord3D (0.0, 1.0, 1.0));
cube.AddTriangle (new OV.Triangle (0, 1, 5));
cube.AddTriangle (new OV.Triangle (0, 5, 4));
cube.AddTriangle (new OV.Triangle (1, 2, 6));
cube.AddTriangle (new OV.Triangle (1, 6, 5));
cube.AddTriangle (new OV.Triangle (2, 3, 7));
cube.AddTriangle (new OV.Triangle (2, 7, 6));
cube.AddTriangle (new OV.Triangle (3, 0, 4));
cube.AddTriangle (new OV.Triangle (3, 4, 7));
cube.AddTriangle (new OV.Triangle (0, 3, 2));
cube.AddTriangle (new OV.Triangle (0, 2, 1));
cube.AddTriangle (new OV.Triangle (4, 5, 6));
cube.AddTriangle (new OV.Triangle (4, 6, 7));
return cube;
},
GetTwoCubesConnectingInOneVertexModel ()
{
let model = new OV.Model ();
let cube1 = this.GetCubeMesh ();
let cube1 = OV.GenerateCuboid (null, 1.0, 1.0, 1.0);
model.AddMesh (cube1);
let cube2 = this.GetCubeMesh ();
let matrix = new OV.Matrix ().CreateTranslation (1.0, 1.0, 1.0);
let transformation = new OV.Transformation (matrix);
OV.TransformMesh (cube2, transformation);
let cube2 = OV.GenerateCuboid (new OV.GeneratorParams ().SetTransformationMatrix (matrix), 1.0, 1.0, 1.0);
model.AddMesh (cube2);
OV.FinalizeModel (model, function () { new OV.Material () });
@ -184,13 +156,11 @@ module.exports =
{
let model = new OV.Model ();
let cube1 = this.GetCubeMesh ();
let cube1 = OV.GenerateCuboid (null, 1.0, 1.0, 1.0);
model.AddMesh (cube1);
let cube2 = this.GetCubeMesh ();
let matrix = new OV.Matrix ().CreateTranslation (1.0, 0.0, 1.0);
let transformation = new OV.Transformation (matrix);
OV.TransformMesh (cube2, transformation);
let cube2 = OV.GenerateCuboid (new OV.GeneratorParams ().SetTransformationMatrix (matrix), 1.0, 1.0, 1.0);
model.AddMesh (cube2);
OV.FinalizeModel (model, function () { new OV.Material () });
@ -202,13 +172,11 @@ module.exports =
{
let model = new OV.Model ();
let cube1 = this.GetCubeMesh ();
let cube1 = OV.GenerateCuboid (null, 1.0, 1.0, 1.0);
model.AddMesh (cube1);
let cube2 = this.GetCubeMesh ();
let matrix = new OV.Matrix ().CreateTranslation (1.0, 0.0, 0.0);
let transformation = new OV.Transformation (matrix);
OV.TransformMesh (cube2, transformation);
let cube2 = OV.GenerateCuboid (new OV.GeneratorParams ().SetTransformationMatrix (matrix), 1.0, 1.0, 1.0);
model.AddMesh (cube2);
OV.FinalizeModel (model, function () { new OV.Material () });