Beispiel #1
0
        /// <summary>
        /// Verifica se o CrankShaft ocorre ao centro a esquerda
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        public static bool IsCrankShaftLeftCenter(int index)
        {
            try
            {
                int len   = (GCPS.chain.r.Count) - 1;
                int idx01 = index - 1;
                int idx02 = index + 1;
                int idx03 = index + 2;

                if ((idx01 < 0 || idx02 < 0 || idx03 < 0) || (idx01 > len || idx02 > len || idx03 > len))
                {
                    return(false);
                }

                Structs.BasicStructs.Point actualMinusOne = GCPS.chain.r[idx01];
                Structs.BasicStructs.Point actual         = GCPS.chain.r[index];
                Structs.BasicStructs.Point actualMoreOne  = GCPS.chain.r[idx02];
                Structs.BasicStructs.Point actualMoreTwo  = GCPS.chain.r[idx03];

                bool testOne   = (Maths4Simulation.DistanceBetweenPoints(actual, actualMoreTwo) == Consts.valueTwo);
                bool testTwo   = (Maths4Simulation.DistanceBetweenPoints(actualMinusOne, actualMoreOne) == Consts.valueTwo);
                bool testThree = (Maths4Simulation.DistanceBetweenPoints(actualMinusOne, actualMoreTwo) == Consts.valueOne);

                return(testOne && testTwo && testThree);
            }
            catch (System.ArgumentOutOfRangeException ex)
            {
                new GridProteinFolding.Middle.Helpers.LoggingHelpers.Log().ArgumentOutOfRangeException(ex, Types.ErrorLevel.Warning, true);
                return(false);
            }
        }
Beispiel #2
0
 /// <summary>
 /// Funcao que check a existencia de primeiro vizinho
 /// </summary>
 /// <param name="tempCoord">Ponto temporário</param>
 /// <returns>True se ocorrer</returns>
 public static bool FirstNeighbor(Structs.BasicStructs.Point tempCoord)
 {
     for (int i = 0; i < GCPS.chain.r.Count - 2; i++)
     {
         if (Maths4Simulation.DistanceBetweenPoints(GCPS.chain.r[i], tempCoord) == Consts.valueOne)
         {
             return(true);
         }
     }
     return(false);
 }
Beispiel #3
0
        /// <summary>
        /// 2# regra
        /// Equação: d^2 i, i+1 = 1
        /// A DISTÂNCIA ENTRE O MONÔMERO "i"  E O MONÔMERO "i+1" , ELEVADO AO QUADRADO, SÓ PODE SER IGUAL A 1.
        /// QUALQUER OUTRO VALOR RESULTANTE  É INDICATIVO DE ERRO.
        /// </summary>
        /// <returns></returns>
        private bool PolicyTwo()
        {
            for (int i = 0; i < GCPS.chain.r.Count - 1; i++)
            {
                if (!(Maths4Simulation.DistanceBetweenPoints(((Structs.BasicStructs.Point)GCPS.chain.r[i]),
                                                             ((Structs.BasicStructs.Point)GCPS.chain.r[i + 1])) == Consts.valueOne))
                {
                    return(false);
                }
            }

            return(true);
        }
Beispiel #4
0
 /// <summary>
 /// Funcao que check a existencia de primeiro vizinho em toda a cadeia (ponto por ponto)
 /// </summary>
 /// <returns>True se ocorrer</returns>
 public static bool FirstNeighbor()
 {
     for (int i = 0; i < (GCPS.chain.r.Count - 2); i++)
     {
         for (int k = (i + 2); k < (GCPS.chain.r.Count - 1); k++)
         {
             if (Maths4Simulation.DistanceBetweenPoints(GCPS.chain.r[i], GCPS.chain.r[k]) == Consts.valueOne)
             {
                 return(true);
             }
         }
     }
     return(false);
 }
 /// <summary>
 /// Testa a existencia de um KINK apartir de uma posição do Monomero
 /// </summary>
 /// <param name="previousPos">Referência o ponto anterior ao atual</param>
 /// <param name="posteriorPos">Referência o ponto posterior ao atual</param>
 /// <returns>Retorno TRUE se o Kink existir.</returns>
 protected static bool ExistKick(Structs.BasicStructs.Point previousPos, Structs.BasicStructs.Point posteriorPos)
 {
     return(Maths4Simulation.DistanceBetweenPoints(previousPos, posteriorPos) == Consts.valueTwo);
 }