// naja der name sagt es schon tasten abfragen // "normale tasten" GLvoid keyboard ( unsigned char key, int x, int y ) { switch ( key ) { case 27: exit(0); break; case 'a': apoint.z -= 6.2f; break; case 'y': apoint.z += 6.2f; break; case 'o': optimize(*model2, *model); cout << "qual: " << model2->erep/model2->crep << endl; break; case 's': swapEdge(model2->edges[number], *model2, *model); break; case 'c': collapseEdge(model2->edges[number], *model2, *model ); cout << number << endl; break; case 'd': splitEdge(model2->edges[number], *model2, *model ); break; case 'w': roty += 5.5f; break; default: break; } }
void deleteMinHeap(heap* h) { if(h==NULL) return; swapEdge(h,0,(h->size)-1); h->size = h->size -1; heapify(h,0,h->size); return; }
void Mesh::optimize(bool topological, int nSmooth) { int i; if (topological) { calcNeigTria(); calcNeigbor(); for (int i = 0; i < 5; i++) smoothing(); deleteVertex(); for(i=0;i<5;i++) smoothing(); mergeVertex(); mergeVertex(); mergeVertex(); for(i=0;i<5;i++) smoothing(); splitVertex(); splitVertex(); splitVertex(); swapEdge(); for(i=0;i<5;i++) smoothing(); swapEdge(); for(i=0;i<5;i++) smoothing(); swapEdge(); for(i=0;i<5;i++) smoothing(); swapEdge(); } for(i=0;i<nSmooth;i++) smoothing(); }
void heapify(heap* h,int index,int size) { int lidx = getleftChild(index); int ridx = getRightChild(index); int smallestidx; while(lidx <size && ridx < size) { smallestidx = getMinValueIdx(h,lidx,ridx); if(h->edge[smallestidx]->length > h->edge[index]->length) { return ; } swapEdge(h,smallestidx,index); index = smallestidx; lidx = getleftChild(index); ridx = getRightChild(index); } }
void modifyHeap(heap* h, int ref, float newval) { int i; int parent; int newval_t; for(i=0; i<h->size; i++) { if(h->edge[i]->source == ref) { if(h->edge[i]->length > newval) { h->edge[i]->length = newval; } else { /*Do nothing*/ return; } break; } } #ifdef DEBUG printf("Modify Heap: Source:%d Length:%f\n",h->edge[i]->source,h->edge[i]->length); #endif parent = getParent(i); while(parent && (h->edge[i]->length < h->edge[parent]->length)) { swapEdge(h,i,parent); i=parent; parent = getParent(i); } }
void TriangleMesh::swapAllEdges() { const std::vector<Face*> faceListCopy = getFaceList(); for(unsigned int i=0; i<faceListCopy.size(); ++i) swapEdge(*faceList[i]); }