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