UNPKG

xtorcga

Version:

Xtor Compute Geometry Algorithm Libary 计算几何算法库

68 lines (67 loc) 2.7 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.GVec3 = void 0; var src_1 = require("src"); var gis_1 = require("src-gis/gis"); var Vec3_1 = require("src/math/Vec3"); /* * @Description : * @Author : 赵耀圣 * @QQ : 549184003 * @Date : 2021-08-04 11:39:03 * @LastEditTime : 2021-08-04 16:02:16 * @FilePath : \cga.js\src-gis\math\GVec3.ts */ var scratchN = new Vec3_1.Vec3(); var scratchK = new Vec3_1.Vec3(); var GVec3 = /** @class */ (function (_super) { __extends(GVec3, _super); function GVec3() { return _super !== null && _super.apply(this, arguments) || this; } GVec3.fromDegrees = function (longitude, latitude, height, ellipsoid) { if (height === void 0) { height = 0; } if (ellipsoid === void 0) { ellipsoid = gis_1.wgs84RadiiSquared; } longitude = src_1.toRadians(longitude); latitude = src_1.toRadians(latitude); return GVec3.fromRadians(longitude, latitude, height, ellipsoid); }; /** * @description : * @param ellipsoid {椭球体} * @return {*} * @example : */ GVec3.fromRadians = function (longitude, latitude, height, ellipsoid) { if (height === void 0) { height = 0; } if (ellipsoid === void 0) { ellipsoid = gis_1.wgs84RadiiSquared; } var cosLatitude = Math.cos(latitude); scratchN.x = cosLatitude * Math.cos(longitude); scratchN.y = Math.sin(latitude); scratchN.z = cosLatitude * Math.sin(longitude); scratchN.normalize(); //标准球形坐标 scratchK.copy(scratchN).multiply(ellipsoid); //各个单位 var gamma = Math.sqrt(scratchN.dot(scratchK)); scratchK.divideScalar(gamma); scratchN.multiplyScalar(height); //scratchN始终是一个标准球 var result = new Vec3_1.Vec3(); return result.addVecs(scratchK, scratchN); }; GVec3.toCartographic = function () { }; return GVec3; }(Vec3_1.Vec3)); exports.GVec3 = GVec3;