Esempio n. 1
0
File: main.cpp Progetto: Sebu/CG2
// 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;

  }
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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();
}
Esempio n. 4
0
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);

    }

}
Esempio n. 5
0
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);

	}

}
Esempio n. 6
0
void TriangleMesh::swapAllEdges() {
  const std::vector<Face*> faceListCopy = getFaceList();

  for(unsigned int i=0; i<faceListCopy.size(); ++i)
    swapEdge(*faceList[i]);
}