---
title: "MTMath | Mobile sdk | Mobile sdk ios | Ios"
description: "Pure math helpers for geographic calculations, projections, and tile indices."
---

> For AI agents: a documentation index is available at [/llms.txt](https://docs.maptiler.com/llms.txt). Markdown versions of all pages are available by appending .md to any URL.

# MTMath

```
public struct MTMath
```

Pure math helpers for geographic calculations, projections, and tile indices.

-   `[earthRadius](#/s:11MapTilerSDK6MTMathV11earthRadiusSdvpZ)`
    
    Radius of the Earth in meters.
    
    #### Declaration
    
    Swift
    
    ```
    public static let earthRadius: Double
    ```
    
-   `[earthCircumference](#/s:11MapTilerSDK6MTMathV18earthCircumferenceSdvpZ)`
    
    Circumference of the Earth in meters.
    
    #### Declaration
    
    Swift
    
    ```
    public static let earthCircumference: Double
    ```
    
-   `[maxSafeLatitude](#/s:11MapTilerSDK6MTMathV15maxSafeLatitudeSdvpZ)`
    
    Maximum latitude used for Web Mercator calculations to prevent infinity.
    
    #### Declaration
    
    Swift
    
    ```
    public static let maxSafeLatitude: Double
    ```
    
-   `[toRadians(degrees:)](#/s:11MapTilerSDK6MTMathV9toRadians7degreesS2d_tFZ)`
    
    Converts degrees to radians.
    
    #### Declaration
    
    Swift
    
    ```
    public static func toRadians(degrees: Double) -> Double
    ```
    
-   `[toDegrees(radians:)](#/s:11MapTilerSDK6MTMathV9toDegrees7radiansS2d_tFZ)`
    
    Converts radians to degrees.
    
    #### Declaration
    
    Swift
    
    ```
    public static func toDegrees(radians: Double) -> Double
    ```
    
-   `[longitudeToMercatorX(longitude:)](#/s:11MapTilerSDK6MTMathV20longitudeToMercatorX0E0S2d_tFZ)`
    
    Converts a longitude to Web Mercator X coordinate in meters.
    
    #### Declaration
    
    Swift
    
    ```
    public static func longitudeToMercatorX(longitude: Double) -> Double
    ```
    
-   `[latitudeToMercatorY(latitude:)](#/s:11MapTilerSDK6MTMathV19latitudeToMercatorY0E0S2d_tFZ)`
    
    Converts a latitude to Web Mercator Y coordinate in meters.
    
    #### Declaration
    
    Swift
    
    ```
    public static func latitudeToMercatorY(latitude: Double) -> Double
    ```
    
-   `[wgs84ToMercator(coordinate:)](#/s:11MapTilerSDK6MTMathV15wgs84ToMercator10coordinateSd1x_Sd1ytSo22CLLocationCoordinate2DV_tFZ)`
    
    Converts a WGS84 coordinate to Web Mercator (X, Y) in meters.
    
    #### Declaration
    
    Swift
    
    ```
    public static func wgs84ToMercator(coordinate: CLLocationCoordinate2D) -> (x: Double, y: Double)
    ```
    
-   `[mercatorXToLongitude(x:)](#/s:11MapTilerSDK6MTMathV20mercatorXToLongitude1xS2d_tFZ)`
    
    Converts a Web Mercator X coordinate in meters to longitude.
    
    #### Declaration
    
    Swift
    
    ```
    public static func mercatorXToLongitude(x: Double) -> Double
    ```
    
-   `[mercatorYToLatitude(y:)](#/s:11MapTilerSDK6MTMathV19mercatorYToLatitude1yS2d_tFZ)`
    
    Converts a Web Mercator Y coordinate in meters to latitude.
    
    #### Declaration
    
    Swift
    
    ```
    public static func mercatorYToLatitude(y: Double) -> Double
    ```
    
-   `[mercatorToWgs84(x:y:)](#/s:11MapTilerSDK6MTMathV15mercatorToWgs841x1ySo22CLLocationCoordinate2DVSd_SdtFZ)`
    
    Converts a Web Mercator (X, Y) in meters to WGS84 coordinate.
    
    #### Declaration
    
    Swift
    
    ```
    public static func mercatorToWgs84(x: Double, y: Double) -> CLLocationCoordinate2D
    ```
    
-   `[longitudeToTileX(longitude:zoom:round:)](#/s:11MapTilerSDK6MTMathV16longitudeToTileX0E04zoom5roundS2d_SdSbtFZ)`
    
    Calculates the Web Mercator tile X coordinate for a given longitude and zoom level.
    
    #### Declaration
    
    Swift
    
    ```
    public static func longitudeToTileX(longitude: Double, zoom: Double, round: Bool = true) -> Double
    ```
    
-   `[latitudeToTileY(latitude:zoom:round:)](#/s:11MapTilerSDK6MTMathV15latitudeToTileY0E04zoom5roundS2d_SdSbtFZ)`
    
    Calculates the Web Mercator tile Y coordinate (XYZ scheme) for a given latitude and zoom level.
    
    #### Declaration
    
    Swift
    
    ```
    public static func latitudeToTileY(latitude: Double, zoom: Double, round: Bool = true) -> Double
    ```
    
-   `[wgs84ToTileIndex(coordinate:zoom:round:)](#/s:11MapTilerSDK6MTMathV16wgs84ToTileIndex10coordinate4zoom5roundSd1x_Sd1ytSo22CLLocationCoordinate2DV_SdSbtFZ)`
    
    Converts a WGS84 coordinate to Web Mercator tile indices.
    
    #### Declaration
    
    Swift
    
    ```
    public static func wgs84ToTileIndex(
        coordinate: CLLocationCoordinate2D,
        zoom: Double,
        round: Bool = true
    ) -> (x: Double, y: Double)
    ```
    
-   `[haversineDistanceWgs84(from:to:)](#/s:11MapTilerSDK6MTMathV22haversineDistanceWgs844from2toSdSo22CLLocationCoordinate2DV_AHtFZ)`
    
    Calculates the great-circle distance between two WGS84 coordinates using the Haversine formula.
    
    #### Declaration
    
    Swift
    
    ```
    public static func haversineDistanceWgs84(from: CLLocationCoordinate2D, to: CLLocationCoordinate2D) -> Double
    ```
    
    #### Return Value
    
    The distance in meters.
    
-   `[haversineCumulatedDistanceWgs84(route:)](#/s:11MapTilerSDK6MTMathV31haversineCumulatedDistanceWgs845routeSdSaySo22CLLocationCoordinate2DVG_tFZ)`
    
    Calculates the total cumulated distance of a route made of multiple WGS84 coordinates.
    
    #### Declaration
    
    Swift
    
    ```
    public static func haversineCumulatedDistanceWgs84(route: [CLLocationCoordinate2D]) -> Double
    ```
    
    #### Return Value
    
    The total distance in meters.
    
-   `[haversineIntermediateWgs84(from:to:ratio:)](#/s:11MapTilerSDK6MTMathV26haversineIntermediateWgs844from2to5ratioSo22CLLocationCoordinate2DVAI_AISdtFZ)`
    
    Computes an intermediate point between two WGS84 coordinates using the Haversine formula.
    
    #### Declaration
    
    Swift
    
    ```
    public static func haversineIntermediateWgs84(
        from: CLLocationCoordinate2D,
        to: CLLocationCoordinate2D,
        ratio: Double
    ) -> CLLocationCoordinate2D
    ```
    
    #### Parameters
    
    <table class="graybox"><tbody><tr><td><code><em>ratio</em></code></td><td><div><p>A value between 0.0 and 1.0.</p></div></td></tr></tbody></table>
    
    #### Return Value
    
    The intermediate coordinate.
    
-   `[circumferenceAtLatitude(latitude:)](#/s:11MapTilerSDK6MTMathV23circumferenceAtLatitude8latitudeS2d_tFZ)`
    
    Calculates the Earth’s circumference at a given latitude in meters.
    
    #### Declaration
    
    Swift
    
    ```
    public static func circumferenceAtLatitude(latitude: Double) -> Double
    ```
    
-   `[wrapLongitude(_:)](#/s:11MapTilerSDK6MTMathV13wrapLongitudeyS2dFZ)`
    
    Wraps a longitude value to be within the `[-180, 180]` range.
    
    #### Declaration
    
    Swift
    
    ```
    public static func wrapLongitude(_ longitude: Double) -> Double
    ```
