コード例 #1
0
        private void calculaCentro()
        {
            double x = 0, y = 0, z = 0;

            foreach (Vertice v in list_va)
            {
                x += v.getX();
                y += v.getY();
                z += v.getZ();
            }

            x /= list_va.Count;
            y /= list_va.Count;
            z /= list_va.Count;

            centro.setX(x);
            centro.setY(y);
            centro.setZ(z);
        }
コード例 #2
0
        //carrega o objeto a partir de um arquivo obj
        public void carregar(string caminho)
        {
            StreamReader sr = File.OpenText(caminho);

            string[] linha;

            while (!sr.EndOfStream) //para cada linha do arquivo obj
            {
                linha = sr.ReadLine().Split(' ');

                //verificação do tipo da linha - v - vn - f
                if (linha[0].Equals("v"))//define um novo vertice
                {
                    Vertice v = new Vertice();

                    v.setX(Convert.ToDouble(linha[1].Replace('.', ',').Replace('E', 'e')));
                    v.setY(Convert.ToDouble(linha[2].Replace('.', ',').Replace('E', 'e')));
                    v.setZ(Convert.ToDouble(linha[3].Replace('.', ',').Replace('E', 'e')));

                    addVertice(v);
                }
                else if (linha[0].Equals("f"))//define uma nova face
                {
                    Face f = new Face();

                    f.addIndex(int.Parse(linha[1].Split('/')[0]));
                    f.addIndex(int.Parse(linha[2].Split('/')[0]));
                    f.addIndex(int.Parse(linha[3].Split('/')[0]));

                    addFace(f);
                }
            }

            sr.Close();

            calculaCentro();
            atualizaNormais();
        }