qhull 求取二维正方形数据包络 C++ 代码
时间: 2023-12-05 07:04:38 浏览: 73
以下是使用qhull库求取二维正方形数据包络的C++代码示例:
```c++
#include <iostream>
#include <vector>
#include "libqhullcpp/Qhull.h"
using namespace std;
using namespace orgQhull;
int main()
{
// 构造数据点
vector<Point2> points;
points.push_back(Point2(0, 0));
points.push_back(Point2(1, 0));
points.push_back(Point2(1, 1));
points.push_back(Point2(0, 1));
// 构造Qhull对象
Qhull qhull;
qhull.runQhull("", 2, points.data(), points.size(), "i Qt");
// 获取正方形包络顶点
vector<Point2> vertices;
for (QhullVertexSet::iterator it = qhull.vertexSet().begin(); it != qhull.vertexSet().end(); ++it)
{
Point2 point = (*it).point();
if (point[0] == 0 || point[0] == 1)
{
if (point[1] == 0 || point[1] == 1)
{
vertices.push_back(point);
}
}
}
// 输出结果
cout << "正方形包络顶点:" << endl;
for (vector<Point2>::iterator it = vertices.begin(); it != vertices.end(); ++it)
{
cout << (*it) << endl;
}
return 0;
}
```
与三维情况类似,这里使用libqhullcpp库来进行qhull计算,首先构造数据点,然后构造Qhull对象并运行qhull计算,最后从计算结果中提取正方形包络顶点并输出。这里采用的方法是根据正方形的特点来判断顶点是否在包络内。
阅读全文