Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world.

This is the documentation for an old version of Boost. Click here to view this page for the latest version.
transform

Transforms from one geometry to another geometry using a strategy.

Synopsis

```template<typename Geometry1, typename Geometry2>
bool transform(Geometry1 const & geometry1, Geometry2 & geometry2)```

Parameters

Type

Concept

Name

Description

Geometry1 const &

Any type fulfilling a Geometry Concept

geometry1

A model of the specified concept

Geometry2 &

Any type fulfilling a Geometry Concept

geometry2

A model of the specified concept

Returns

True if the transformation could be done

Header

Either

`#include <boost/geometry.hpp>`

Or

`#include <boost/geometry/algorithms/transform.hpp>`

Conformance

The function transform is not defined by OGC.

Behavior

Case

Behavior

Spherical (degree) / Spherical (radian)

Transforms coordinates from degree to radian, or vice versa

Spherical / Cartesian (3D)

Transforms coordinates from spherical coordinates to X,Y,Z, or vice versa, on a unit sphere

Spherical (degree, with radius) / Spherical (radian, with radius)

Transforms coordinates from degree to radian, or vice versa. Third coordinate (radius) is untouched

Spherical (with radius) / Cartesian (3D)

Transforms coordinates from spherical coordinates to X,Y,Z, or vice versa, on a unit sphere. Third coordinate (radius) is taken into account

Linear

Example

Shows how points can be transformed using the default strategy

```#include <iostream>
#include <boost/geometry.hpp>

int main()
{
namespace bg = boost::geometry;

// Select a point near the pole (theta=5.0, phi=15.0)
bg::model::point<long double, 2, bg::cs::spherical<bg::degree> > p1(15.0, 5.0);

// Transform from degree to radian. Default strategy is automatically selected,
// it will convert from degree to radian
bg::model::point<long double, 2, bg::cs::spherical<bg::radian> > p2;
bg::transform(p1, p2);

// Transform from degree (lon-lat) to 3D (x,y,z). Default strategy is automatically selected,
// it will consider points on a unit sphere
bg::model::point<long double, 3, bg::cs::cartesian> p3;
bg::transform(p1, p3);

std::cout
<< "p1: " << bg::dsv(p1) << std::endl
<< "p2: " << bg::dsv(p2) << std::endl
<< "p3: " << bg::dsv(p3) << std::endl;

return 0;
}
```

Output:

```p1: (15, 5)
p2: (0.261799, 0.0872665)
p3: (0.084186, 0.0225576, 0.996195)
```
 Copyright © 2009-2015 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam Wulkiewicz, Oracle and/or its affiliates Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)