Exemplo n.º 1
0
        private void init(IMesh mesh)
        {
            count = mesh.Vertices.Count;
            A     = new double[count];
            B     = new double[count];
            nextA = new double[count];
            nextB = new double[count];
            coef  = new double[count][];
            double    teta;
            IVector3D direction;

            for (int i = 0; i < count; i++)
            {
                int              vK     = mesh.VerticesKeys[i];
                int[]            vStart = mesh.Topology.GetVertexAdjacentVertices(vK);
                ITopologicVertex vertex = mesh.GetVertexWithKey(vK);

                A[i] = 1;
                B[i] = 0;

                coef[i] = new double[vStart.Length];

                for (int j = 0; j < vStart.Length; j++)
                {
                    ITopologicVertex neighbor = mesh.GetVertexWithKey(vStart[j]);
                    direction = neighbor.Position - vertex.Position;

                    teta = 1.0;
                    if (AuxiliarVectorField != null && AuxiliarVectorField.Length > 0)
                    {
                        if (AuxiliarVectorField.Length == count)
                        {
                            teta = IVector3D.AngleBetween(direction, new IVector3D(AuxiliarVectorField[i]));
                        }
                        else
                        {
                            teta = IVector3D.AngleBetween(direction, new IVector3D(AuxiliarVectorField[0]));
                        }
                    }

                    coef[i][j] = Math.Sqrt(Math.Sin(teta) * Math.Sin(teta) + Math.Pow(NeighborsContributionFactor, 2) * Math.Cos(teta) * Math.Cos(teta));
                }
            }

            Random rnd = new Random();

            for (int i = 0; i < RandomValuesPopulation; i++)
            {
                int idx = rnd.Next(0, count);

                for (int j = idx; j < idx + 10; j++)
                {
                    A[j] = 1;
                    B[j] = 1;
                }
            }
        }