class QGrid3d : public QBBox3d
{
public:
//publid Datas
long int GridID;
QVector<int> includeGroupID;
QVector<int> includeFaceID;
bool includeFaces;
QVertex3d center;
};
//下面是第一次用到,沒問題
void QScene::InitGrids()
{
CalStepNum();
QGrid3d curGrid;
int i,j,k,currentID;
int steps = pow(2.0,stepNum);
QVertex3d orginalPoint = sceneBox.pMin;
float xDirStep = (sceneBox.pMax.x - sceneBox.pMin.x)/(float)steps;
float yDirStep = (sceneBox.pMax.y - sceneBox.pMin.y)/(float)steps;
float zDirStep = (sceneBox.pMax.z - sceneBox.pMin.z)/(float)steps;
QVertex3d orginalCenterpoint = QVertex3d(orginalPoint.x+xDirStep/2.0, orginalPoint.y+yDirStep/2.0, orginalPoint.z+zDirStep/2.0);
for (i=0; i<steps; i++)
for(j=0; j<steps; j++)
for (k=0; k<steps; k++)
{
currentID = i*steps*steps + j*steps +k;
curGrid.GridID = currentID;
curGrid.includeFaces = false;
curGrid.center = QVertex3d(orginalCenterpoint.x+xDirStep*i,
orginalCenterpoint.y+yDirStep*j,
orginalCenterpoint.z+zDirStep*k);
}
}
//下面是對它進行了修改,就出現了題目中的錯誤
void QScene::PutFacesintoGrid()
{
QGroup3d curGroup;
QFace3d curFace;
long int gridID;
CalDivValues(sceneBox.pMin.x, sceneBox.pMax.x, stepNum, xdivValue);
CalDivValues(sceneBox.pMin.y, sceneBox.pMax.y, stepNum, ydivValue);
CalDivValues(sceneBox.pMin.z, sceneBox.pMax.z, stepNum, zdivValue);
for (int i=0; i<numgroups; i++)
{
curGroup = groups.at(i);
for (int j =0; j<curGroup.numfaces; j++)
{
curFace = curGroup.m_ArrayFace[j];
CalGridID(curFace.faceCenter, gridID);
grids.at(gridID).includeGroupID.append(i);
grids.at(gridID).includeFaceID.append(j);
grids.at(gridID).includeFaces = true;
}
}
}
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。