import { Cartesian3 } from "../../Source/Cesium.js";
|
import { FrustumOutlineGeometry } from "../../Source/Cesium.js";
|
import { Math as CesiumMath } from "../../Source/Cesium.js";
|
import { PerspectiveFrustum } from "../../Source/Cesium.js";
|
import { Quaternion } from "../../Source/Cesium.js";
|
import { VertexFormat } from "../../Source/Cesium.js";
|
import createPackableSpecs from "../createPackableSpecs.js";
|
|
describe("Core/FrustumOutlineGeometry", function () {
|
it("constructor throws without options", function () {
|
expect(function () {
|
return new FrustumOutlineGeometry();
|
}).toThrowDeveloperError();
|
});
|
|
it("constructor throws without frustum", function () {
|
expect(function () {
|
return new FrustumOutlineGeometry({
|
origin: Cartesian3.ZERO,
|
orientation: Quaternion.IDENTITY,
|
});
|
}).toThrowDeveloperError();
|
});
|
|
it("constructor throws without position", function () {
|
expect(function () {
|
return new FrustumOutlineGeometry({
|
frustum: new PerspectiveFrustum(),
|
orientation: Quaternion.IDENTITY,
|
});
|
}).toThrowDeveloperError();
|
});
|
|
it("constructor throws without orientation", function () {
|
expect(function () {
|
return new FrustumOutlineGeometry({
|
frustum: new PerspectiveFrustum(),
|
origin: Cartesian3.ZERO,
|
});
|
}).toThrowDeveloperError();
|
});
|
|
it("constructor computes all vertex attributes", function () {
|
var frustum = new PerspectiveFrustum();
|
frustum.fov = CesiumMath.toRadians(30.0);
|
frustum.aspectRatio = 1920.0 / 1080.0;
|
frustum.near = 1.0;
|
frustum.far = 3.0;
|
|
var m = FrustumOutlineGeometry.createGeometry(
|
new FrustumOutlineGeometry({
|
frustum: frustum,
|
origin: Cartesian3.ZERO,
|
orientation: Quaternion.IDENTITY,
|
})
|
);
|
|
var numVertices = 8;
|
var numLines = 12;
|
expect(m.attributes.position.values.length).toEqual(numVertices * 3);
|
expect(m.indices.length).toEqual(numLines * 2);
|
|
expect(m.boundingSphere.center).toEqual(new Cartesian3(0.0, 0.0, 2.0));
|
expect(m.boundingSphere.radius).toBeGreaterThan(1.0);
|
expect(m.boundingSphere.radius).toBeLessThan(2.0);
|
});
|
|
var packableFrustum = new PerspectiveFrustum();
|
packableFrustum.fov = 1.0;
|
packableFrustum.aspectRatio = 2.0;
|
packableFrustum.near = 3.0;
|
packableFrustum.far = 4.0;
|
|
createPackableSpecs(
|
FrustumOutlineGeometry,
|
new FrustumOutlineGeometry({
|
frustum: packableFrustum,
|
origin: Cartesian3.ZERO,
|
orientation: Quaternion.IDENTITY,
|
vertexFormat: VertexFormat.POSITION_ONLY,
|
}),
|
[0.0, 1.0, 2.0, 3.0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0]
|
);
|
});
|