forked from CesiumGS/cesium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPolylinePipelineSpec.js
111 lines (94 loc) · 3.81 KB
/
PolylinePipelineSpec.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
defineSuite([
'Core/PolylinePipeline',
'Core/Cartesian3',
'Core/Ellipsoid',
'Core/Math',
'Core/Transforms'
], function(
PolylinePipeline,
Cartesian3,
Ellipsoid,
CesiumMath,
Transforms) {
'use strict';
it('wrapLongitude', function() {
var positions = Cartesian3.fromDegreesArray([
-75.163789, 39.952335,
-80.2264393, 25.7889689
]);
var segments = PolylinePipeline.wrapLongitude(positions);
expect(segments.lengths.length).toEqual(1);
expect(segments.lengths[0]).toEqual(2);
});
it('wrapLongitude works with empty array', function() {
var segments = PolylinePipeline.wrapLongitude([]);
expect(segments.lengths.length).toEqual(0);
});
it('wrapLongitude breaks polyline into segments', function() {
var positions = Cartesian3.fromDegreesArray([
-179.0, 39.0,
2.0, 25.0
]);
var segments = PolylinePipeline.wrapLongitude(positions);
expect(segments.lengths.length).toEqual(2);
expect(segments.lengths[0]).toEqual(2);
expect(segments.lengths[1]).toEqual(2);
});
it('wrapLongitude breaks polyline into segments with model matrix', function() {
var center = Cartesian3.fromDegrees(-179.0, 39.0);
var matrix = Transforms.eastNorthUpToFixedFrame(center, Ellipsoid.WGS84);
var positions = [ new Cartesian3(0.0, 0.0, 0.0),
new Cartesian3(0.0, 100000000.0, 0.0)];
var segments = PolylinePipeline.wrapLongitude(positions, matrix);
expect(segments.lengths.length).toEqual(2);
expect(segments.lengths[0]).toEqual(2);
expect(segments.lengths[1]).toEqual(2);
});
it('generateArc throws without positions', function() {
expect(function() {
PolylinePipeline.generateArc();
}).toThrowDeveloperError();
});
it('generateArc accepts a height array for single value', function() {
var positions = [Cartesian3.fromDegrees(0, 0)];
var height = [30];
var newPositions = PolylinePipeline.generateArc({
positions: positions,
height: height
});
expect(newPositions.length).toEqual(3);
expect(Cartesian3.fromArray(newPositions, 0)).toEqualEpsilon(Cartesian3.fromDegrees(0, 0, 30), CesiumMath.EPSILON6);
});
it('generateArc subdivides in half', function() {
var p1 = Cartesian3.fromDegrees(0, 0);
var p2 = Cartesian3.fromDegrees(90, 0);
var p3 = Cartesian3.fromDegrees(45, 0);
var positions = [p1, p2];
var newPositions = PolylinePipeline.generateArc({
positions: positions,
granularity: CesiumMath.PI_OVER_TWO/2,
ellipsoid: Ellipsoid.WGS84
});
expect(newPositions.length).toEqual(3*3);
var p1n = Cartesian3.fromArray(newPositions, 0);
var p3n = Cartesian3.fromArray(newPositions, 3);
var p2n = Cartesian3.fromArray(newPositions, 6);
expect(Cartesian3.equalsEpsilon(p1, p1n, CesiumMath.EPSILON4)).toEqual(true);
expect(Cartesian3.equalsEpsilon(p2, p2n, CesiumMath.EPSILON4)).toEqual(true);
expect(Cartesian3.equalsEpsilon(p3, p3n, CesiumMath.EPSILON4)).toEqual(true);
});
it('generateArc works with empty array', function() {
var newPositions = PolylinePipeline.generateArc({
positions: []
});
expect(newPositions.length).toEqual(0);
});
it('generateArc works one position', function() {
var newPositions = PolylinePipeline.generateArc({
positions: [Cartesian3.UNIT_Z],
ellipsoid: Ellipsoid.UNIT_SPHERE
});
expect(newPositions.length).toEqual(3);
expect(newPositions).toEqual([0,0,1]);
});
});