26 lines
11 KiB
JavaScript
26 lines
11 KiB
JavaScript
|
/**
|
||
|
* @license
|
||
|
* Cesium - https://github.com/CesiumGS/cesium
|
||
|
* Version 1.98
|
||
|
*
|
||
|
* Copyright 2011-2022 Cesium Contributors
|
||
|
*
|
||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
* you may not use this file except in compliance with the License.
|
||
|
* You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
* See the License for the specific language governing permissions and
|
||
|
* limitations under the License.
|
||
|
*
|
||
|
* Columbus View (Pat. Pend.)
|
||
|
*
|
||
|
* Portions licensed separately.
|
||
|
* See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details.
|
||
|
*/
|
||
|
define(["exports","./Transforms-c9e418cb","./Matrix2-cf4c6e69","./defaultValue-50f7432c","./AttributeCompression-b4dfdf5f","./ComponentDatatype-9b23164a"],(function(t,e,i,o,a,r){"use strict";function n(t,e){this._ellipsoid=t,this._cameraPosition=new i.Cartesian3,this._cameraPositionInScaledSpace=new i.Cartesian3,this._distanceToLimbInScaledSpaceSquared=0,o.defined(e)&&(this.cameraPosition=e)}Object.defineProperties(n.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},cameraPosition:{get:function(){return this._cameraPosition},set:function(t){const e=this._ellipsoid.transformPositionToScaledSpace(t,this._cameraPositionInScaledSpace),o=i.Cartesian3.magnitudeSquared(e)-1;i.Cartesian3.clone(t,this._cameraPosition),this._cameraPositionInScaledSpace=e,this._distanceToLimbInScaledSpaceSquared=o}}});const s=new i.Cartesian3;n.prototype.isPointVisible=function(t){return x(this._ellipsoid.transformPositionToScaledSpace(t,s),this._cameraPositionInScaledSpace,this._distanceToLimbInScaledSpaceSquared)},n.prototype.isScaledSpacePointVisible=function(t){return x(t,this._cameraPositionInScaledSpace,this._distanceToLimbInScaledSpaceSquared)};const c=new i.Cartesian3;n.prototype.isScaledSpacePointVisiblePossiblyUnderEllipsoid=function(t,e){const i=this._ellipsoid;let a,r;return o.defined(e)&&e<0&&i.minimumRadius>-e?(r=c,r.x=this._cameraPosition.x/(i.radii.x+e),r.y=this._cameraPosition.y/(i.radii.y+e),r.z=this._cameraPosition.z/(i.radii.z+e),a=r.x*r.x+r.y*r.y+r.z*r.z-1):(r=this._cameraPositionInScaledSpace,a=this._distanceToLimbInScaledSpaceSquared),x(t,r,a)},n.prototype.computeHorizonCullingPoint=function(t,e,i){return h(this._ellipsoid,t,e,i)};const u=i.Ellipsoid.clone(i.Ellipsoid.UNIT_SPHERE);n.prototype.computeHorizonCullingPointPossiblyUnderEllipsoid=function(t,e,i,o){return h(m(this._ellipsoid,i,u),t,e,o)},n.prototype.computeHorizonCullingPointFromVertices=function(t,e,i,o,a){return p(this._ellipsoid,t,e,i,o,a)},n.prototype.computeHorizonCullingPointFromVerticesPossiblyUnderEllipsoid=function(t,e,i,o,a,r){return p(m(this._ellipsoid,a,u),t,e,i,o,r)};const d=[];n.prototype.computeHorizonCullingPointFromRectangle=function(t,o,a){const r=i.Rectangle.subsample(t,o,0,d),n=e.BoundingSphere.fromPoints(r);if(!(i.Cartesian3.magnitude(n.center)<.1*o.minimumRadius))return this.computeHorizonCullingPoint(n.center,r,a)};const l=new i.Cartesian3;function m(t,e,a){if(o.defined(e)&&e<0&&t.minimumRadius>-e){const o=i.Cartesian3.fromElements(t.radii.x+e,t.radii.y+e,t.radii.z+e,l);t=i.Ellipsoid.fromCartesian3(o,a)}return t}function h(t,e,a,r){o.defined(r)||(r=new i.Cartesian3);const n=M(t,e);let s=0;for(let e=0,i=a.length;e<i;++e){const i=g(t,a[e],n);if(i<0)return;s=Math.max(s,i)}return y(n,s,r)}const f=new i.Cartesian3;function p(t,e,a,r,n,s){o.defined(s)||(s=new i.Cartesian3),r=o.defaultValue(r,3),n=o.defaultValue(n,i.Cartesian3.ZERO);const c=M(t,e);let u=0;for(let e=0,i=a.length;e<i;e+=r){f.x=a[e]+n.x,f.y=a[e+1]+n.y,f.z=a[e+2]+n.z;const i=g(t,f,c);if(i<0)return;u=Math.max(u,i)}return y(c,u,s)}function x(t,e,o){const a=e,r=o,n=i.Cartesian3.subtract(t,a,s),c=-i.Cartesian3.dot(n,a);return!(r<0?c>0:c>r&&c*c/i.Cartesian3.magnitudeSquared(n)>r)}const S=new i.Cartesian3,C=new i.Cartesian3;function g(t,e,o){const a=t.transformPositionToScaledSpace(e,S);let r=i.Cartesian3.magnitudeSquared(a),n=Math.sqrt(r);const s=i.Cartesian3.divideByScalar(a,n,C);r=Math.max(1,r),n=Math.max(1,n);const c=1/n;return 1/(i.Cartesian3.dot(s,o)*c-i.Cartesian3.magnitude(i.Cartesian3.cross(s,o,s))*(Math.sqrt(r-1)*c))}function y(t,e,o){if(!(e<=0||e===1/0||e!=e))return i.Cartesian3.multiplyByScalar(t,e,o)}const N=new i.Cartesian3;function M(t,e){return i.Cartesian3.equals(e,i.Cartesian3.ZERO)?e:(t.transformPositionToScaledSpace(e,N),i.Cartesian3.normalize(N,N))}const T={getHeight:function(t,e,i){return(t-i)*e+i}},b=new i.Cartesian3;T.getPosition=function(t,e,o,a,r){const n=e.cartesianToCartographic(t,b),s=T.getHeight(n.height,o,a);return i.Cartesian3.fromRadians(n.longitude,n.latitude,s,e,r)};var P=T;var z=Object.freeze({NONE:0,BITS12:1});const _=new i.Cartesian3,E=new i.C
|