Esempio n. 1
0
void Render::renderiza(void)
{
    QPoint p1, p2, t;
    QList<QPair<QPointF,QPointF> > lista = interface.getTodasArestas();
    QPainter buff(buffer);
    QPainter back(backBuffer);

    buff.fillRect(buffer->rect(), Qt::white);
    buff.fillRect(buffer->rect(),Qt::transparent);
    back.fillRect(backBuffer->rect(), Qt::white);
    back.fillRect(backBuffer->rect(), Qt::transparent);


    buff.setPen(arestaScreen);

    for(int i = 0; i < lista.size() ; ++i)
    {
        p1 = transforma(lista[i].first);
        p2 = transforma(lista[i].second);

        buff.drawLine(p1,p2);

        back.setPen(arestaGrossaBack);
        back.drawLine(p1,p2);
        back.setPen(verticeGrossoBack);
        back.drawEllipse(p1,5,5);
        back.drawEllipse(p2,5,5);
    }
}
Esempio n. 2
0
void Render::renderizaArestas()
{
    QPainter buff(frontBuffer);
    QPoint p;
    HalfEdge *partida;
    HalfEdge::iterator it;

    buff.setPen(vizinhoScreen);

    if(vsel != NULL)
        partida = vsel->getEdge();
    if(hsel != NULL)
        partida = hsel;
    if(fsel != NULL)
        partida = fsel->getHalfEdge();

    if(vsel != NULL || hsel != NULL)
    {
        for(it = partida->v_begin(); it != partida->v_end(); ++it)
        {
            buff.drawLine(transforma(it->getOrigem()->getPoint()), transforma(it->getDestino()->getPoint()));
        }
        if(hsel != NULL)
        {
            partida = partida->getTwin();
            for(it = partida->v_begin(); it != partida->v_end(); ++it)
            {
                buff.drawLine(transforma(it->getOrigem()->getPoint()), transforma(it->getDestino()->getPoint()));
            }
        }else
            buff.drawLine(transforma(partida->getOrigem()->getPoint()), transforma(partida->getDestino()->getPoint()));
    }
    QVector<HalfEdge *> *v;
    if(fsel != NULL)
    {
        if(interface.isExterna(fsel))
            v = &(interface.componentesFaceExterna);
        else
        {
            v = new QVector<HalfEdge *>();
            v->push_back(partida->getTwin());
        }
        for(int i = 0; i < v->size(); ++i)
        {
            partida = v->at(i)->getTwin();

            for(it = partida->f_begin(); it != partida->f_end(); ++it)
            {
                buff.drawLine(transforma(it->getOrigem()->getPoint()), transforma(it->getDestino()->getPoint()));
            }
            buff.drawLine(transforma(partida->getOrigem()->getPoint()), transforma(partida->getDestino()->getPoint()));
        }
        if(!interface.isExterna(fsel))
            delete v;
    }

}
Esempio n. 3
0
void Render::arestaSelecionada()
{
     QPainter p(frontBuffer);

    if(hsel == NULL)
        return;

    p.setPen(selecionadoScreen);
    p.drawLine(transforma(hsel->getOrigem()->getPoint()), transforma(hsel->getDestino()->getPoint()));

}
Esempio n. 4
0
void Render::verticeSelecionado()
{
    QPainter p(frontBuffer);

    if(vsel == NULL)
        return;

    p.setPen(selecionadoScreen);
    p.drawEllipse(transforma(vsel->getPoint()),5,5);

}
Esempio n. 5
0
void Render::renderizaFace(HalfEdge *h,QImage* b,QPen pen)
{
    QPainter buff(b);
    QPainterPath *path;
    QPoint p;
    HalfEdge::iterator it;

    buff.setPen(pen);

    path = new QPainterPath();
    p = transforma(h->getOrigem()->getPoint());
    path->moveTo(p.x(),p.y());
    for(it = h->f_begin(); it !=  h->f_end(); ++it)
    {
        p = transforma(it->getOrigem()->getPoint());
        path->lineTo(p.x(),p.y());
    }
    p = transforma(h->getOrigem()->getPoint());
    path->lineTo(p.x(),p.y());

    buff.fillPath(*path,pen.brush());
    delete path;
}
Esempio n. 6
0
File: triePat.c Progetto: gvs11/BCC
int main (int argc, char *argv[]){

	ApontadorT arvT;
	ApontadorP arvP;
	int elem, bit, tipo;
	int chave[tam];
	int chave_busca[tam];
	char op;

	arvT = inicializa_trie (arvT);
	arvP = inicializa_pat (arvP);
	tipo = 0;
	
	while (op != 'f') {
	
		scanf ("%c" , &op);

		if (op == 'i')
		{
			getchar();
			scanf ("%d" , &elem);
		}

		if (op == 'b')
		{
			getchar();
			scanf ("%d" , &elem);
			getchar();
			scanf ("%d" , &bit);
		}
		
		if (op == 'f')
			elem = 1;

		switch (op)
		{
			case ('i'):
				
				dtb (elem, chave);

				if (!tipo) {

					if (confere_trie (arvT, elem)) {
						arvT = insere_trie (arvT, elem, 0, chave);
						getchar();
						imprime_trie (arvT);
						printf ("\n");
					}

				}
				else { 
					if (confere_pat (arvP, elem)) {
						arvP->esq = insere_pat (arvP, arvP->esq, elem, chave, arvP->esq->bit); 
						getchar();
						imprime_pat (arvP->esq);
						printf ("\n");
					}
				}

				break;
		
			case ('b'):
				
				dtb (elem, chave);
				busca_chave (chave, chave_busca, bit);

				if (!tipo)
					busca_trie (arvT, 0, elem, bit, chave_busca);
				else		
					busca_pat (arvP->esq, 0, elem, bit, chave_busca);					

				break;
		
			case ('t'):

				transforma (arvP, arvT);
				arvT = inicializa_trie (arvT);
				tipo = 1;

				break;
	
			case ('f'):
				
				break;

			case ('e'):

				break;
		}   
	}	
		
	return 0;  
}