cpp-toolbox  0.0.1
A toolbox library for C++
Loading...
Searching...
No Matches
toolbox::types Namespace Reference

Namespaces

namespace  detail
 

Classes

struct  minmax_t
 存储和计算最小最大值的主模板类 / Primary template class for storing and calculating minimum and maximum values More...
 
struct  minmax_t< point_t< T > >
 point_t类型的minmax_t偏特化 / Partial specialization of minmax_t for point_t type More...
 
class  point_cloud_t
 包含点和相关数据的点云类 / A point cloud class containing points and associated data More...
 
struct  point_t
 3D点/向量模板类 / A 3D point/vector template class More...
 

Functions

template<typename T >
minmax_t< T > combine_minmax (const minmax_t< T > &a, const minmax_t< T > &b)
 合并两个minmax_t对象 / Combine two minmax_t objects
 
template<typename CoordT >
minmax_t< point_t< CoordT > > combine_minmax (const minmax_t< point_t< CoordT > > &a, const minmax_t< point_t< CoordT > > &b)
 合并两个point_t类型的minmax_t对象 / Combine two minmax_t objects of point_t type
 
template<typename InputType >
auto calculate_minmax (const InputType &input) -> std::enable_if_t<!detail::is_calculable_container_v< InputType >, minmax_t< std::decay_t< InputType > > >
 计算非容器类型的最小最大值 / Calculate minmax for non-container type
 
template<typename T >
auto calculate_minmax (const point_cloud_t< T > &input) -> minmax_t< point_t< T > >
 计算点云的最小最大值 / Calculate minmax for point cloud
 
template<typename InputType >
auto calculate_minmax_parallel (const InputType &input) -> std::enable_if_t<!detail::is_calculable_container_v< InputType >, minmax_t< std::decay_t< InputType > > >
 并行计算非容器类型的最小最大值 / Calculate minmax for non-container type in parallel
 
template<typename T >
auto calculate_minmax_parallel (const point_cloud_t< T > &input) -> minmax_t< point_t< T > >
 并行计算点云的最小最大值 / Calculate minmax for point cloud in parallel
 
template<typename T >
auto operator<< (std::ostream &output_stream, const point_t< T > &pt) -> std::ostream &
 point_t的流输出运算符 - 仅声明 / Stream output operator for point_t - Declaration Only
 
template<typename T >
CPP_TOOLBOX_EXPORT auto generate_random_points (const std::size_t &num_points, const minmax_t< point_t< T > > &minmax) -> std::vector< point_t< T > >
 在给定边界内顺序生成随机点 / Generates random points within given bounds sequentially
 
template<typename T >
CPP_TOOLBOX_EXPORT auto generate_random_points_parallel (const std::size_t &num_points, const minmax_t< point_t< T > > &minmax) -> std::vector< point_t< T > >
 在给定边界内并行生成随机点 / Generates random points within given bounds in parallel
 
template<typename T >
CPP_TOOLBOX_EXPORT auto transform_point_cloud (const point_cloud_t< T > &cloud, const Eigen::Matrix< T, 4, 4 > &transform) -> point_cloud_t< T >
 对点云应用变换矩阵(顺序版本)/ Apply transformation matrix to point cloud (sequential version)
 
template<typename T >
CPP_TOOLBOX_EXPORT auto transform_point_cloud_parallel (const point_cloud_t< T > &cloud, const Eigen::Matrix< T, 4, 4 > &transform) -> point_cloud_t< T >
 对点云应用变换矩阵(并行版本)/ Apply transformation matrix to point cloud (parallel version)
 
template<typename T >
CPP_TOOLBOX_EXPORT void transform_point_cloud_inplace (point_cloud_t< T > &cloud, const Eigen::Matrix< T, 4, 4 > &transform)
 原地变换点云(顺序版本)/ Transform point cloud in-place (sequential version)
 
template<typename T >
CPP_TOOLBOX_EXPORT void transform_point_cloud_inplace_parallel (point_cloud_t< T > &cloud, const Eigen::Matrix< T, 4, 4 > &transform)
 原地变换点云(并行版本)/ Transform point cloud in-place (parallel version)
 

Function Documentation

◆ calculate_minmax() [1/2]

