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
| const viewer = new Cesium.Viewer("cesiumContainer");
function computeCircle(radius) { const positions = []; for (let i = 0; i < 360; i++) { const radians = Cesium.Math.toRadians(i); positions.push( new Cesium.Cartesian2( radius * Math.cos(radians), radius * Math.sin(radians), ), ); } return positions; }
function computeStar(arms, rOuter, rInner) { const angle = Math.PI / arms; const length = 2 * arms; const positions = new Array(length); for (let i = 0; i < length; i++) { const r = i % 2 === 0 ? rOuter : rInner; positions[i] = new Cesium.Cartesian2( Math.cos(i * angle) * r, Math.sin(i * angle) * r, ); } return positions; }
const redTube = viewer.entities.add({ name: "带圆角的红色管道", polylineVolume: { positions: Cesium.Cartesian3.fromDegreesArray([ -85.0, 32.0, -85.0, 36.0, -89.0, 36.0, ]), shape: computeCircle(60000.0), material: Cesium.Color.RED, }, });
const greenBox = viewer.entities.add({ name: "带有斜切角和轮廓的绿色方框(管道)", polylineVolume: { positions: Cesium.Cartesian3.fromDegreesArrayHeights([ -90.0, 32.0, 0.0, -90.0, 36.0, 100000.0, -94.0, 36.0, 0.0, ]), shape: [ new Cesium.Cartesian2(-50000, -50000), new Cesium.Cartesian2(50000, -50000), new Cesium.Cartesian2(50000, 50000), new Cesium.Cartesian2(-50000, 50000), ], cornerType: Cesium.CornerType.BEVELED, material: Cesium.Color.GREEN.withAlpha(0.5), outline: true, outlineColor: Cesium.Color.BLACK, }, });
const blueStar = viewer.entities.add({ name: "带有斜接角(mitered corners)和轮廓的蓝色星形(管道)", polylineVolume: { positions: Cesium.Cartesian3.fromDegreesArrayHeights([ -95.0, 32.0, 0.0, -95.0, 36.0, 100000.0, -99.0, 36.0, 200000.0, ]), shape: computeStar(7, 70000, 50000), cornerType: Cesium.CornerType.MITERED, material: Cesium.Color.BLUE, }, });
viewer.zoomTo(viewer.entities);
|