[/============================================================================
  Boost.Geometry (aka GGL, Generic Geometry Library)

  Copyright (c) 2007-2013 Barend Gehrels, Amsterdam, the Netherlands.
  Copyright (c) 2008-2013 Bruno Lalande, Paris, France.
  Copyright (c) 2009-2013 Mateusz Loskot, London, UK.

  Use, modification and distribution is subject to 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)
=============================================================================/]


[/ Generated by doxygen_xml2qbk 1.1.1, don't change, will be overwritten automatically]
[/ Generated from doxy/doxygen_output/xml/group__arithmetic.xml]
[section:add_point add_point]

'''<indexterm><primary>add_point</primary></indexterm>'''
Adds a point to another. 

[heading Description]
The coordinates of the second point will be added to those of the first point. The second point is not modified. 

[heading Synopsis]
``template<typename Point1, typename Point2>
void add_point(Point1 & p1, Point2 const & p2)``

[heading Parameters]

[table
[[Type] [Concept] [Name] [Description] ]
[[Point1 &] [Any type fulfilling a Point Concept ] [p1] [first point ]]
[[Point2 const &] [Any type fulfilling a Point Concept ] [p2] [second point ]]
]


[heading Header]
Either

`#include <boost/geometry.hpp>`


Or

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


[endsect]

[section:add_value add_value]

'''<indexterm><primary>add_value</primary></indexterm>'''
Adds the same value to each coordinate of a point. 

[heading Synopsis]
``template<typename Point>
void add_value(Point & p, typename detail::param< Point >::type value)``

[heading Parameters]

[table
[[Type] [Concept] [Name] [Description] ]
[[Point &] [Any type fulfilling a Point Concept ] [p] [point ]]
[[typename detail::param< Point >::type] [] [value] [value to add ]]
]


[heading Header]
Either

`#include <boost/geometry.hpp>`


Or

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


[endsect]

[section:assign_point assign_point]

'''<indexterm><primary>assign_point</primary></indexterm>'''
Assign a point with another. 

[heading Description]
The coordinates of the first point will be assigned those of the second point. The second point is not modified. 

[heading Synopsis]
``template<typename Point1, typename Point2>
void assign_point(Point1 & p1, Point2 const & p2)``

[heading Parameters]

[table
[[Type] [Concept] [Name] [Description] ]
[[Point1 &] [Any type fulfilling a Point Concept ] [p1] [first point ]]
[[Point2 const &] [Any type fulfilling a Point Concept ] [p2] [second point ]]
]


[heading Header]
Either

`#include <boost/geometry.hpp>`


Or

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


[endsect]

[section:assign_value assign_value]

'''<indexterm><primary>assign_value</primary></indexterm>'''
Assign each coordinate of a point the same value. 

[heading Synopsis]
``template<typename Point>
void assign_value(Point & p, typename detail::param< Point >::type value)``

[heading Parameters]

[table
[[Type] [Concept] [Name] [Description] ]
[[Point &] [Any type fulfilling a Point Concept ] [p] [point ]]
[[typename detail::param< Point >::type] [] [value] [value to assign ]]
]


[heading Header]
Either

`#include <boost/geometry.hpp>`


Or

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


[endsect]

[section:cross_product_2 cross_product]

'''<indexterm><primary>cross_product</primary></indexterm>'''
Computes the cross product of two vectors. 

[heading Description]
All vectors should have the same dimension, 3 or 2.

[heading Synopsis]
``template<typename ResultP, typename P1, typename P2, std::enable_if_t< dimension< ResultP >::value !=3||! traits::make< ResultP >::is_specialized, int >>
ResultP cross_product(P1 const & p1, P2 const & p2)``

[heading Parameters]

[table
[[Type] [Concept] [Name] [Description] ]
[[ResultP] [] [ - ] [Must be specified]]
[[std::enable_if_t< dimension< ResultP >::value !=3||! traits::make< ResultP >::is_specialized, int >] [] [ - ] [Must be specified]]
[[P1 const &] [] [p1] [first vector ]]
[[P2 const &] [] [p2] [second vector ]]
]


[heading Returns]
the cross product vector 

[heading Header]
`#include <boost/geometry/arithmetic/cross_product.hpp>`


[endsect]

[section:cross_product_2 cross_product]

'''<indexterm><primary>cross_product</primary></indexterm>'''
Computes the cross product of two vectors. 

[heading Description]
All vectors should have the same dimension, 3 or 2.

[heading Synopsis]
``template<typename P, std::enable_if_t< dimension< P >::value !=3||! traits::make< P >::is_specialized, int >>
P cross_product(P const & p1, P const & p2)``

[heading Parameters]

[table
[[Type] [Concept] [Name] [Description] ]
[[std::enable_if_t< dimension< P >::value !=3||! traits::make< P >::is_specialized, int >] [] [ - ] [Must be specified]]
[[P const &] [] [p1] [first vector ]]
[[P const &] [] [p2] [second vector ]]
]


[heading Returns]
the cross product vector

[heading Header]
`#include <boost/geometry/arithmetic/cross_product.hpp>`

[heading Examples]
[cross_product] [cross_product_output]


[endsect]

[section:divide_point divide_point]

'''<indexterm><primary>divide_point</primary></indexterm>'''
Divides a point by another. 

[heading Description]
The coordinates of the first point will be divided by those of the second point. The second point is not modified. 

[heading Synopsis]
``template<typename Point1, typename Point2>
void divide_point(Point1 & p1, Point2 const & p2)``

[heading Parameters]

[table
[[Type] [Concept] [Name] [Description] ]
[[Point1 &] [Any type fulfilling a Point Concept ] [p1] [first point ]]
[[Point2 const &] [Any type fulfilling a Point Concept ] [p2] [second point ]]
]


[heading Header]
Either

`#include <boost/geometry.hpp>`


Or

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


[endsect]

[section:divide_value divide_value]

'''<indexterm><primary>divide_value</primary></indexterm>'''
Divides each coordinate of the same point by a value. 

[heading Synopsis]
``template<typename Point>
void divide_value(Point & p, typename detail::param< Point >::type value)``

[heading Parameters]

[table
[[Type] [Concept] [Name] [Description] ]
[[Point &] [Any type fulfilling a Point Concept ] [p] [point ]]
[[typename detail::param< Point >::type] [] [value] [value to divide by ]]
]


[heading Header]
Either

`#include <boost/geometry.hpp>`


Or

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


[endsect]

[section:dot_product dot_product]

'''<indexterm><primary>dot_product</primary></indexterm>'''
Computes the dot product (or scalar product) of 2 vectors (points). 

[heading Synopsis]
``template<typename Point1, typename Point2>
constexpr select_coordinate_type<Point1, Point2>::type dot_product(Point1 const & p1, Point2 const & p2)``

[heading Parameters]

[table
[[Type] [Concept] [Name] [Description] ]
[[Point1 const &] [Any type fulfilling a Point Concept ] [p1] [first point ]]
[[Point2 const &] [Any type fulfilling a Point Concept ] [p2] [second point ]]
]


[heading Returns]
the dot product

[heading Header]
Either

`#include <boost/geometry.hpp>`


Or

`#include <boost/geometry/arithmetic/dot_product.hpp>`

[heading Examples]
[dot_product] [dot_product_output]


[endsect]

[section:multiply_point multiply_point]

'''<indexterm><primary>multiply_point</primary></indexterm>'''
Multiplies a point by another. 

[heading Description]
The coordinates of the first point will be multiplied by those of the second point. The second point is not modified. 

[heading Synopsis]
``template<typename Point1, typename Point2>
void multiply_point(Point1 & p1, Point2 const & p2)``

[heading Parameters]

[table
[[Type] [Concept] [Name] [Description] ]
[[Point1 &] [Any type fulfilling a Point Concept ] [p1] [first point ]]
[[Point2 const &] [Any type fulfilling a Point Concept ] [p2] [second point ]]
]


[heading Header]
Either

`#include <boost/geometry.hpp>`


Or

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


[endsect]

[section:multiply_value multiply_value]

'''<indexterm><primary>multiply_value</primary></indexterm>'''
Multiplies each coordinate of a point by the same value. 

[heading Synopsis]
``template<typename Point>
void multiply_value(Point & p, typename detail::param< Point >::type value)``

[heading Parameters]

[table
[[Type] [Concept] [Name] [Description] ]
[[Point &] [Any type fulfilling a Point Concept ] [p] [point ]]
[[typename detail::param< Point >::type] [] [value] [value to multiply by ]]
]


[heading Header]
Either

`#include <boost/geometry.hpp>`


Or

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


[endsect]

[section:subtract_point subtract_point]

'''<indexterm><primary>subtract_point</primary></indexterm>'''
Subtracts a point to another. 

[heading Description]
The coordinates of the second point will be subtracted to those of the first point. The second point is not modified. 

[heading Synopsis]
``template<typename Point1, typename Point2>
void subtract_point(Point1 & p1, Point2 const & p2)``

[heading Parameters]

[table
[[Type] [Concept] [Name] [Description] ]
[[Point1 &] [Any type fulfilling a Point Concept ] [p1] [first point ]]
[[Point2 const &] [Any type fulfilling a Point Concept ] [p2] [second point ]]
]


[heading Header]
Either

`#include <boost/geometry.hpp>`


Or

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


[endsect]

[section:subtract_value subtract_value]

'''<indexterm><primary>subtract_value</primary></indexterm>'''
Subtracts the same value to each coordinate of a point. 

[heading Synopsis]
``template<typename Point>
void subtract_value(Point & p, typename detail::param< Point >::type value)``

[heading Parameters]

[table
[[Type] [Concept] [Name] [Description] ]
[[Point &] [Any type fulfilling a Point Concept ] [p] [point ]]
[[typename detail::param< Point >::type] [] [value] [value to subtract ]]
]


[heading Header]
Either

`#include <boost/geometry.hpp>`


Or

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


[endsect]

