You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
156 lines
4.9 KiB
JavaScript
156 lines
4.9 KiB
JavaScript
import { BoundingSphere } from "../../Source/Cesium.js";
|
|
import { Cartesian3 } from "../../Source/Cesium.js";
|
|
import { ComponentDatatype } from "../../Source/Cesium.js";
|
|
import { Ellipsoid } from "../../Source/Cesium.js";
|
|
import { Geometry } from "../../Source/Cesium.js";
|
|
import { GeometryAttribute } from "../../Source/Cesium.js";
|
|
import { GeometryType } from "../../Source/Cesium.js";
|
|
import { Math as CesiumMath } from "../../Source/Cesium.js";
|
|
import { PrimitiveType } from "../../Source/Cesium.js";
|
|
import { Rectangle } from "../../Source/Cesium.js";
|
|
|
|
describe("Core/Geometry", function () {
|
|
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
|
|
);
|
|
});
|
|
});
|