Я отладил мою другую проблему назад, в конструктор MyMesh
. В этом коде:
if (hollow) {
numTriangles = n*8;
triangles=new MyTriangle[numTriangles];
if (smooth) numSurfacePoints=n*8;
else numSurfacePoints=n*12;
surfacePoints=new SurfacePoint[numSurfacePoints];
}else {
numTriangles = n*4;
triangles=new MyTriangle[numTriangles];
if (smooth){
numSurfacePoints=n*4;
surfacePoints=new SurfacePoint[numSurfacePoints];
surfacePoints[n*4]=SurfacePoint(vector3(0,0,1),vector3(0,0,1));
surfacePoints[n*4+1]=SurfacePoint(vector3(0,0,-1),vector3(0,0,-1));
}else{
numSurfacePoints=n*6;
surfacePoints=new SurfacePoint[numSurfacePoints];
surfacePoints[n*6]=SurfacePoint(vector3(0,0,1),vector3(0,0,1));
surfacePoints[n*6+1]=SurfacePoint(vector3(0,0,-1),vector3(0,0,-1));
}
}
Я определяю необходимые точки поверхности и треугольники для сетки. В bools "hollow" и "smooth" указано, нужно ли мне отверстие в конусе, или если нормали такие же, но я думаю, что это не имеет значения.
Проблема в том, что: если hollow == false, он что-то делает не так, но не вылетает, он даже позволяет поместить значения в массивы, но когда я пытаюсь сделать это следующим образом:
for(int i=0;i<numSurfacePoints;i++){
std::cout<<"vertex "<<i<<"-> pos:"<<surfacePoints[i].pos.x<<" "<<
surfacePoints[i].pos.y<<" "<<surfacePoints[i].pos.z<<
" norm:"<<surfacePoints[i].norm.x<<" "<<surfacePoints[i].norm.y<<
" "<<surfacePoints[i].norm.z<<"\n";
}
выдает исключение bad_alloc, когда i = 0.
кроме того, было время, когда верхний сегмент кода бросал bad_alloc на оператора new, но эта проблема только что решилась сама собой, но, возможно, она актуальна.
Кто-нибудь может мне помочь?