/* * @Description : 地球 或者不同圆椭球体 * @Author : 赵耀圣 * @QQ : 549184003 * @Date : 2021-08-05 10:10:40 * @LastEditTime : 2021-08-05 10:54:14 * @FilePath : \cga.js\src-gis\scene\Globe.ts */ import { EllipsoidTerrainProvider } from "src-gis/core/EllipsoidTerrainProvider"; import { Cartographic } from "src-gis/math/Cartographic"; import { Ellipsoid } from "src-gis/math/ellipsoid"; import { GVec3 } from "src-gis/math/GVec3"; import { TerrainProvider } from "src-gis/provider/TerrainProvider"; import { Ray } from "src/struct/3d/Ray"; import { GlobeSurfaceShaderSet } from "./GlobeSurfaceShaderSet"; import { GlobeSurfaceTileProvider } from "./GlobeSurfaceTileProvider"; import { ImageryLayerCollection } from "./ImageryLayerCollection"; import { QuadtreePrimitive } from "./quadtree_primitive"; export class Globe { ellipsoid: Ellipsoid; /** * 地形提供器 */ private _terrainProvider!: TerrainProvider; /** * 图层集合 */ imageLayers: ImageryLayerCollection = new ImageryLayerCollection(); /** * 地形块存数量 */ tileCacheSize: number = 100; loadingDescendantLimit: number = 20; /** * 显示水的效果 */ showWaterEffect: boolean = false; _surface: QuadtreePrimitive; _surfaceShaderSet: GlobeSurfaceShaderSet; showSkirts: boolean = true; constructor(ellipsoid: Ellipsoid = Ellipsoid.WGS84) { this.ellipsoid = ellipsoid; this._terrainProvider = new EllipsoidTerrainProvider({ ellipsoid: ellipsoid, }); this._surfaceShaderSet = new GlobeSurfaceShaderSet(); this._surface = new QuadtreePrimitive({ tileProvider: new GlobeSurfaceTileProvider({ terrainProvider: this._terrainProvider, imageryLayers: this.imageLayers, surfaceShaderSet: this._surfaceShaderSet }) }) } pick(rat: Ray, scene: any, result: GVec3) { }; getHeight(cartographic: Cartographic): number | undefined { return 0; } get tilesLoaded() { return true; } }