RMVL  1.5.0-dev
Robotic Manipulation and Vision Library
载入中...
搜索中...
未找到
math.hpp 文件参考

基础数学库 更多...

#include <cmath>
#include <numeric>
#include <unordered_map>
#include <vector>
#include <numbers>
#include <opencv2/core/matx.hpp>
#include "util.hpp"
math.hpp 的引用(Include)关系图:
此图展示该文件被哪些文件直接或间接地引用了:

class  rm::EwTopsis< Tp >
 熵权 TOPSIS 算法 更多...
 

命名空间

namespace  rm
 
namespace  rm::numeric_literals
 
namespace  cv
 

类型定义

using cv::Matx11f = Matx<float, 1, 1>
 
using cv::Matx11d = Matx<double, 1, 1>
 
using cv::Matx51f = Matx<float, 5, 1>
 
using cv::Matx15f = Matx<float, 1, 5>
 
using cv::Matx51d = Matx<double, 5, 1>
 
using cv::Matx15d = Matx<double, 1, 5>
 
using cv::Matx55f = Matx<float, 5, 5>
 
using cv::Matx55d = Matx<double, 5, 5>
 

枚举

enum  rm::AngleMode : bool { rm::RAD = true , rm::DEG = false }
 角度制式 更多...
 
enum class  rm::CalPlane : uint8_t { rm::CalPlane::xyz = 0 , rm::CalPlane::xOy = 1 , rm::CalPlane::xOz = 2 , rm::CalPlane::yOz = 3 }
 计算所在平面 更多...
 

函数

constexpr double rm::numeric_literals::operator""_PI (long double num)
 
constexpr double rm::numeric_literals::operator""_PI (long long unsigned num)
 
constexpr double rm::numeric_literals::operator""_to_rad (long double num)
 
constexpr double rm::numeric_literals::operator""_to_rad (long long unsigned num)
 
constexpr double rm::numeric_literals::operator""_to_deg (long double num)
 
constexpr double rm::numeric_literals::operator""_to_deg (long long unsigned num)
 
template<typename Tp >
constexpr Tp rm::operator+ (Tp val, const cv::Matx< Tp, 1, 1 > &mat)
 
template<typename Tp >
constexpr cv::Matx< Tp, 1, 1 > rm::operator+ (const cv::Matx< Tp, 1, 1 > &mat, Tp val)
 
template<typename Tp >
constexpr Tp rm::operator- (Tp val, const cv::Matx< Tp, 1, 1 > &mat)
 
template<typename Tp >
constexpr cv::Matx< Tp, 1, 1 > rm::operator- (const cv::Matx< Tp, 1, 1 > &mat, Tp val)
 
template<typename Tp >
constexpr Tp rm::deg2rad (Tp deg)
 角度转换为弧度
 
template<typename Tp >
constexpr Tp rm::rad2deg (Tp rad)
 弧度转换为角度
 
template<typename Tp >
constexpr cv::Matx< Tp, 3, 1 > rm::point2matx (cv::Point3_< Tp > point)
 Point 类型转换为 Matx 类型
 
template<typename Tp >
constexpr cv::Point3_< Tp > rm::matx2point (cv::Matx< Tp, 3, 1 > matx)
 Matx 类型转换为 Point 类型
 
template<typename Tp >
constexpr cv::Vec< Tp, 3 > rm::matx2vec (cv::Matx< Tp, 3, 1 > matx)
 Matx 类型转换为 Vec 类型
 
template<typename Tp1 , typename Tp2 >
constexpr auto rm::getDistance (const cv::Point_< Tp1 > &pt_1, const cv::Point_< Tp2 > &pt_2)
 获取距离
 
template<typename Tp1 , typename Tp2 >
constexpr auto rm::getDistance (const cv::Vec< Tp1, 2 > &vec_1, const cv::Vec< Tp2, 2 > &vec_2)
 获取距离
 
template<typename Tp1 , typename Tp2 >
constexpr auto rm::getDistance (const cv::Point3_< Tp1 > &pt_1, const cv::Point3_< Tp2 > &pt_2, CalPlane calplane=CalPlane::xyz)
 获取距离
 
template<typename Tp1 , typename Tp2 >
constexpr auto rm::getDistance (const cv::Vec< Tp1, 3 > &vec_1, const cv::Vec< Tp2, 3 > &vec_2, CalPlane calplane=CalPlane::xyz)
 获取距离
 
