点云寻找最值对应点索引的C++代码
以下是点云寻找最值对应点索引的C++代码:
#include <iostream>
#include <vector>
#include <algorithm>
struct Point
{
double x, y, z;
};
int FindMaxXIndex(const std::vector<Point>& points)
{
int max_index = 0;
double max_x = points[0].x;
for (int i = 1; i < points.size(); i++)
{
if (points[i].x > max_x)
{
max_x = points[i].x;
max_index = i;
}
}
return max_index;
}
int FindMinXIndex(const std::vector<Point>& points)
{
int min_index = 0;
double min_x = points[0].x;
for (int i = 1; i < points.size(); i++)
{
if (points[i].x < min_x)
{
min_x = points[i].x;
min_index = i;
}
}
return min_index;
}
int FindMaxYIndex(const std::vector<Point>& points)
{
int max_index = 0;
double max_y = points[0].y;
for (int i = 1; i < points.size(); i++)
{
if (points[i].y > max_y)
{
max_y = points[i].y;
max_index = i;
}
}
return max_index;
}
int FindMinYIndex(const std::vector<Point>& points)
{
int min_index = 0;
double min_y = points[0].y;
for (int i = 1; i < points.size(); i++)
{
if (points[i].y < min_y)
{
min_y = points[i].y;
min_index = i;
}
}
return min_index;
}
int FindMaxZIndex(const std::vector<Point>& points)
{
int max_index = 0;
double max_z = points[0].z;
for (int i = 1; i < points.size(); i++)
{
if (points[i].z > max_z)
{
max_z = points[i].z;
max_index = i;
}
}
return max_index;
}
int FindMinZIndex(const std::vector<Point>& points)
{
int min_index = 0;
double min_z = points[0].z;
for (int i = 1; i < points.size(); i++)
{
if (points[i].z < min_z)
{
min_z = points[i].z;
min_index = i;
}
}
return min_index;
}
int main()
{
std::vector<Point> points = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
int max_x_index = FindMaxXIndex(points);
int min_x_index = FindMinXIndex(points);
int max_y_index = FindMaxYIndex(points);
int min_y_index = FindMinYIndex(points);
int max_z_index = FindMaxZIndex(points);
int min_z_index = FindMinZIndex(points);
std::cout << "Max X: " << points[max_x_index].x << " at index " << max_x_index << "\n";
std::cout << "Min X: " << points[min_x_index].x << " at index " << min_x_index << "\n";
std::cout << "Max Y: " << points[max_y_index].y << " at index " << max_y_index << "\n";
std::cout << "Min Y: " << points[min_y_index].y << " at index " << min_y_index << "\n";
std::cout << "Max Z: " << points[max_z_index].z << " at index " << max_z_index << "\n";
std::cout << "Min Z: " << points[min_z_index].z << " at index " << min_z_index << "\n";
return 0;
}
这段代码定义了一个Point结构体来表示点的坐标,然后实现了六个函数来分别查找点云中X、Y、Z坐标的最大值和最小值对应的点的索引。在main函数中,我们可以将一个点云传递给这些函数,并打印出对应的最大值和最小值,以及它们对应的点的索引
原文地址: https://www.cveoy.top/t/topic/ffz4 著作权归作者所有。请勿转载和采集!