...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Computes the cross product of two vectors.
All vectors should have the same dimension, 3 or 2.
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)
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 |
the cross product vector
#include <boost/geometry/arithmetic/cross_product.hpp>
Calculate the cross product of two points
#include <iostream> #include <boost/geometry.hpp> #include <boost/geometry/arithmetic/cross_product.hpp> namespace bg = boost::geometry; int main() { //Example 1 2D Vector bg::model::point<double, 2, bg::cs::cartesian> p1(7.0, 2.0); bg::model::point<double, 2, bg::cs::cartesian> p2(4.0, 5.0); bg::model::point<double, 2, bg::cs::cartesian> r1; r1 = bg::cross_product(p1,p2); std::cout << "Cross Product 1: "<< r1.get<0>() << std::endl; //Note that the second point (r1.get<1>) would be undefined in this case //Example 2 - 3D Vector bg::model::point<double, 3, bg::cs::cartesian> p3(4.0, 6.0, 5.0); bg::model::point<double, 3, bg::cs::cartesian> p4(7.0, 2.0, 3.0); bg::model::point<double, 3, bg::cs::cartesian> r2; r2 = bg::cross_product(p3,p4); std::cout << "Cross Product 2: ("<< r2.get<0>() <<","<< r2.get<1>() <<","<< r2.get<2>() << ")"<< std::endl; return 0; }
Output:
Cross Product 1: 27 Cross Product 2: (8,23,-34)