19#include <cuspatial/cuda_utils.hpp>
20#include <cuspatial/detail/utility/floating_point.cuh>
54 return os <<
"(" << vec.x <<
"," << vec.y <<
")";
62 return detail::float_equal<T>(lhs.x, rhs.x) && detail::float_equal(lhs.y, rhs.y);
129 else if (lhs.x == rhs.x)
130 return lhs.y < rhs.y;
161vec_2d(T x, T y) -> vec_2d<T>;
169 return a.x * b.x + a.y * b.y;
178 return a.x * b.y - a.y * b.x;
188 return vec_2d<T>{::min(a.x, b.x), ::min(a.y, b.y)};
190 return vec_2d<T>{std::min(a.x, b.x), std::min(a.y, b.y)};
201 return vec_2d<T>{::max(a.x, b.x), ::max(a.y, b.y)};
203 return vec_2d<T>{std::max(a.x, b.x), std::max(a.y, b.y)};
213 return (first + second) * T{0.5};
friend bool CUSPATIAL_HOST_DEVICE operator>(vec_2d< T > const &lhs, vec_2d< T > const &rhs)
两个二维点的大于运算符。
friend bool CUSPATIAL_HOST_DEVICE operator>=(vec_2d< T > const &lhs, vec_2d< T > const &rhs)
两个二维点的大于或等于运算符。
friend vec_2d< T > CUSPATIAL_HOST_DEVICE operator-(vec_2d< T > const &a, vec_2d< T > const &b)
两个二维向量的逐元素相减。
friend vec_2d< T > &CUSPATIAL_HOST_DEVICE operator-=(vec_2d< T > &a, vec_2d< T > const &b)
平移一个二维点。
friend vec_2d< T > CUSPATIAL_HOST_DEVICE operator*(vec_2d< T > vec, T const &r)
按因子 r 缩放一个二维向量。
friend vec_2d< T > CUSPATIAL_HOST_DEVICE operator-(vec_2d< T > const &a)
反转一个二维向量。
friend vec_2d< T > CUSPATIAL_HOST_DEVICE operator*(T const &r, vec_2d< T > vec)
按比例 r 缩放一个二维向量。
friend bool CUSPATIAL_HOST_DEVICE operator==(vec_2d< T > const &lhs, vec_2d< T > const &rhs)
比较两个二维向量是否相等。
friend vec_2d< T > CUSPATIAL_HOST_DEVICE operator+(vec_2d< T > const &a, vec_2d< T > const &b)
两个二维向量的逐元素相加。
friend bool CUSPATIAL_HOST_DEVICE operator<=(vec_2d< T > const &lhs, vec_2d< T > const &rhs)
两个二维点的小于或等于运算符。
friend bool CUSPATIAL_HOST_DEVICE operator<(vec_2d< T > const &lhs, vec_2d< T > const &rhs)
两个二维点的小于运算符。
friend vec_2d< T > &CUSPATIAL_HOST_DEVICE operator+=(vec_2d< T > &a, vec_2d< T > const &b)
平移一个二维点。
friend std::ostream & operator<<(std::ostream &os, cuspatial::vec_2d< T > const &vec)
用于 vec_2d<T> 以人类可读格式输出的流运算符。
T CUSPATIAL_HOST_DEVICE det(vec_2d< T > const &a, vec_2d< T > const &b)
计算以向量 a 和 b 为列向量的 2x2 矩阵的二维行列式。
vec_2d< T > CUSPATIAL_HOST_DEVICE midpoint(vec_2d< T > const &first, vec_2d< T > const &second)
计算 first 和 second 的中点。
vec_2d< T > CUSPATIAL_HOST_DEVICE box_max(vec_2d< T > const &a, vec_2d< T > const &b)
返回一个新的 vec_2d,由两个输入 vec_2d 值的 x 和 y 分量的最大值构成。
T CUSPATIAL_HOST_DEVICE dot(vec_2d< T > const &a, vec_2d< T > const &b)
计算两个二维向量的点积。
vec_2d< T > CUSPATIAL_HOST_DEVICE box_min(vec_2d< T > const &a, vec_2d< T > const &b)
返回一个新的 vec_2d,由两个输入 vec_2d 值的 x 和 y 分量的最大值构成。