/// <summary>
 /// Imprime no CONSOLE as coordenadas por pontos
 /// </summary>
 /// <param name="tempPrint"></param>
 protected static void PrintPoints(BasicStructs.Point tempPrint, int lastValed)
 {
     if (Config)
     {
         Console.WriteLine("{0} --> x:{1}, y:{2}, z:{3}", ++lastValed, tempPrint.x, tempPrint.y, tempPrint.z);
     }
 }
Example #2
0
        public static List <int> DoPoc_GhostStructToNativeStruct()
        {
            Console.WriteLine("DoPoc_GhostStructToNativeStruct");
            //Representa as posições do CUBO FANTASMA
            List <BasicStructs.Point> ghostCube = new List <BasicStructs.Point>();

            //Path do local de execução do executável
            string path = System.Environment.CurrentDirectory;
            ExtendedStreamReader ghostCubeFile = new ExtendedStreamReader(path + @"\cuboFantasma.dat", new Guid(), false);
            //Carrega CUBO FANTASMA
            string line = string.Empty;

            while ((line = ghostCubeFile.ReadLine()) != null)
            {
                string[] data = line.Split('\t');                           //separa informações através do caracter TAB
                data = data.Where(x => !string.IsNullOrEmpty(x)).ToArray(); //limpa eventuais espaços em branco

                BasicStructs.Point temp = new BasicStructs.Point();
                temp.x = Convert.ToInt16(data[0]);
                temp.y = Convert.ToInt16(data[1]);
                temp.z = Convert.ToInt16(data[2]);
                ghostCube.Add(temp);
            }
            ghostCubeFile.Close();

            int        cordX      = 0;
            int        cordY      = 0;
            int        cordZ      = 0;
            List <int> newSequece = new List <int>();

            Console.WriteLine("De: ");
            //Motor de busca, ele retorna posição do INDICE da lista, em relação a condição de busca
            ExtendedStreamReader structOfSimulation = new ExtendedStreamReader(path + @"\00003.dat", new Guid(), false);

            //Carrega ESTRUTURA SIMULADA
            line = string.Empty;
            while ((line = structOfSimulation.ReadLine()) != null)
            {
                string[] data = line.Split('\t');                           //separa informações através do caracter TAB
                data = data.Where(x => !string.IsNullOrEmpty(x)).ToArray(); //limpa eventuais espaços em branco

                cordX = Convert.ToInt16(data[0]);
                cordY = Convert.ToInt16(data[1]);
                cordZ = Convert.ToInt16(data[2]);

                newSequece.Add(ghostCube.FindIndex(coord => coord.x == cordX && coord.y == cordY && coord.z == cordZ) + 1);

                Console.WriteLine("{0} {1} {2}", cordX, cordY, cordZ);
            }

            //Print a RESULTADO DA CONFIGURACAO
            Console.Write("Para: ");
            foreach (int item in newSequece)
            {
                Console.Write("{0} ", item);
            }
            Console.WriteLine();

            return(newSequece);
        }
        private static List <BasicStructs.Point> TransitionTrajectoryToStructsWithBaias(List <BasicStructs.Point> points, int difX, int difY, int difZ)
        {
            //corrige baias
            if (difX == 2)
            {
                difX = 0;
            }
            else
            {
                difX = -1;
            }

            if (difY == 2)
            {
                difY = 0;
            }
            else
            {
                difY = -1;
            }

            if (difZ == 2)
            {
                difZ = 0;
            }
            else
            {
                difZ = -1;
            }

            List <BasicStructs.Point> ret = new List <BasicStructs.Point>();

            int majorX = 0, minusX = 0;
            int majorY = 0, minusY = 0;
            int majorZ = 0, minusZ = 0;

            //Transition
            for (int i = 0; i < points.Count(); i++)
            {
                BasicStructs.Point temp = new BasicStructs.Point();
                temp.x = points[i].x - difX;
                temp.y = points[i].y - difY;
                temp.z = points[i].z - difZ;
                ret.Add(temp);

                //check dif em relação as extremidades X,Y,Z
                MaxMin(temp, ref majorX, ref minusX, ref majorY, ref minusY, ref majorZ, ref minusZ);
            }


            //Console.WriteLine("\t X:{0},{1} Y:{2},{3} Z:{4},{5}", minusX, majorX, minusY, majorY, minusZ, majorZ);
            //int difPosX = (minusX + majorX), difPosY = (minusY + majorY), difPosZ = (minusZ + majorZ);
            //Console.WriteLine("\t X:{0} Y:{1} Z:{2}", difPosX, difPosY, difPosZ);
            //Console.WriteLine();

            return(ret);
        }
Example #4
0
        public static List <BasicStructs.Point> DoNativeStructToGhostStruct(List <int> nativeStruct)
        {
            //Representa a estrutura do CUBO FANTASMA
            List <BasicStructs.Point> ghostCube = new List <BasicStructs.Point>();

            //Representa qual linha foi escolhida, no arquivo de configuração
            int[] seqToMakeNewStruct = new int[27];
            //Representa a nova estrutura a ser gerada
            List <BasicStructs.Point> newStruct = new List <BasicStructs.Point>();

            //Path do local de execução do executável
            string path = System.Environment.CurrentDirectory;
            ExtendedStreamReader ghostCubeFile = new ExtendedStreamReader(path + @"\cuboFantasma.dat", new Guid(), false);


            //Leitura das COORDENADAS BASICAS para os 27 monomeros(coordenadas estabelecidas arbitrariamente, mas fixas)
            string line = string.Empty;

            while ((line = ghostCubeFile.ReadLine()) != null)
            {
                string[] data = line.Split('\t');                           //separa informações através do caracter TAB
                data = data.Where(x => !string.IsNullOrEmpty(x)).ToArray(); //limpa eventuais espaços em branco

                BasicStructs.Point temp = new BasicStructs.Point();
                temp.x = Convert.ToInt16(data[0]);
                temp.y = Convert.ToInt16(data[1]);
                temp.z = Convert.ToInt16(data[2]);
                ghostCube.Add(temp);
            }
            ghostCubeFile.Close();

            //Gera mapeamento da nova estrutura
            int ik = 0;

            foreach (int item in nativeStruct)
            {
                seqToMakeNewStruct[ik] = item;
                ik++;
            }

            //Guardar as coordenadas para cada monomero da ie configuracao desejada
            for (int ipos = 0; ipos < 27; ipos++)
            {
                BasicStructs.Point temp = new BasicStructs.Point();

                int imon = seqToMakeNewStruct[ipos] - 1;
                temp.x = ghostCube[imon].x;
                temp.y = ghostCube[imon].y;
                temp.z = ghostCube[imon].z;

                newStruct.Add(temp);
            }

            return(newStruct);
        }
        private static void MaxMin(BasicStructs.Point temp, ref int majorX, ref int minusX, ref int majorY, ref int minusY, ref int majorZ, ref int minusZ)
        {
            //check dif em relação as extremidades X
            majorX = Math.Max(majorX, temp.x);
            minusX = Math.Min(minusX, temp.x);

            //check dif em relação as extremidades Y
            majorY = Math.Max(majorY, temp.y);
            minusY = Math.Min(minusY, temp.y);

            //check dif em relação as extremidades Z
            majorZ = Math.Max(majorZ, temp.z);
            minusZ = Math.Min(minusZ, temp.z);
        }