template<typename Tp1 , typename Tp2 >
constexpr auto rm::getDistance (const cv::Vec< Tp1, 4 > &line, const cv::Point_< Tp2 > &pt, bool direc=true)
 点到直线距离,其中 \(P=(x_0,y_0)\) 到直线 \(l:Ax+By+C=0\) 距离公式为
 
template<typename Tp1 , typename Tp2 >
constexpr auto rm::getHAngle (const cv::Point_< Tp1 > &start, const cv::Point_< Tp2 > &end, AngleMode mode=RAD)
 获取与水平方向的夹角,以平面直角坐标系 \(x\) 轴为分界线, 逆时针 为正方向,范围: \((-180°,180°]\) ,默认返回弧度制
 
template<typename Tp1 , typename Tp2 >
constexpr auto rm::getVAngle (const cv::Point_< Tp1 > &start, const cv::Point_< Tp2 > &end, AngleMode mode=RAD)
 获取与垂直方向的夹角,以平面直角坐标系 \(y\) 轴为分界线, 顺时针 为正方向,范围: \((-180°,180°]\) ,默认返回弧度制
 
template<typename Tp >
constexpr Tp rm::getDeltaAngle (Tp angle_1, Tp angle_2)
 求两个角之间的夹角
 
template<typename Tp >
constexpr Tp rm::sec (Tp x)
 正割 \(\sec(x)\)
 
template<typename Tp >
constexpr Tp rm::csc (Tp x)
 余割 \(\csc(x)\)
 
template<typename Tp >
constexpr Tp rm::cot (Tp x)
 余切 \(\cot(x)\)
 
template<typename Tp >
constexpr Tp rm::sgn (Tp x)
 符号函数
 
template<typename Tp >
constexpr Tp rm::sigmoid (Tp x, Tp k=1, Tp Kp=1, Tp mu=0)
 计算 sigmoid(x) 在某一点的函数值
 
template<typename Tp >
constexpr Tp rm::cross2D (const cv::Vec< Tp, 2 > &a, const cv::Vec< Tp, 2 > &b)
 平面向量外积
 
template<typename Tp >
constexpr Tp rm::cross2D (const cv::Point_< Tp > &a, const cv::Point_< Tp > &b)
 平面向量外积
 
template<typename ForwardIterator >
ForwardIterator::value_type rm::calculateModeNum (ForwardIterator first, ForwardIterator last)
 在指定范围内寻找众数,时间复杂度 O(N)
 
template<typename T >
std::vector< T > rm::operator+ (const std::vector< T > &vec1, const std::vector< T > &vec2)
 使用 std::vector 表示的向量加法
 
template<typename T >
std::vector< T > rm::operator- (const std::vector< T > &vec1, const std::vector< T > &vec2)
 使用 std::vector 表示的向量减法
 
template<typename T >
std::vector< T > & rm::operator+= (std::vector< T > &vec1, const std::vector< T > &vec2)
 使用 std::vector 表示的向量自加
 
template<typename T >
std::vector< T > & rm::operator-= (std::vector< T > &vec1, const std::vector< T > &vec2)
 使用 std::vector 表示的向量自减
 
template<typename T >
std::vector< T > rm::operator- (const std::vector< T > &vec)
 使用 std::vector 表示的向量取反
 
template<typename T >
std::vector< T > rm::operator* (const std::vector< T > &vec, T val)
 使用 std::vector 表示的向量乘法(数乘)
 
template<typename T >
std::vector< T > rm::operator* (T val, const std::vector< T > &vec)
 使用 std::vector 表示的向量乘法(数乘)
 
template<typename T >
std::vector< T > & rm::operator*= (std::vector< T > &vec, T val)
 使用 std::vector 表示的向量乘法(数乘)
 
template<typename T >
std::vector< T > rm::operator/ (const std::vector< T > &vec, T val)
 使用 std::vector 表示的向量除法(数乘)
 
template<typename T >
std::vector< T > & rm::operator/= (std::vector< T > &vec, T val)
 使用 std::vector 表示的向量除法(数乘)
 

变量

constexpr double rm::PI = ::std::numbers::pi
 圆周率: \(\pi\)
 
constexpr double rm::e = ::std::numbers::e
 自然对数底数: \(e\)
 
constexpr double rm::SQRT_2 = ::std::numbers::sqrt2
 根号 2: \(\sqrt2\)
 
constexpr double rm::PI_2 = PI / 2.
 PI / 2: \(\frac\pi2\)
 
constexpr double rm::PI_4 = PI / 4.
 PI / 4: \(\frac\pi4\)
 

详细描述

基础数学库

作者
RoboMaster Vision Community
版本
1.0
日期
2023-01-12