Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Frustum geometry #5649

Merged
merged 12 commits into from
Jul 19, 2017
102 changes: 102 additions & 0 deletions Apps/Sandcastle/gallery/development/Frustum.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
<meta name="description" content="Draw a frustum.">
<meta name="cesium-sandcastle-labels" content="Development">
<title>Cesium Demo</title>
<script type="text/javascript" src="../Sandcastle-header.js"></script>
<script type="text/javascript" src="../../../ThirdParty/requirejs-2.1.20/require.js"></script>
<script type="text/javascript">
require.config({
baseUrl : '../../../Source',
waitSeconds : 60
});
</script>
</head>
<body class="sandcastle-loading" data-sandcastle-bucket="bucket-requirejs.html">
<style>
@import url(../templates/bucket.css);
</style>
<div id="cesiumContainer" class="fullSize"></div>
<div id="loadingOverlay"><h1>Loading...</h1></div>
<div id="toolbar"></div>
<script id="cesium_sandcastle_script">
function startup(Cesium) {
'use strict';
//Sandcastle_Begin
// Create the viewer.
var viewer = new Cesium.Viewer('cesiumContainer');
var scene = viewer.scene;


var positionOnEllipsoid = Cesium.Cartesian3.fromDegrees(-105.0, 45.0, 20.0);

var enu = Cesium.Transforms.eastNorthUpToFixedFrame(positionOnEllipsoid);
var rotation = Cesium.Matrix4.getRotation(enu, new Cesium.Matrix3());
Cesium.Matrix3.multiply(rotation, Cesium.Matrix3.fromRotationX(-Cesium.Math.PI_OVER_TWO), rotation);
var orientation = Cesium.Quaternion.fromRotationMatrix(rotation);

var frustum = new Cesium.PerspectiveFrustum({
fov : Cesium.Math.toRadians(60.0),
aspectRatio : scene.canvas.clientWidth / scene.canvas.clientHeight,
near : 10.0,
far : 50.0
});

var frustumGeometry = new Cesium.FrustumGeometry({
frustum : frustum,
origin : positionOnEllipsoid,
orientation : orientation,
vertexFormat : Cesium.VertexFormat.POSITION_ONLY
});

var frustumGeometryInstance = new Cesium.GeometryInstance({
geometry : frustumGeometry,
attributes : {
color : Cesium.ColorGeometryInstanceAttribute.fromColor(new Cesium.Color(1.0, 0.0, 0.0, 0.5))
},
id : 'frustum'
});

var frustumPrimitive = scene.primitives.add(new Cesium.Primitive({
geometryInstances : frustumGeometryInstance,
appearance : new Cesium.PerInstanceColorAppearance({
closed: true,
flat : true
})
}));
scene.primitives.add(new Cesium.Primitive({
geometryInstances : new Cesium.GeometryInstance({
geometry : new Cesium.FrustumOutlineGeometry({
frustum : frustum,
origin : positionOnEllipsoid,
orientation : orientation
}),
attributes : {
color : Cesium.ColorGeometryInstanceAttribute.fromColor(new Cesium.Color(0.0, 0.0, 0.0, 1.0))
}
}),
appearance : new Cesium.PerInstanceColorAppearance({
flat : true
})
}));

frustumPrimitive.readyPromise.then(function(primitive) {
var bs = primitive.getGeometryInstanceAttributes('frustum').boundingSphere;
scene.camera.viewBoundingSphere(bs);
scene.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);
});
//Sandcastle_End
Sandcastle.finishedLoading();
}
if (typeof Cesium !== "undefined") {
startup(Cesium);
} else if (typeof require === "function") {
require(["Cesium"], startup);
}
</script>
</body>
</html>
2 changes: 2 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ Change Log
* Fixed crash when using the `Cesium3DTilesInspectorViewModel` and removing a tileset [#5607](https://github.com/AnalyticalGraphicsInc/cesium/issues/5607)
* Fixed polygon outline in Polygon Sandcastle demo [#5642](https://github.com/AnalyticalGraphicsInc/cesium/issues/5642)
* Fixed label positioning when using `HeightReference.CLAMP_TO_GROUND` and no position [#5648](https://github.com/AnalyticalGraphicsInc/cesium/pull/5648)
* Added `FrustumGeometry` and `FrustumOutlineGeometry`. [#5649](https://github.com/AnalyticalGraphicsInc/cesium/pull/5649)
* Added an `options` parameter to the constructors of `PerspectiveFrustum`, `PerspectiveOffCenterFrustum`, `OrthographicFrustum`, and `OrthographicOffCenterFrustum` to set properties. [#5649](https://github.com/AnalyticalGraphicsInc/cesium/pull/5649)

### 1.35.2 - 2017-07-11

Expand Down
Loading