QVector<unsignedint>ib_combined=ib_regular+ib_irregular;//DO NOT swap regular and irregular! iteration over ib_combined starting from index in ib_regular
intcount3=0;//counts other triangles with this vertex
intcount6=0;
intcount7=0;
for(intj=0;j<ib_combined.length();j++){
if(j!=i&&j!=i+1&&j!=i+2){
//for debugging // checking if patch is regular.
if(vb[ib_combined[j]].samePos(v3))count3++;
if(vb[ib_combined[j]].samePos(v6))count6++;
if(vb[ib_combined[j]].samePos(v7))count7++;
}
}
if(count3!=5||count6!=5||count7!=5){
qCWarning(log_subdiv)<<"Counts wrong! 3: "<<count3<<", 6: "<<count6<<", 7: "<<count7<<".\nEither this patch is not regular, or you didn't pass all neighboring triangles.";
}
QVector<unsignedint>patch;
patch.resize(12);
QVectorIterator<Triangle>it(triangles);
while(it.hasNext()){
Triangletriangle=it.next();
// These three vertices come from the triangle we're looking at
patch[3]=triangle.u_idx();
patch[6]=triangle.v_idx();
patch[7]=triangle.w_idx();
// These three vertices are those completing the three neighboring triangles
Triangle::Neighborsns=neighbors.value(triangle);
patch[2]=ns.uv.edge.c;
patch[10]=ns.vw.edge.c;
patch[4]=ns.wu.edge.c;
// TODO: there's a lot of repetition in the rest of this loop but for now it's good enough
// To get the two vertices at the top we go from the left neighbor to its top neighbor and the the top neighbor of that triangle