Commit 159c7863 authored by Dumoulin Nicolas's avatar Dumoulin Nicolas
Browse files

better initialisation for better performance

1 merge request!1Add Svn history
Showing with 41 additions and 29 deletions
+41 -29
package pikelake.environment; package pikelake.environment;
import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner; import java.util.Scanner;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import java.io.FileNotFoundException;
import pikelake.pikes.Pike; import pikelake.pikes.Pike;
import pikelake.pikes.PikesGroup; import pikelake.pikes.PikesGroup;
import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess;
/** /**
* Classe qui lit le fichier contenant les distances horaires parcourues par les individus, * Classe qui lit le fichier contenant les distances horaires parcourues par les individus,
* selon la saison et la phase du jour. * selon la saison et la phase du jour.
...@@ -105,33 +106,44 @@ public class AreaMovement extends AquaNismsGroupProcess<Pike, PikesGroup> { ...@@ -105,33 +106,44 @@ public class AreaMovement extends AquaNismsGroupProcess<Pike, PikesGroup> {
if (choixDist == 0) temp = calculationArea (distMin); if (choixDist == 0) temp = calculationArea (distMin);
else if (choixDist == 1) temp = calculationArea (distMoy); else if (choixDist == 1) temp = calculationArea (distMoy);
else if (choixDist == 2) temp = calculationArea (distMax); else if (choixDist == 2) temp = calculationArea (distMax);
return temp; return temp;
} }
/** /**
* Determine les coordonnees du cercle des cellules accessibles pour une distance donnee * Determine les coordonnees du cercle des cellules accessibles pour une
* @param distance Entier representant la distance de deplacement * distance donnee
* @return area Tableau d'entier contenant les coordonnees des cellules accessibles *
*/ * @param distance Entier representant la distance de deplacement
public int[][] calculationArea (int distance) { * @return area Tableau d'entier contenant les coordonnees des cellules
* accessibles
int[][] area = new int[2][80000]; */
int xi = 0, yi = 0, cpt = 0; public int[][] calculationArea(int distance) {
// Conversion distance en nombre de cellule List<List<Integer>> area = new ArrayList<List<Integer>>();
int distCell = (int) Math.round(distance/10.); area.add(new ArrayList<Integer>());
area.add(new ArrayList<Integer>());
// Calcul des coordonnees (x,y) des cellules pour une distance donnee int xi = 0, yi = 0, cpt = 0;
for (xi = -distCell; xi <= distCell; xi++) {
yi = (int) Math.round(Math.sqrt(distCell*distCell - xi*xi)); // Conversion distance en nombre de cellule
for (int j = -yi; j <= yi; j++) { int distCell = (int) Math.round(distance / 10.);
area[0][cpt] = xi;
area[1][cpt] = j; // Calcul des coordonnees (x,y) des cellules pour une distance donnee
cpt++; for (xi = -distCell; xi <= distCell; xi++) {
} yi = (int) Math.round(Math.sqrt(distCell * distCell - xi * xi));
} for (int j = -yi; j <= yi; j++) {
return area; area.get(0).add(xi);
} area.get(1).add(j);
}
}
int[][] result = new int[2][area.get(0).size()];
for (int i = 0; i < area.size(); i++) {
for (int j = 0; j < area.get(i).size(); j++) {
result[i][j] = area.get(i).get(j);
}
}
return result;
}
/** /**
* Retourne la distance minimum * Retourne la distance minimum
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment