How to use the @bentley/geometry-core.Angle.radiansToDegrees function in @bentley/geometry-core

To help you get started, we’ve selected a few @bentley/geometry-core examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github imodeljs / imodeljs / core / frontend / src / SolarCalculate.ts View on Github external
export function calculateSolarAngles(date: Date, location: Cartographic): { azimuth: number, elevation: number } {
  const jDay = calculateJulianDay(date);
  const latitude = Angle.radiansToDegrees(location.latitude);
  const longitude = Angle.radiansToDegrees(location.longitude);
  const utcMinutes = date.getUTCHours() * 60 + date.getUTCMinutes() + date.getUTCSeconds() / 60;
  const zone = Math.floor(.5 + longitude / 15.0); // date.getTimeZoneOffset mixes in DST.
  const localMinutes = utcMinutes + zone * 60;
  const jTotal = jDay + utcMinutes / 1440.0;
  const T = calcTimeJulianCent(jTotal);
  return calcAzEl(T, localMinutes, latitude, longitude, zone);
}
github imodeljs / imodeljs / core / frontend / src / IModelConnection.ts View on Github external
public async cartographicToSpatialFromGcs(cartographic: Cartographic, result?: Point3d): Promise {
    if (undefined === this._noGcsDefined && !this.isGeoLocated)
      this._noGcsDefined = true;

    if (this._noGcsDefined)
      throw new IModelError(IModelStatus.NoGeoLocation, "iModel is not GeoLocated");

    const geoConverter = this.geoServices.getConverter()!;
    const geoCoord = Point3d.create(Angle.radiansToDegrees(cartographic.longitude), Angle.radiansToDegrees(cartographic.latitude), cartographic.height); // x is longitude in degrees, y is latitude in degrees, z is height in meters...
    const coordResponse = await geoConverter.getIModelCoordinatesFromGeoCoordinates([geoCoord]);

    if (this._noGcsDefined = (1 !== coordResponse.iModelCoords.length || GeoCoordStatus.NoGCSDefined === coordResponse.iModelCoords[0].s))
      throw new IModelError(IModelStatus.NoGeoLocation, "iModel is not GeoLocated");

    if (GeoCoordStatus.Success !== coordResponse.iModelCoords[0].s)
      throw new IModelError(IModelStatus.BadRequest, "Error converting cartographic to spatial");

    result = result ? result : Point3d.createZero();
    result.setFromJSON(coordResponse.iModelCoords[0].p);
    return result;
  }
