以下是点云寻找最值对应点索引的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函数中,我们可以将一个点云传递给这些函数,并打印出对应的最大值和最小值,以及它们对应的点的索引

点云寻找最值对应点索引的C++代码

原文地址: https://www.cveoy.top/t/topic/ffz4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录