template<typename InputType >
auto toolbox::types::calculate_minmax ( const InputType &  input) -> std::enable_if_t<!detail::is_calculable_container_v< InputType >, minmax_t< std::decay_t< InputType > > >

计算非容器类型的最小最大值 / Calculate minmax for non-container type

计算容器类型的最小最大值 / Calculate minmax for container type

Template Parameters
InputType输入类型 / Input type
Parameters
input输入值 / Input value
Returns
包含最小最大值的minmax_t对象 / minmax_t object containing min and max values
Template Parameters
InputType容器类型 / Container type
Parameters
input输入容器 / Input container
Returns
包含最小最大值的minmax_t对象 / minmax_t object containing min and max values
std::vector<int> vec{1, 5, 3, 8, 2};
auto mm = calculate_minmax(vec); // min = 1, max = 8
auto calculate_minmax(const InputType &input) -> std::enable_if_t<!detail::is_calculable_container_v< InputType >, minmax_t< std::decay_t< InputType > > >
计算非容器类型的最小最大值 / Calculate minmax for non-container type
Definition minmax_impl.hpp:173

◆ calculate_minmax() [2/2]

template<typename T >
auto toolbox::types::calculate_minmax ( const point_cloud_t< T > &  input) -> minmax_t< point_t< T > >

计算点云的最小最大值 / Calculate minmax for point cloud

Template Parameters
T点坐标类型 / Point coordinate type
Parameters
input输入点云 / Input point cloud
Returns
包含最小最大点的minmax_t对象 / minmax_t object containing min and max points

◆ calculate_minmax_parallel() [1/2]

template<typename InputType >
auto toolbox::types::calculate_minmax_parallel ( const InputType &  input) -> std::enable_if_t<!detail::is_calculable_container_v< InputType >, minmax_t< std::decay_t< InputType > > >

并行计算非容器类型的最小最大值 / Calculate minmax for non-container type in parallel

并行计算容器类型的最小最大值 / Calculate minmax for container type in parallel

Template Parameters
InputType输入类型 / Input type
Parameters
input输入值 / Input value
Returns
包含最小最大值的minmax_t对象 / minmax_t object containing min and max values
Template Parameters
InputType容器类型 / Container type
Parameters
input输入容器 / Input container
Returns
包含最小最大值的minmax_t对象 / minmax_t object containing min and max values
std::vector<double> large_vec = get_large_vector();
auto mm = calculate_minmax_parallel(large_vec); // 并行计算最小最大值 /
Calculate min/max in parallel
auto calculate_minmax_parallel(const InputType &input) -> std::enable_if_t<!detail::is_calculable_container_v< InputType >, minmax_t< std::decay_t< InputType > > >
并行计算非容器类型的最小最大值 / Calculate minmax for non-container type in parallel
Definition minmax_impl.hpp:227

◆ calculate_minmax_parallel() [2/2]

template<typename T >
auto toolbox::types::calculate_minmax_parallel ( const point_cloud_t< T > &  input) -> minmax_t< point_t< T > >

并行计算点云的最小最大值 / Calculate minmax for point cloud in parallel

Template Parameters
T点坐标类型 / Point coordinate type
Parameters
input输入点云 / Input point cloud
Returns
包含最小最大点的minmax_t对象 / minmax_t object containing min and max points

◆ combine_minmax() [1/2]

template<typename CoordT >
minmax_t< point_t< CoordT > > toolbox::types::combine_minmax ( const minmax_t< point_t< CoordT > > &  a,
const minmax_t< point_t< CoordT > > &  b 
)

合并两个point_t类型的minmax_t对象 / Combine two minmax_t objects of point_t type

Template Parameters
CoordT坐标类型 / Coordinate type
Parameters
a第一个minmax_t对象 / First minmax_t object
b第二个minmax_t对象 / Second minmax_t object
Returns
合并后的minmax_t对象 / Combined minmax_t object

◆ combine_minmax() [2/2]

template<typename T >
minmax_t< T > toolbox::types::combine_minmax ( const minmax_t< T > &  a,
const minmax_t< T > &  b 
)

合并两个minmax_t对象 / Combine two minmax_t objects

