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"); } }
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(); }
public void imprimeArco(Arco arco) { Console.Write("No início:" + arco.noi + "Nó final:" + arco.nof + "Peso:" + arco.peso + "Largura:" + arco.largura); }
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; } } }