156 lines
5.5 KiB
JavaScript
156 lines
5.5 KiB
JavaScript
|
|
defineSuite([
|
||
|
|
'Core/Geometry',
|
||
|
|
'Core/BoundingSphere',
|
||
|
|
'Core/Cartesian3',
|
||
|
|
'Core/Math',
|
||
|
|
'Core/ComponentDatatype',
|
||
|
|
'Core/Ellipsoid',
|
||
|
|
'Core/GeometryAttribute',
|
||
|
|
'Core/GeometryType',
|
||
|
|
'Core/PrimitiveType',
|
||
|
|
'Core/Rectangle'
|
||
|
|
], function(
|
||
|
|
Geometry,
|
||
|
|
BoundingSphere,
|
||
|
|
Cartesian3,
|
||
|
|
CesiumMath,
|
||
|
|
ComponentDatatype,
|
||
|
|
Ellipsoid,
|
||
|
|
GeometryAttribute,
|
||
|
|
GeometryType,
|
||
|
|
PrimitiveType,
|
||
|
|
Rectangle) {
|
||
|
|
'use strict';
|
||
|
|
|
||
|
|
it('constructor', function() {
|
||
|
|
var attributes = {
|
||
|
|
position : new GeometryAttribute({
|
||
|
|
componentDatatype : ComponentDatatype.DOUBLE,
|
||
|
|
componentsPerAttribute : 3,
|
||
|
|
values : new Float64Array([
|
||
|
|
0.0, 0.0, 0.0,
|
||
|
|
1.0, 0.0, 0.0,
|
||
|
|
0.0, 1.0, 0.0
|
||
|
|
])
|
||
|
|
})
|
||
|
|
};
|
||
|
|
var indices = new Uint16Array([0, 1, 2]);
|
||
|
|
var boundingSphere = new BoundingSphere(new Cartesian3(0.5, 0.5, 0.0), 1.0);
|
||
|
|
|
||
|
|
var geometry = new Geometry({
|
||
|
|
attributes : attributes,
|
||
|
|
indices : indices,
|
||
|
|
primitiveType : PrimitiveType.TRIANGLES,
|
||
|
|
boundingSphere : boundingSphere,
|
||
|
|
geometryType : GeometryType.TRIANGLES
|
||
|
|
});
|
||
|
|
|
||
|
|
expect(geometry.attributes).toBe(attributes);
|
||
|
|
expect(geometry.indices).toBe(indices);
|
||
|
|
expect(geometry.primitiveType).toEqual(PrimitiveType.TRIANGLES);
|
||
|
|
expect(geometry.boundingSphere).toBe(boundingSphere);
|
||
|
|
expect(geometry.geometryType).toEqual(GeometryType.TRIANGLES);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('constructor throws without attributes', function() {
|
||
|
|
expect(function() {
|
||
|
|
return new Geometry({
|
||
|
|
primitiveType : PrimitiveType.TRIANGLES
|
||
|
|
});
|
||
|
|
}).toThrowDeveloperError();
|
||
|
|
});
|
||
|
|
|
||
|
|
it('computeNumberOfVertices', function() {
|
||
|
|
var attributes = {
|
||
|
|
position : new GeometryAttribute({
|
||
|
|
componentDatatype : ComponentDatatype.DOUBLE,
|
||
|
|
componentsPerAttribute : 3,
|
||
|
|
values : new Float64Array([
|
||
|
|
0.0, 0.0, 0.0,
|
||
|
|
1.0, 0.0, 0.0,
|
||
|
|
0.0, 1.0, 0.0
|
||
|
|
])
|
||
|
|
}),
|
||
|
|
st : new GeometryAttribute({
|
||
|
|
componentDatatype : ComponentDatatype.FLOAT,
|
||
|
|
componentsPerAttribute : 2,
|
||
|
|
values : new Float32Array([
|
||
|
|
0.0, 0.0,
|
||
|
|
1.0, 0.0,
|
||
|
|
0.0, 1.0
|
||
|
|
])
|
||
|
|
})
|
||
|
|
};
|
||
|
|
var indices = new Uint16Array([0, 1, 2]);
|
||
|
|
var boundingSphere = new BoundingSphere(new Cartesian3(0.5, 0.5, 0.0), 1.0);
|
||
|
|
|
||
|
|
var geometry = new Geometry({
|
||
|
|
attributes : attributes,
|
||
|
|
indices : indices,
|
||
|
|
primitiveType : PrimitiveType.TRIANGLES,
|
||
|
|
boundingSphere : boundingSphere
|
||
|
|
});
|
||
|
|
|
||
|
|
expect(Geometry.computeNumberOfVertices(geometry)).toEqual(3);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('computeNumberOfVertices throws when attributes have different number of vertices', function() {
|
||
|
|
var attributes = {
|
||
|
|
position : new GeometryAttribute({
|
||
|
|
componentDatatype : ComponentDatatype.DOUBLE,
|
||
|
|
componentsPerAttribute : 3,
|
||
|
|
values : new Float64Array([
|
||
|
|
0.0, 0.0, 0.0,
|
||
|
|
1.0, 0.0, 0.0,
|
||
|
|
0.0, 1.0, 0.0
|
||
|
|
])
|
||
|
|
}),
|
||
|
|
st : new GeometryAttribute({
|
||
|
|
componentDatatype : ComponentDatatype.FLOAT,
|
||
|
|
componentsPerAttribute : 2,
|
||
|
|
values : new Float32Array([
|
||
|
|
0.0, 0.0,
|
||
|
|
1.0, 0.0
|
||
|
|
])
|
||
|
|
})
|
||
|
|
};
|
||
|
|
var indices = new Uint16Array([0, 1, 2]);
|
||
|
|
var boundingSphere = new BoundingSphere(new Cartesian3(0.5, 0.5, 0.0), 1.0);
|
||
|
|
|
||
|
|
var geometry = new Geometry({
|
||
|
|
attributes : attributes,
|
||
|
|
indices : indices,
|
||
|
|
primitiveType : PrimitiveType.TRIANGLES,
|
||
|
|
boundingSphere : boundingSphere
|
||
|
|
});
|
||
|
|
|
||
|
|
expect(function() {
|
||
|
|
Geometry.computeNumberOfVertices(geometry);
|
||
|
|
}).toThrowDeveloperError();
|
||
|
|
});
|
||
|
|
|
||
|
|
it('computeNumberOfVertices throws without geometry', function() {
|
||
|
|
expect(function() {
|
||
|
|
Geometry.computeNumberOfVertices();
|
||
|
|
}).toThrowDeveloperError();
|
||
|
|
});
|
||
|
|
|
||
|
|
it('computes textureCoordinateRotationPoints for collections of points', function() {
|
||
|
|
var positions = Cartesian3.fromDegreesArrayHeights([
|
||
|
|
-10.0, -10.0, 0,
|
||
|
|
-10.0, 10.0, 0,
|
||
|
|
10.0, -10.0, 0,
|
||
|
|
10.0, 10.0, 0
|
||
|
|
]);
|
||
|
|
var boundingRectangle = Rectangle.fromCartesianArray(positions);
|
||
|
|
var textureCoordinateRotationPoints = Geometry._textureCoordinateRotationPoints(positions, 0.0, Ellipsoid.WGS84, boundingRectangle);
|
||
|
|
expect(textureCoordinateRotationPoints.length).toEqual(6);
|
||
|
|
expect(textureCoordinateRotationPoints[0]).toEqualEpsilon(0, CesiumMath.EPSILON7);
|
||
|
|
expect(textureCoordinateRotationPoints[1]).toEqualEpsilon(0, CesiumMath.EPSILON7);
|
||
|
|
expect(textureCoordinateRotationPoints[2]).toEqualEpsilon(0, CesiumMath.EPSILON7);
|
||
|
|
expect(textureCoordinateRotationPoints[3]).toEqualEpsilon(1, CesiumMath.EPSILON7);
|
||
|
|
expect(textureCoordinateRotationPoints[4]).toEqualEpsilon(1, CesiumMath.EPSILON7);
|
||
|
|
expect(textureCoordinateRotationPoints[5]).toEqualEpsilon(0, CesiumMath.EPSILON7);
|
||
|
|
});
|
||
|
|
});
|