Template Parameters
T值的类型 / Type of values
Parameters
a第一个minmax_t对象 / First minmax_t object
b第二个minmax_t对象 / Second minmax_t object
Returns
合并后的minmax_t对象 / Combined minmax_t object
minmax_t<int> m1(0, 5), m2(3, 8);
auto combined = combine_minmax(m1, m2); // min = 0, max = 8
minmax_t< T > combine_minmax(const minmax_t< T > &a, const minmax_t< T > &b)
合并两个minmax_t对象 / Combine two minmax_t objects
Definition minmax_impl.hpp:132
存储和计算最小最大值的主模板类 / Primary template class for storing and calculating minimum and maximum values
Definition minmax.hpp:92

◆ generate_random_points()

template<typename T >
CPP_TOOLBOX_EXPORT auto toolbox::types::generate_random_points ( const std::size_t &  num_points,
const minmax_t< point_t< T > > &  minmax 
) -> std::vector<point_t<T>>

在给定边界内顺序生成随机点 / Generates random points within given bounds sequentially

Template Parameters
T坐标类型(如float、double) / The coordinate type (e.g., float, double)
Parameters
num_points要生成的点的总数 / Total number of points to generate
minmax坐标的最小和最大边界 / The minimum and maximum bounds for coordinates
Returns
std::vector<point_t<T>> 包含生成点的向量 / A vector containing the generated points
// 生成1000个float类型的随机点 / Generate 1000 random points of float type
minmax_t<point_t<float>> bounds({0,0,0}, {10,10,10});
auto points = generate_random_points<float>(1000, bounds);
// 生成double类型的随机点,带自定义边界 / Generate random points of double
type with custom bounds minmax_t<point_t<double>> custom_bounds({-5,-5,-5},
{5,5,5}); auto custom_points = generate_random_points<double>(500,
custom_bounds);

◆ generate_random_points_parallel()

template<typename T >
CPP_TOOLBOX_EXPORT auto toolbox::types::generate_random_points_parallel ( const std::size_t &  num_points,
const minmax_t< point_t< T > > &  minmax 
) -> std::vector<point_t<T>>

在给定边界内并行生成随机点 / Generates random points within given bounds in parallel

在默认线程池中分配工作,每个线程使用唯一种子的随机数生成器 / Divides the work among threads in the default thread pool, each thread uses its own random number generator seeded uniquely

Template Parameters
T坐标类型(如float、double) / The coordinate type (e.g., float, double)
Parameters
num_points要生成的点的总数 / Total number of points to generate
minmax坐标的最小和最大边界 / The minimum and maximum bounds for coordinates
Returns
std::vector<point_t<T>> 包含生成点的向量 / A vector containing the generated points
// 并行生成大量点 / Generate large number of points in parallel
minmax_t<point_t<float>> bounds({0,0,0}, {100,100,100});
auto points = generate_random_points_parallel<float>(1000000, bounds);
// 使用自定义边界并行生成点 / Generate points in parallel with custom bounds
minmax_t<point_t<double>> custom_bounds({-10,-10,-10}, {10,10,10});
auto custom_points = generate_random_points_parallel<double>(500000,
custom_bounds);

◆ operator<<()

template<typename T >
auto toolbox::types::operator<< ( std::ostream &  output_stream,
const point_t< T > &  pt 
) -> std::ostream &

point_t的流输出运算符 - 仅声明 / Stream output operator for point_t - Declaration Only

Parameters
output_stream输出流 / Output stream
pt要输出的点 / Point to output
Returns
对输出流的引用 / Reference to output stream

◆ transform_point_cloud()

template<typename T >
CPP_TOOLBOX_EXPORT auto toolbox::types::transform_point_cloud ( const point_cloud_t< T > &  cloud,
const Eigen::Matrix< T, 4, 4 > &  transform 
) -> point_cloud_t<T>

对点云应用变换矩阵(顺序版本)/ Apply transformation matrix to point cloud (sequential version)