github imodeljs / imodeljs / core / frontend / src / SolarCalculate.ts View on Github external
export function calculateSolarAngles(date: Date, location: Cartographic): { azimuth: number, elevation: number } {
  const jDay = calculateJulianDay(date);
  const latitude = Angle.radiansToDegrees(location.latitude);
  const longitude = Angle.radiansToDegrees(location.longitude);
  const utcMinutes = date.getUTCHours() * 60 + date.getUTCMinutes() + date.getUTCSeconds() / 60;
  const zone = Math.floor(.5 + longitude / 15.0); // date.getTimeZoneOffset mixes in DST.
  const localMinutes = utcMinutes + zone * 60;
  const jTotal = jDay + utcMinutes / 1440.0;
  const T = calcTimeJulianCent(jTotal);
  return calcAzEl(T, localMinutes, latitude, longitude, zone);
}
github imodeljs / imodeljs / core / frontend / src / tile / BingElevation.ts View on Github external
public async getHeightAverage(iModel: IModelConnection) {
    const latLongRange = Range2d.createNull();
    for (const corner of iModel.projectExtents.corners()) {
      const carto = iModel.spatialToCartographicFromEcef(corner);
      latLongRange.extendXY(Angle.radiansToDegrees(carto.longitude), Angle.radiansToDegrees(carto.latitude));
    }
    const heights = await this.getHeights(latLongRange);
    let total = 0.0;
    for (const height of heights) total += height;
    return total / heights.length;
  }
  public async getGraphic(latLongRange: Range2d, corners: Point3d[], groundBias: number, texture: RenderTexture, system: RenderSystem): Promise {
github imodeljs / imodeljs / core / clients / src / RealityDataServicesClient.ts View on Github external
public async getRealityDataInProjectOverlapping(requestContext: AuthorizedClientRequestContext, projectId: string, range: Range2d): Promise {
    const minLongDeg = Angle.radiansToDegrees(range.low.x);
    const maxLongDeg = Angle.radiansToDegrees(range.high.x);
    const minLatDeg = Angle.radiansToDegrees(range.low.y);
    const maxLatDeg = Angle.radiansToDegrees(range.high.y);
    const polygonString = `{\"points\":[[${minLongDeg},${minLatDeg}],[${maxLongDeg},${minLatDeg}],[${maxLongDeg},${maxLatDeg}],[${minLongDeg},${maxLatDeg}],[${minLongDeg},${minLatDeg}]], \"coordinate_system\":\"4326\"}`;

    const realityDatas: RealityData[] = await this.getInstances(requestContext, RealityData, `/Repositories/S3MXECPlugin--${projectId}/S3MX/RealityData?project=${projectId}&polygon=${polygonString}&$filter=Type+eq+'RealityMesh3DTiles'`);
    realityDatas.forEach((realityData) => { realityData.client = this; realityData.projectId = projectId; });
    return realityDatas;
  }
github imodeljs / imodeljs / core / clients / src / RealityDataServicesClient.ts View on Github external
public async getRealityDataInProjectOverlapping(requestContext: AuthorizedClientRequestContext, projectId: string, range: Range2d): Promise {
    const minLongDeg = Angle.radiansToDegrees(range.low.x);
    const maxLongDeg = Angle.radiansToDegrees(range.high.x);
    const minLatDeg = Angle.radiansToDegrees(range.low.y);
    const maxLatDeg = Angle.radiansToDegrees(range.high.y);
    const polygonString = `{\"points\":[[${minLongDeg},${minLatDeg}],[${maxLongDeg},${minLatDeg}],[${maxLongDeg},${maxLatDeg}],[${minLongDeg},${maxLatDeg}],[${minLongDeg},${minLatDeg}]], \"coordinate_system\":\"4326\"}`;

    const realityDatas: RealityData[] = await this.getInstances(requestContext, RealityData, `/Repositories/S3MXECPlugin--${projectId}/S3MX/RealityData?project=${projectId}&polygon=${polygonString}&$filter=Type+eq+'RealityMesh3DTiles'`);
    realityDatas.forEach((realityData) => { realityData.client = this; realityData.projectId = projectId; });
    return realityDatas;
  }
github imodeljs / imodeljs / core / clients / src / RealityDataServicesClient.ts View on Github external
public async getRealityDataInProjectOverlapping(requestContext: AuthorizedClientRequestContext, projectId: string, range: Range2d): Promise {
    const minLongDeg = Angle.radiansToDegrees(range.low.x);
    const maxLongDeg = Angle.radiansToDegrees(range.high.x);
    const minLatDeg = Angle.radiansToDegrees(range.low.y);
    const maxLatDeg = Angle.radiansToDegrees(range.high.y);
    const polygonString = `{\"points\":[[${minLongDeg},${minLatDeg}],[${maxLongDeg},${minLatDeg}],[${maxLongDeg},${maxLatDeg}],[${minLongDeg},${maxLatDeg}],[${minLongDeg},${minLatDeg}]], \"coordinate_system\":\"4326\"}`;

    const realityDatas: RealityData[] = await this.getInstances(requestContext, RealityData, `/Repositories/S3MXECPlugin--${projectId}/S3MX/RealityData?project=${projectId}&polygon=${polygonString}&$filter=Type+eq+'RealityMesh3DTiles'`);
    realityDatas.forEach((realityData) => { realityData.client = this; realityData.projectId = projectId; });
    return realityDatas;
  }
github imodeljs / imodeljs / ui / components / src / ui-components / timeline / BaseSolarDataProvider.ts View on Github external
private getZone(location: Cartographic) {
    const longitude = Angle.radiansToDegrees(location.longitude);
    return Math.floor(.5 + longitude / 15.0);
  }
github imodeljs / imodeljs / core / frontend / src / tile / BingElevation.ts View on Github external
public async getHeightValue(point: Point3d, iModel: IModelConnection, geodetic = true): Promise {
    const carto = iModel.spatialToCartographicFromEcef(point);
    const requestUrl = this._heightListRequestTemplate.replace("{points}", Angle.radiansToDegrees(carto.latitude) + "," + Angle.radiansToDegrees(carto.longitude)).replace("{heights}", geodetic ? "ellipsoid" : "sealevel");
    const requestOptions: RequestOptions = { method: "GET", responseType: "json" };
    try {
      const tileResponse: Response = await request(this._requestContext, requestUrl, requestOptions);
      return tileResponse.body.resourceSets[0].resources[0].elevations[0];
    } catch (error) {
      return 0.0;
    }
  }