import Entity from "./Entity"; import Scene from "./Scene"; import { Vector3 } from "./GeoMath"; import GeoRegion from "./GeoRegion"; import AltitudeMode from "./AltitudeMode"; /** * 多角形エンティティ */ declare class PolygonEntity extends Entity { private _extruded_height; private _color; private _opacity; private _boundaries; private _position?; private _producer; private _is_flake_mode; /** * @param scene 所属可能シーン * @param {object} [opts] オプション集合 * @param {object} [opts.json] 生成情報 * @param {object} [opts.refs] 参照辞書 */ constructor(scene: Scene, opts?: PolygonEntity.Option); /** * 押し出し量(0より大きい値) */ set extruded_height(value: number); /** * 押し出し量 */ get extruded_height(): number; get boundaries(): PolygonEntity.Boundary[]; /** */ getPrimitiveProducer(): PolygonEntity.PrimitiveProducer | undefined; /** */ getFlakePrimitiveProducer(): PolygonEntity.FlakePrimitiveProducer | undefined; /** */ onChangeAltitudeMode(_prev_mode: AltitudeMode): void; /** * アニメーションの BindingBlock を初期化 */ private _setupAnimationBindingBlock; /** * 基本色を設定 * @param color 基本色 */ setColor(color: Vector3): void; /** * 不透明度を設定 * @param opacity 不透明度 */ setOpacity(opacity: number): void; /** * 押し出し量を設定 * @param height 押し出し量 */ setExtrudedHeight(height: number): void; /** * 外側境界を追加 * * points は [lon_0, lat_0, alt_0, lon_1, lat_1, alt_1, ...] のような形式で配列を与える。 * * @param points 頂点の配列 */ addOuterBoundary(points: number[]): PolygonEntity.Boundary; /** * 内側境界を追加 * * points は [lon_0, lat_0, alt_0, lon_1, lat_1, alt_1, ...] のような形式で配列を与える。 * * @param points 頂点の配列 */ addInnerBoundary(points: number[]): PolygonEntity.Boundary; /** * 境界数を取得 * * @experimental */ getBoundaryCount(): number; /** * 境界を取得 * * @experimental */ getBoundaryAt(index: number): PolygonEntity.Boundary; /** * 境界を削除 * * @experimental */ removeBoundary(boundary: PolygonEntity.Boundary): boolean; /** * 境界を全て削除 * * @experimental */ removeAllBoundaries(): void; /** * すべての頂点のバウンディングを算出 * * @return バウンディング情報を持ったGeoRegion */ getBounds(): GeoRegion; /** * 境界を追加 * * addOuterBoundary(), addInnerBoundary() の実装である。 * * @param points 頂点の配列 * @param is_inner 内側の境界を示すかを示すフラグ * */ private _addBoundary; /** * 専用マテリアルを取得 */ private _getMaterial; /** */ private _setupByJson; /** * 中央位置を取得 * * 中央位置を計算して返す。多角形が存在しないときは null を返す。 * * 中央位置が変化する可能性があるときは this._position にを null を設定すること。 * * 入力: this._boundaries * * @return 中央位置 (高度は 0) または null */ private _getPosition; /** * すべての境界の頂点数の合計を取得 */ private _countNumPointsOnBoundaries; /** * 結合された境界点列を取得 * @return 結合された境界点列 */ private _getCombinedBoundaryPoints; /** * 結合された 2D 境界点列を取得 (高度なし) * * @return 結合された 2D 境界点列 */ private _getCombinedBoundary2DPoints; /** * 三角形リストを生成 * * this.entity._boundaries を三角形に変換してリストを返す。ただし変換に失敗したときは null を返す。 * * @return 三角形リストまたは null */ private _createTriangles; /** * 三角形リストを生成 * @experimental */ getTriangleIndices(): number[] | undefined; } declare namespace PolygonEntity { interface Option extends Entity.Option { json?: PolygonEntity.Json; } interface Json extends Entity.Json { color?: Vector3; opacity?: number; boundaries: BoundaryJson[]; extruded_height?: number; } interface BoundaryJson { type?: "inner"; num_points: number; points: number[]; } /** * 多角形の境界 * * 多角形の1つの境界を表現する。 * 外側境界のときは反時計回り、内側境界のときは時計回りで格納される。 */ class Boundary { private _points; private _num_points; /** * points は addOuterBoundary(), addInnerBoundary() と同じ形式である。 * * @param points 境界の頂点データ * @param is_inner 内側境界か? */ constructor(points: number[], is_inner: boolean); /** * 頂点座標の配列 */ get points(): Float64Array; /** * 頂点数 */ get num_points(): number; /** * 境界は反時計回りか? * * @param points 境界の頂点データ * * @return 反時計回りのとき true, それ以外のとき false */ static isCCW(points: number[], num_points: number): boolean; } } export default PolygonEntity; //# sourceMappingURL=PolygonEntity.d.ts.map