Example #6
0
        public static List <int> DoGhostStructToNativeStruct(List <BasicStructs.Point> trajectoryToStruct, string nameFileGhostCube)
        {
            //Representa as posições do CUBO FANTASMA
            List <BasicStructs.Point> ghostCube = new List <BasicStructs.Point>();

            //Path do local de execução do executável
            string path = System.Environment.CurrentDirectory;
            ExtendedStreamReader ghostCubeFile = new ExtendedStreamReader(path + @"\" + nameFileGhostCube, new Guid(), false);
            //Carrega CUBO FANTASMA
            string line = string.Empty;

            while ((line = ghostCubeFile.ReadLine()) != null)
            {
                string[] data = line.Split('\t');                           //separa informações através do caracter TAB
                data = data.Where(x => !string.IsNullOrEmpty(x)).ToArray(); //limpa eventuais espaços em branco

                BasicStructs.Point temp = new BasicStructs.Point();
                temp.x = Convert.ToInt16(data[0]);
                temp.y = Convert.ToInt16(data[1]);
                temp.z = Convert.ToInt16(data[2]);
                ghostCube.Add(temp);
            }
            ghostCubeFile.Close();

            int        cordX      = 0;
            int        cordY      = 0;
            int        cordZ      = 0;
            List <int> newSequece = new List <int>();

            //Carrega ESTRUTURA SIMULADA
            foreach (BasicStructs.Point item in trajectoryToStruct)
            {
                cordX = Convert.ToInt16(item.x);
                cordY = Convert.ToInt16(item.y);
                cordZ = Convert.ToInt16(item.z);

                newSequece.Add(ghostCube.FindIndex(coord => coord.x == cordX && coord.y == cordY && coord.z == cordZ) + 1);
            }

            return(newSequece);
        }
        private static List <BasicStructs.Point> TransitionTrajectoryToStructs(List <BasicStructs.Point> points)
        {
            List <BasicStructs.Point> ret = new List <BasicStructs.Point>();

            int difX = points[0].x;
            int difY = points[0].y;
            int difZ = points[0].z;

            int majorX = 0, minusX = 0;
            int majorY = 0, minusY = 0;
            int majorZ = 0, minusZ = 0;

            //Transition
            for (int i = 0; i < points.Count(); i++)
            {
                BasicStructs.Point temp = new BasicStructs.Point();
                temp.x = points[i].x - difX;
                temp.y = points[i].y - difY;
                temp.z = points[i].z - difZ;

                ret.Add(temp);

                //check dif em relação as extremidades X,Y,Z
                MaxMin(temp, ref majorX, ref minusX, ref majorY, ref minusY, ref majorZ, ref minusZ);
            }

            //Console.WriteLine("X:{0},{1} Y:{2},{3} Z:{4},{5}", minusX, majorX, minusY, majorY, minusZ, majorZ);
            int difPosX = (minusX + majorX), difPosY = (minusY + majorY), difPosZ = (minusZ + majorZ);

            //Console.WriteLine("X:{0} Y:{1} Z:{2}", difPosX, difPosY, difPosZ);
            //Console.WriteLine();

            if ((difPosX != 2) || (difPosY != 2) || (difPosZ != 2))
            {
                ret = TransitionTrajectoryToStructsWithBaias(ret, difPosX, difPosY, difPosZ);
            }

            return(ret);
        }
        /// <summary>
        /// Calcula o produto escalar de 2 vetores
        /// </summary>
        /// <returns>Se retorno for 0, então ocorre.</returns>
        public static int Calc(BasicStructs.Point point1, BasicStructs.Point point2, BasicStructs.Point point3)
        {
            int x1, y1, z1;
            int x2, y2, z2;
            int x3, y3, z3;
            int v1ov2;

            x1 = point1.x;
            y1 = point1.y;
            z1 = point1.z;

            x2 = point2.x;
            y2 = point2.y;
            z2 = point2.z;

            x3 = point3.x;
            y3 = point3.y;
            z3 = point3.z;

            v1ov2 = ((x2 - x1) * (x3 - x2)) + ((y2 - y1) * (y3 - y2)) + ((z2 - z1) * (z3 - z2));

            return(v1ov2);
        }
        private static List <BasicStructs.Point> loadLastTRajectory(int line, string nameFileOfTrajectories)
        {
            //Representa a estrutura do CUBO FANTASMA
            List <BasicStructs.Point> lastTrajectory = new List <BasicStructs.Point>();


            //Path do local de execução do executável
            string path         = System.Environment.CurrentDirectory;
            string selectedLine = System.IO.File.ReadLines(path + @"\" + nameFileOfTrajectories).Skip(line - 1).Take(1).First();

            string[] data = selectedLine.Split('\t');                   //separa informações através do caracter TAB
            data = data.Where(x => !string.IsNullOrEmpty(x)).ToArray(); //limpa eventuais espaços em branco

            for (int i = 1; i < data.Count(); i = i + 3)
            {
                BasicStructs.Point temp = new BasicStructs.Point();
                temp.x = Convert.ToInt16(data[i]);
                temp.y = Convert.ToInt16(data[i + 1]);
                temp.z = Convert.ToInt16(data[i + 2]);
                lastTrajectory.Add(temp);
            }

            return(lastTrajectory);
        }
Example #10
0
        public static List <BasicStructs.Point> DoPoc_NativeStructToGhostStruct()
        {
            Console.WriteLine("DoPoc_NativeStructToGhostStruct");
            //Representa a estrutura do CUBO FANTASMA
            List <BasicStructs.Point> ghostCube = new List <BasicStructs.Point>();

            //Representa qual linha foi escolhida, no arquivo de configuração
            int[] seqToMakeNewStruct = new int[27];
            //Representa a nova estrutura a ser gerada
            List <BasicStructs.Point> newStruct = new List <BasicStructs.Point>();

            // Observações:
            //cfg51704.dat :  arquivo da sequencia posicional dos 27 monomeros
            //cuboFantasma.dat    :  coordenadas(x, y, z) dos 27 vértices do cubo 3X3X3

            //Path do local de execução do executável
            string path = System.Environment.CurrentDirectory;
            ExtendedStreamReader ghostCubeFile = new ExtendedStreamReader(path + @"\cuboFantasma.dat", new Guid(), false);


            //Leitura das COORDENADAS BASICAS para os 27 monomeros(coordenadas estabelecidas arbitrariamente, mas fixas)
            string line = string.Empty;

            while ((line = ghostCubeFile.ReadLine()) != null)
            {
                string[] data = line.Split('\t');                           //separa informações através do caracter TAB
                data = data.Where(x => !string.IsNullOrEmpty(x)).ToArray(); //limpa eventuais espaços em branco

                BasicStructs.Point temp = new BasicStructs.Point();
                temp.x = Convert.ToInt16(data[0]);
                temp.y = Convert.ToInt16(data[1]);
                temp.z = Convert.ToInt16(data[2]);
                ghostCube.Add(temp);
            }
            ghostCubeFile.Close();

            //ID da estrutura a ser gerada
            int idOfConfig = 3; //equivale arquivo 00003.dat

            //Le a linha da estrutura escolhida
            string[] selectedLine = new string[27];
            selectedLine = System.IO.File.ReadLines(path + @"\cfg51704.dat").Skip(idOfConfig - 1).Take(1).First().Split(' '); //Lê linha escolhida diretamente do arquivo
            selectedLine = selectedLine.Where(x => !string.IsNullOrEmpty(x)).ToArray();                                       //limpa eventuais espaços em branco


            Console.Write("De: ");
            for (int i = 0; i < selectedLine.Count(); i++)
            {
                Console.Write("{0} ", selectedLine[i]);
            }
            Console.WriteLine();

            //Gera mapeamento da nova estrutura
            int ik = 0;

            foreach (string item in selectedLine)
            {
                seqToMakeNewStruct[ik] = Convert.ToInt16(item);
                ik++;
            }

            //Guardar as coordenadas para cada monomero da ie configuracao desejada
            for (int ipos = 0; ipos < 27; ipos++)
            {
                BasicStructs.Point temp = new BasicStructs.Point();

                int imon = seqToMakeNewStruct[ipos] - 1;
                temp.x = ghostCube[imon].x;
                temp.y = ghostCube[imon].y;
                temp.z = ghostCube[imon].z;

                newStruct.Add(temp);
            }

            Console.WriteLine("Para: ");
            //Print a nova ESTRUTURA
            for (int ipos = 0; ipos < 27; ipos++)
            {
                Console.WriteLine("{0} {1} {2}", newStruct[ipos].x, newStruct[ipos].y, newStruct[ipos].z);
            }

            return(newStruct);
        }