示例#1
0
        /**
         * Debe recibir un Doubly conected y rellenar
         * **/
        public void ConstruirObjeto(DoublyConectedEdgeList l, Vector3 c)
        {
            //rellono los indices

            List <Vertex> vertices = l.getVertices();

            vPos   = new Vector3[vertices.Count];
            colors = new Vector3[vertices.Count];

            for (int i = 0; i < vertices.Count; i++)
            {
                vPos[i]   = vertices[i].getCoordenadas();
                colors[i] = c;
                //  Console.WriteLine("Vertice: " + i + " " + vPos[i].ToString());
            }

            List <face> caras = l.getCaras();
            List <int>  puntos;
            List <int>  aux = new List <int>();

            foreach (face f in caras)
            {
                puntos = f.getVertices();
                for (int i = 0; i < puntos.Count; i++)
                {
                    aux.Add(puntos[i]);
                }
            }
            indices = new int[aux.Count];
            for (int i = 0; i < aux.Count; i++)
            {
                indices[i] = aux[i];
            }
        }
示例#2
0
        private void CrearVertice(DoublyConectedEdgeList mesh, string[] lineSplit)
        {
            Vector3 vertice = new Vector3();

            vertice[0] = float.Parse(lineSplit[1], NumberStyles.Number);
            vertice[1] = float.Parse(lineSplit[2], NumberStyles.Number);
            vertice[2] = float.Parse(lineSplit[3], NumberStyles.Number);
            mesh.CrearVertice(vertice);
            //Para control
            Console.Write("vertice creado: ");
            Console.WriteLine(vertice);
        }
示例#3
0
        //___________________________________________________________________
        #region cilindro
        public ObjetoGrafico crearCilindro()
        {
            DoublyConectedEdgeList l;
            String        ubicacion;
            ObjFileParser parserPrueba;
            ObjetoGrafico obj;
            Vector3       traslacion = new Vector3(0.0f, 1.0f, 1.0f);

            traslaciones.Add(traslacion);
            l         = new DoublyConectedEdgeList();
            ubicacion = "C:/Users/Agus/Documents/Ejercicio1/cubo2.obj";

            parserPrueba = new ObjFileParser(l, ubicacion);
            l.mostrarfigura();
            Vector3 color = new Vector3(0.0f, 0.0f, 1.0f);

            obj = new ObjetoGrafico(l, color);
            return(obj);
        }
示例#4
0
        private void CrearCara(DoublyConectedEdgeList mesh, string[] lineSplit)
        {
            List <int> vertices = new List <int>();

            for (int j = 1; j < lineSplit.Length; j++)
            {
                vertices.Add(int.Parse(lineSplit[j]) - 1);
            }
            //  Console.WriteLine(" ya cree los vertices ahora los uno");
            int cara = mesh.crearCara(vertices);

            //prueba
            //creo edge
            int e01 = mesh.crearLado(vertices[0], vertices[1]);

            mesh.getLados()[0].setCaraIncidente(cara);
            int v0 = vertices[0];

            mesh.getVertices()[v0].setEdgeIncidente(e01);
            mesh.getCaras()[cara].setHalfEdgeIncidente(e01);
            int edgeInicial = e01;
            int n           = vertices.Count;
            //   Console.WriteLine("creando cara {0}", cara);
            int i = 1;

            for (i = 1; i < n; i++)        //Se unen  las aristas para formar la cara.
            {
                int e12 = mesh.crearLado(vertices[i], vertices[(i + 1) % n]);

                mesh.getLados()[e12].setCaraIncidente(cara);
                mesh.getVertices()[vertices[i]].setEdgeIncidente(e12);
                mesh.getLados()[e01].setEdgeSiguiente(e12);
                mesh.getLados()[e12].setEdgePrevio(e01);
                e01 = e12;
                //Console.WriteLine("Aca llego2");
            }
            //  Console.WriteLine("salio del while");
            mesh.getLados()[e01].setEdgeSiguiente(edgeInicial);
            //Console.WriteLine("setio previo");
            mesh.getLados()[edgeInicial].setEdgePrevio(e01);
        }
示例#5
0
        public ObjFileParser(DoublyConectedEdgeList mesh, String fileName)
        {
            String line;

            String[]     lineSplit;
            StreamReader file = new StreamReader(fileName);

            line = file.ReadLine();
            while (line != null)
            {
                line = line.Trim(); //Saco espacios en blanco.
                if ((line.Length != 0) && (!line[0].Equals(COMMENT)))
                {                   //Si no es comentario
                    line      = line.Replace('.', ',');
                    lineSplit = line.Split(SEPARATOR, StringSplitOptions.RemoveEmptyEntries);
                    if (lineSplit[0].Equals(VERTEX))
                    {
                        //  System.Console.WriteLine("vertices:/n ");
                        //    mostrarContenido(lineSplit);
                        CrearVertice(mesh, lineSplit);
                    }
                    else
                    if (lineSplit[0].Equals(FACE))
                    {
                        CrearCara(mesh, lineSplit);
                        //   System.Console.WriteLine("caras :/n ");
                        //  mostrarContenido(lineSplit);
                    }
                }

                line = file.ReadLine();
            }
            file.Close();
            Console.WriteLine("Estoy en el parser ");
            List <Vertex> vertices = mesh.getVertices();

            for (int i = 0; i < vertices.Count; i++)
            {
                Console.WriteLine("vertice  " + i + vertices[i].getCoordenadas().ToString());
            }
        }
示例#6
0
        public ObjetoGrafico crear(string u, Vector3 posicion, Vector3 rotacion, Vector3 c)
        {
            DoublyConectedEdgeList l;
            String        ubicacion;
            ObjFileParser parserPrueba;
            ObjetoGrafico obj;

            Vector3 traslacion = posicion;

            l         = new DoublyConectedEdgeList();
            ubicacion = u;

            parserPrueba = new ObjFileParser(l, u);
            l.setTraslacion(posicion);
            l.setRotacion(rotacion);
            Vector3 color = c;

            l.setColor(color);
            obj = new ObjetoGrafico(l, color);
            return(obj);
        }
示例#7
0
 public ObjetoGrafico(DoublyConectedEdgeList l, Vector3 c)
 {
     estructura = l;
     Console.Write("hola estoy en obj grafico");
     ConstruirObjeto(l, c);
 }