Vector 向量中的采样点

Vector 向量中的采样点,vector,3d,geometry,mesh,sampling,Vector,3d,Geometry,Mesh,Sampling,我有一个向量,包含(x,y,z)的值,即3D中的一个点。从_pts[0]开始,我想选择那些之前选择的点之间的距离大于采样半径的点 这是我的代码,但显然有些地方不对劲,因为我选择了很多点,而不是仅仅选择了几个点。 有人能看出我做错了什么吗?也许您需要更多的代码来查看可能遗漏的内容,但我也希望您能提供有关如何实现此功能的任何想法 float distance; bool distanceIsOk; //PICK A POINT IN VECTOR _pts for (int cPIdx = 0;

我有一个向量,包含(x,y,z)的值,即3D中的一个点。从_pts[0]开始,我想选择那些之前选择的点之间的距离大于采样半径的点

这是我的代码,但显然有些地方不对劲,因为我选择了很多点,而不是仅仅选择了几个点。 有人能看出我做错了什么吗?也许您需要更多的代码来查看可能遗漏的内容,但我也希望您能提供有关如何实现此功能的任何想法

float distance;
bool distanceIsOk;

//PICK A POINT IN VECTOR _pts
for (int cPIdx = 0; cPIdx < _pts.size(); cPIdx++) {
    distanceIsOk = true;
    //CHECK DISTANCE AGAINST PREVIOUSLY PICKED POINTS
    for (int dPIdx = 0; dPIdx < indeces.size(); dPIdx++) {
        distance = sqrt(
                        (_pts[cPIdx].v[0] - _pts[dPIdx].v[0])*(_pts[cPIdx].v[0] - _pts[dPIdx].v[0]) +
                        (_pts[cPIdx].v[1] - _pts[dPIdx].v[1])*(_pts[cPIdx].v[1] - _pts[dPIdx].v[1]) +
                        (_pts[cPIdx].v[2] - _pts[dPIdx].v[2])*(_pts[cPIdx].v[2] - _pts[dPIdx].v[2])
                        );
        //IF DISTANCE IS <= SUBSAMPLERADIUS FOR AT LEAST ONE PREVIOUSLY SELECTED POINT
        if (distance <= subsampleRadius) {
            //DISCARD THE POINT
            distanceIsOk = false;
            dPIdx += indeces.size();
        }
    }
    //OTHERWISE INCLUDE THAT POINT
    if (distanceIsOk == true) {
        indeces.push_back(cPIdx);
    }
}
浮动距离;
布尔距离;
//在向量中选择一个点
对于(int cPIdx=0;cPIdx<_pts.size();cPIdx++){
距离k=真;
//根据以前拾取的点检查距离
对于(int-dPIdx=0;dPIdx//如果距离则发现错误。而不是

        distance = sqrt(
                        (_pts[cPIdx].v[0] - _pts[dPIdx].v[0])*(_pts[cPIdx].v[0] - _pts[dPIdx].v[0]) +
                        (_pts[cPIdx].v[1] - _pts[dPIdx].v[1])*(_pts[cPIdx].v[1] - _pts[dPIdx].v[1]) +
                        (_pts[cPIdx].v[2] - _pts[dPIdx].v[2])*(_pts[cPIdx].v[2] - _pts[dPIdx].v[2])
应该是

        distance = sqrt(
                        (_pts[cPIdx].v[0] - _pts[indeces[dPIdx]].v[0])*(_pts[cPIdx].v[0] - _pts[indeces[dPIdx]].v[0]) +
                        (_pts[cPIdx].v[1] - _pts[indeces[dPIdx]].v[1])*(_pts[cPIdx].v[1] - _pts[indeces[dPIdx]].v[1]) +
                        (_pts[cPIdx].v[2] - _pts[indeces[dPIdx]].v[2])*(_pts[cPIdx].v[2] - _pts[indeces[dPIdx]].v[2])

一个可行的代码…你的意思是发布整个代码?如果是的话,我不可能是一个大代码。我认为这个想法表达得很清楚。我认为问题没有精确定义。如果我想象三个点:A、B和C,A和B比你的取样器更接近,C离A和B更远,距离比取样器更大ius,算法应该返回什么,{A,C}或{B,C}?@Archie保存A。然后在以前保存的点上检查B。在这种情况下,比较A和B之间的距离。是距离,所以你必须重新表述你的问题:只找到一个(任何)满足条件的可能点集。因为正如您所解释的,算法的结果将取决于输入列表中点的顺序。