]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | // Boost.Geometry (aka GGL, Generic Geometry Library) |
2 | // QuickBook Example | |
3 | ||
4 | // Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands. | |
5 | ||
6 | // Use, modification and distribution is subject to the Boost Software License, | |
7 | // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at | |
8 | // http://www.boost.org/LICENSE_1_0.txt) | |
9 | ||
10 | //[transform_with_strategy | |
11 | //` Shows how points can be scaled, translated or rotated | |
12 | ||
13 | #include <iostream> | |
14 | #include <boost/geometry.hpp> | |
15 | ||
16 | ||
17 | int main() | |
18 | { | |
19 | namespace trans = boost::geometry::strategy::transform; | |
20 | using boost::geometry::dsv; | |
21 | ||
22 | typedef boost::geometry::model::point<double, 2, boost::geometry::cs::cartesian> point_type; | |
23 | ||
24 | point_type p1(1.0, 1.0); | |
25 | ||
26 | // Translate over (1.5, 1.5) | |
27 | point_type p2; | |
28 | trans::translate_transformer<double, 2, 2> translate(1.5, 1.5); | |
29 | boost::geometry::transform(p1, p2, translate); | |
30 | ||
31 | // Scale with factor 3.0 | |
32 | point_type p3; | |
33 | trans::scale_transformer<double, 2, 2> scale(3.0); | |
34 | boost::geometry::transform(p1, p3, scale); | |
35 | ||
36 | // Rotate with respect to the origin (0,0) over 90 degrees (clockwise) | |
37 | point_type p4; | |
38 | trans::rotate_transformer<boost::geometry::degree, double, 2, 2> rotate(90.0); | |
39 | boost::geometry::transform(p1, p4, rotate); | |
40 | ||
41 | std::cout | |
42 | << "p1: " << dsv(p1) << std::endl | |
43 | << "p2: " << dsv(p2) << std::endl | |
44 | << "p3: " << dsv(p3) << std::endl | |
45 | << "p4: " << dsv(p4) << std::endl; | |
46 | ||
47 | return 0; | |
48 | } | |
49 | ||
50 | //] | |
51 | ||
52 | ||
53 | //[transform_with_strategy_output | |
54 | /*` | |
55 | Output: | |
56 | [pre | |
57 | p1: (1, 1) | |
58 | p2: (2.5, 2.5) | |
59 | p3: (3, 3) | |
60 | p4: (1, -1) | |
61 | ] | |
62 | */ | |
63 | //] |