Beispiel #1
0
 public static void addArco(Arco arco)
 {
     if (numArcos < _MAX_ARCOS_GRAFO)
     {
         arcos[numArcos] = arco;
         numArcos++;
     }
     else
     {
         Console.Write("Número de arcos chegou ao limite\n");
     }
 }
Beispiel #2
0
        static void desenhaArco(Arco arco)
        {
            No noi, nof;

            // arco vertical
            if (Grafos.nos[arco.noi].y < Grafos.nos[arco.nof].y)
            {
                noi = Grafos.nos[arco.noi];
                nof = Grafos.nos[arco.nof];
            }
            else
            {
                nof = Grafos.nos[arco.noi];
                noi = Grafos.nos[arco.nof];
            }

            double compProj   = Math.Sqrt(Math.Pow(nof.x - noi.x, 2) + Math.Pow(nof.y - noi.y, 2));
            double des        = nof.z - noi.z;
            double comp       = Math.Sqrt(Math.Pow(compProj, 2) + Math.Pow(des, 2));
            double raio       = (noi.largura) / 2.0;
            double inclinicao = Math.Atan2(des, compProj);
            double orientacao = Math.Atan2((nof.y - noi.y), (nof.x - noi.x));

            Gl.glPushMatrix();
            Gl.glTranslatef(noi.x, noi.y, noi.z);
            Gl.glPolygonMode(Gl.GL_FRONT_AND_BACK, Gl.GL_FILL);
            Gl.glRotatef(graus(orientacao), 0, 0, 1);
            Gl.glRotatef((float)inclinicao, 0, 0, 1);
            Gl.glRotatef(graus(Math.PI / 2.0 - inclinicao), 0, 1, 0);
            material(Estrutura.tipo_material.red_plastic);
            if (iluminaLigacao(noi.id, nof.id))
            {
                material(Estrutura.tipo_material.azul);
            }
            Glu.gluCylinder(modelo.quad, raio / 2.0, raio / 2.0, comp, 38, 8);
            Gl.glPopMatrix();
        }
Beispiel #3
0
 public void imprimeArco(Arco arco)
 {
     Console.Write("No início:" + arco.noi + "Nó final:" + arco.nof + "Peso:" + arco.peso + "Largura:" + arco.largura);
 }
Beispiel #4
0
        static void desenhaNo(int no)
        {
            bool  norte, sul, este, oeste;
            float larguraNorte, larguraSul, larguraEste, larguraOeste;
            Arco  arco = Grafos.arcos[0];
            No    noi = Grafos.nos[no], nof;

            norte = sul = este = oeste = true;


            Gl.glPushName(no);
            Gl.glPushMatrix();
            Gl.glTranslatef(Grafos.nos[no].x, Grafos.nos[no].y, Grafos.nos[no].z);
            Gl.glPolygonMode(Gl.GL_FRONT_AND_BACK, Gl.GL_FILL);
            Gl.glColor3f(0, 0, 1);
            Glut.glutSolidSphere((Grafos.nos[no].largura) / 2.0, 50, 40);//nao consegui
            Gl.glPopMatrix();
            Gl.glPopName();


            for (int i = 0; i < Grafos.numArcos; arco = Grafos.arcos[++i])
            {
                if (arco.noi == no)
                {
                    nof = Grafos.nos[arco.nof];
                }
                else
                if (arco.nof == no)
                {
                    nof = Grafos.nos[arco.noi];
                }
                else
                {
                    continue;
                }
                if (noi.x == nof.x)
                {
                    if (noi.y < nof.y)
                    {
                        norte        = false;
                        larguraNorte = arco.largura;
                    }
                    else
                    {
                        sul        = false;
                        larguraSul = arco.largura;
                    }
                }
                else
                if (noi.x < nof.x)
                {
                    oeste        = false;
                    larguraOeste = arco.largura;
                }
                else
                {
                    este        = false;
                    larguraEste = arco.largura;
                }
                if (norte && sul && este && oeste)
                {
                    return;
                }
            }
        }