DSDSWeb/static/js/Cesium-1.53/Specs/Core/GeometrySpec.js

156 lines
5.5 KiB
JavaScript
Raw Normal View History

2024-07-11 18:02:47 +08:00
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);
});
});