Template Parameters
T坐标类型(如float、double) / The coordinate type (e.g., float, double)
Parameters
cloud输入点云 / Input point cloud
transform4x4变换矩阵 / 4x4 transformation matrix
Returns
point_cloud_t<T> 变换后的点云 / Transformed point cloud
// 创建旋转矩阵 / Create rotation matrix
Eigen::Matrix4f transform = Eigen::Matrix4f::Identity();
float angle = M_PI / 4; // 45度 / 45 degrees
transform(0,0) = std::cos(angle); transform(0,1) = -std::sin(angle);
transform(1,0) = std::sin(angle); transform(1,1) = std::cos(angle);
transform(0,3) = 10.0f; // X方向平移 / Translation in X
auto transformed = transform_point_cloud(cloud, transform);
CPP_TOOLBOX_EXPORT auto transform_point_cloud(const point_cloud_t< T > &cloud, const Eigen::Matrix< T, 4, 4 > &transform) -> point_cloud_t< T >
对点云应用变换矩阵(顺序版本)/ Apply transformation matrix to point cloud (sequential version)
Definition point_utils.hpp:229

◆ transform_point_cloud_inplace()

template<typename T >
CPP_TOOLBOX_EXPORT void toolbox::types::transform_point_cloud_inplace ( point_cloud_t< T > &  cloud,
const Eigen::Matrix< T, 4, 4 > &  transform 
)

原地变换点云(顺序版本)/ Transform point cloud in-place (sequential version)

Template Parameters
T坐标类型(如float、double) / The coordinate type (e.g., float, double)
Parameters
cloud要变换的点云(将被修改)/ Point cloud to transform (will be modified)
transform4x4变换矩阵 / 4x4 transformation matrix
point_cloud_t<float> cloud = load_point_cloud();
Eigen::Matrix4f transform = calculate_transformation();
// 原地变换,不创建新点云 / Transform in-place without creating new cloud
包含点和相关数据的点云类 / A point cloud class containing points and associated data
Definition point.hpp:268
CPP_TOOLBOX_EXPORT void transform_point_cloud_inplace(point_cloud_t< T > &cloud, const Eigen::Matrix< T, 4, 4 > &transform)
原地变换点云(顺序版本)/ Transform point cloud in-place (sequential version)
Definition point_utils.hpp:367

◆ transform_point_cloud_inplace_parallel()

template<typename T >
CPP_TOOLBOX_EXPORT void toolbox::types::transform_point_cloud_inplace_parallel ( point_cloud_t< T > &  cloud,
const Eigen::Matrix< T, 4, 4 > &  transform 
)

原地变换点云(并行版本)/ Transform point cloud in-place (parallel version)

Template Parameters
T坐标类型(如float、double) / The coordinate type (e.g., float, double)
Parameters
cloud要变换的点云(将被修改)/ Point cloud to transform (will be modified)
transform4x4变换矩阵 / 4x4 transformation matrix
point_cloud_t<float> large_cloud = load_large_point_cloud();
Eigen::Matrix4f transform = calculate_transformation();
// 原地并行变换 / Transform in-place in parallel
CPP_TOOLBOX_EXPORT void transform_point_cloud_inplace_parallel(point_cloud_t< T > &cloud, const Eigen::Matrix< T, 4, 4 > &transform)
原地变换点云(并行版本)/ Transform point cloud in-place (parallel version)
Definition point_utils.hpp:400

◆ transform_point_cloud_parallel()

template<typename T >
CPP_TOOLBOX_EXPORT auto toolbox::types::transform_point_cloud_parallel ( const point_cloud_t< T > &  cloud,
const Eigen::Matrix< T, 4, 4 > &  transform 
) -> point_cloud_t<T>

对点云应用变换矩阵(并行版本)/ Apply transformation matrix to point cloud (parallel version)

使用线程池并行处理大型点云,提高性能 / Uses thread pool to process large point clouds in parallel for better performance

Template Parameters
T坐标类型(如float、double) / The coordinate type (e.g., float, double)
Parameters
cloud输入点云 / Input point cloud
transform4x4变换矩阵 / 4x4 transformation matrix
Returns
point_cloud_t<T> 变换后的点云 / Transformed point cloud
// 对大型点云进行并行变换 / Transform large point cloud in parallel
point_cloud_t<float> large_cloud = load_large_point_cloud();
Eigen::Matrix4f transform = calculate_transformation();
auto transformed = transform_point_cloud_parallel(large_cloud, transform);
CPP_TOOLBOX_EXPORT auto transform_point_cloud_parallel(const point_cloud_t< T > &cloud, const Eigen::Matrix< T, 4, 4 > &transform) -> point_cloud_t< T >
对点云应用变换矩阵(并行版本)/ Apply transformation matrix to point cloud (parallel version)
Definition point_utils.hpp:269