private bool VerificaColisaoEntre(ClassCarga classCarga1, int w1, int h1, ClassCarga classCarga2, int w2, int h2) { var r1 = new Rectangle(classCarga1.posX, classCarga1.posY, w1, h1); var r2 = new Rectangle(classCarga2.posX, classCarga2.posY, w2, h2); return(Rectangle.Intersect(r1, r2) != Rectangle.Empty); }
/// <summary> /// Operação de crossover entre dois cromossomos. /// <param name="pair"> Recebe um cromossomo (par) que "cruzará" como atual. </param> /// <returns> Retorna um filho com genes do cromossomo atual e do par. </returns> /// </summary> public EQChromosome Crossover(EQChromosome pair) { var filho = new ClassCarga[_positions.Length]; for (int i = 0; i < Positions.Length; i++) { filho[i] = (i % 2 == 0 ? _positions[i] : pair._positions[i]); } return new EQChromosome(filho); }
/// <summary> /// Operação de crossover entre dois cromossomos. /// <param name="pair"> Recebe um cromossomo (par) que "cruzará" como atual. </param> /// <returns> Retorna um filho com genes do cromossomo atual e do par. </returns> /// </summary> public EQChromosome Crossover(EQChromosome pair) { var filho = new ClassCarga[_positions.Length]; for (int i = 0; i < Positions.Length; i++) { filho[i] = (i % 2 == 0 ? _positions[i] : pair._positions[i]); } return(new EQChromosome(filho)); }
private bool VerificaColisaoComTabuleiro(ClassCarga classCarga, int w, int h) { if (classCarga.posX + w > 10 || classCarga.posX < 0) { return(true); } if (classCarga.posY + h > 10 || classCarga.posY < 0) { return(true); } return(false); }
private int VerificaColisao(ClassCarga classCarga1, ClassCarga classCarga2) { int[] tam1 = GetTamByTipo(classCarga1.Tipo); int[] tam2 = GetTamByTipo(classCarga2.Tipo); int w1, w2, h1, h2; w1 = tam1[0]; h1 = tam1[1]; w2 = tam2[0]; h2 = tam2[1]; //checando colisao if (VerificaColisaoComTabuleiro(classCarga1, w1, h1) || VerificaColisaoComTabuleiro(classCarga2, w2, h2)) { return(2); } if (VerificaColisaoEntre(classCarga1, w1, h1, classCarga2, w2, h2)) { return(1); } return(0); }
// Construtor - recebe o vetor com as posições public EQChromosome(ClassCarga[] positions) { this._positions = positions; }
private bool VerificaColisaoEntre(ClassCarga classCarga1, int w1, int h1, ClassCarga classCarga2, int w2, int h2) { var r1 = new Rectangle(classCarga1.posX, classCarga1.posY, w1, h1); var r2 = new Rectangle(classCarga2.posX, classCarga2.posY, w2, h2); return Rectangle.Intersect(r1, r2) != Rectangle.Empty; }
private bool VerificaColisaoComTabuleiro(ClassCarga classCarga, int w, int h) { if (classCarga.posX + w > 10 || classCarga.posX < 0) return true; if (classCarga.posY + h > 10 || classCarga.posY < 0) return true; return false; }
private int VerificaColisao(ClassCarga classCarga1, ClassCarga classCarga2) { int[] tam1 = GetTamByTipo(classCarga1.Tipo); int[] tam2 = GetTamByTipo(classCarga2.Tipo); int w1, w2, h1, h2; w1 = tam1[0]; h1 = tam1[1]; w2 = tam2[0]; h2 = tam2[1]; //checando colisao if (VerificaColisaoComTabuleiro(classCarga1, w1, h1) || VerificaColisaoComTabuleiro(classCarga2, w2, h2)) { return 2; } if (VerificaColisaoEntre(classCarga1, w1, h1, classCarga2, w2, h2)) return 1; return 0; }