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); }
//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(); }