Commit 251c12d3 authored by guillaume.garbay's avatar guillaume.garbay
Browse files

No commit message

No commit message
1 merge request!1Add Svn history
Showing with 89 additions and 40 deletions
+89 -40
data/Info.txt 0 → 100644
Entrées
- Marnage
- HSI (marnage, saison)
- Rayon max déplacement (saison, phase jour)
Initialisations
- Lac (marnage, HSI)
- Population (nbr individus, position initiale, sexe...)
- Date début de la simulation
- Horloge interne par individus
Sorties
- Déplacements de chaque individus (historique : id_maille, HSI, saison, phase journée...)
- Distances parcourue (par jour, heure, saison...)
- Angles de déplacement
Process
1 - Temps phase journée : aube, jour, crep, nuit
saison : période de reproduction ?
2 - Marnage modification HSI
Brochet
3 - Ordre de déplacements aléatoire
4 - Calcul des mailles accessibles (Rayon max déplacement, marnage, HSI...) |
|
5 - Mouvement (Période repro ?, phase jour) |
6 - Enregistrement des positions de chaque individu + HSI, id_maille, saison, phase jour...
Calcul => Distance parcourue (saison, phase jour, marnage...)
Angles de déplacements
......@@ -7,7 +7,7 @@
<processes>
<processesAtBegin>
<pikelake.pikes.PikesPopulateProcess>
<initialNumberOfPikes>20</initialNumberOfPikes>
<initialNumberOfPikes>4</initialNumberOfPikes>
</pikelake.pikes.PikesPopulateProcess>
</processesAtBegin>
<processesEachStep>
......
......@@ -22,21 +22,20 @@ public class Grid extends Grid2D<Cell, Individual> {
@InitTransientParameters
public void initTransientParameters(Pilot pilot) throws FileNotFoundException {
//System.out.println("Init Grid");
int idLigne = 0;
double hsiMoy = 0, hsiStd = 0;
StringTokenizer sLigne;
// TODO empty grid
grid = new Cell[gridWidth * gridHeight];
// Initialisation de toutes les mailles
int cptCell = 1;
int cptCell = 0;
while (cptCell != gridWidth * gridHeight) {
grid[cptCell] = new Cell(cptCell, -1);
cptCell = cptCell + 1;
}
}
cptCell = 0;
// Lecture fichier contenant les HSI de toutes les mailles
......
......@@ -8,7 +8,11 @@ import fr.cemagref.ohoui.annotations.Description;
import fr.cemagref.ohoui.filters.NoTransientField;
import fr.cemagref.ohoui.swing.OhOUI;
import fr.cemagref.ohoui.swing.OhOUIDialog;
import fr.cemagref.simaqualife.kernel.AquaNism;
import fr.cemagref.simaqualife.kernel.AquaNismsGroup;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
......@@ -16,6 +20,8 @@ import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.GeneralPath;
import java.awt.geom.Path2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
......@@ -29,8 +35,11 @@ import org.geotools.data.FileDataStoreFinder;
import org.geotools.data.simple.SimpleFeatureIterator;
import org.geotools.data.simple.SimpleFeatureSource;
import com.itextpdf.awt.geom.Rectangle;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.MultiPolygon;
import pikelake.Grid;
import pikelake.pikes.Pike;
import pikelake.pikes.PikesGroup;
......@@ -93,8 +102,6 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C
public void init() {
//System.out.println("Init Shape");
display = new DisplayComponent();
display.setVisible(false);
display.setDoubleBuffered(true);
......@@ -123,7 +130,6 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C
// TODO Auto-generated catch block
e.printStackTrace();
}
// original dimension storage
this.shapeOriginalWidth = this.generalPath.getBounds().getWidth();
this.shapeOriginalHeight = this.generalPath.getBounds().getHeight();
......@@ -145,8 +151,7 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C
groupsColors.add(Color.GRAY);
display.repaint();
display.setVisible(true);
//System.out.println("Fin IS");
}
public void disable() {
......@@ -159,10 +164,10 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C
}
public void valueChanged(ObservablesHandler clObservable, Object instance, long t) {
if (groups == null && instance != null) {
groups.add((PikesGroup) instance);
if (groups.isEmpty() && instance != null) {
groups.add((PikesGroup) instance);
}
System.out.println(groups.isEmpty());
display.repaint();
display.setVisible(true);
}
......@@ -212,10 +217,7 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C
rescaleFactorWithOriginal = displayHeightBak / shapeOriginalHeight;
}
// rescale the generalPath
generalPath.transform(
AffineTransform.getScaleInstance(rescaleFactor,rescaleFactor)
);
generalPath.transform (AffineTransform.getScaleInstance (rescaleFactor, rescaleFactor));
}
// Draw Background
g.setColor(bgColor);
......@@ -225,30 +227,38 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C
g2d.fill(generalPath);
//g.setColor(aquanismsColor);
Iterator<Color> colorsIterator = groupsColors.iterator();
// Draw aquanisms
//System.out.println(groups.isEmpty());
if(groups.isEmpty()) {
//PikesGroup pikeGroup = PikesGroup.this.getAquaNismsList();
//groups.add((PikesGroup) ((AquaNismsGroup<Pike, Grid>) groups).getAquaNismsList());
//groups.add(PikesGroup.class.getAquaNismsList() );
//groups.add(PikesGroup.getAquaNismsList());
}
g.setColor(pikeColor);
double widthMax = 0, heightMax = 0;
double xPike = 0, yPike = 0, xPike2 = 0, yPike2 = 0;
widthMax = generalPath.getBounds().getWidth();
heightMax = generalPath.getBounds().getHeight();
//g2d.fillRect(widthMax, heightMax, 1, 1);
//System.out.println(generalPath.getBounds2D());
//System.out.println(widthMax);
//System.out.println(heightMax);
for (PikesGroup group : groups) {
if (colorsIterator.hasNext()) {
g.setColor(colorsIterator.next());
}
for (Pike aquanism : group.getAquaNismsList()) {
// TODO get the cell position
System.out.println(aquanism.getPosition());
//Rectangle rect = new Rectangle((int) ((aquanism.getPosition().getX() + repositioningTranslateX) * rescaleFactorWithOriginal),
// (int) (generalPath.getBounds().getHeight() /*flip vertically*/ - (aquanism.getPosition().getY() + repositioningTranslateY) * rescaleFactorWithOriginal),
// sizeOfDisplayedIndividuals, sizeOfDisplayedIndividuals);
// draw the individuals after repositioning and rescaling the position
//g2d.fill(rect);
}
if (colorsIterator.hasNext())
g.setColor(colorsIterator.next());
for (Pike aquanism : group.getAquaNismsList() ) {
// Calcul de la maille occupe sur une grille de 216*244
yPike = (aquanism.getPosition().getIndex() / 216);
xPike = (aquanism.getPosition().getIndex() - (yPike * 216));
// Calcul dela maille occupe sur la grille redimensionnee (dynamique)
xPike2 = xPike * (widthMax / 216);
yPike2 = yPike * (heightMax / 244);
// Affichage de chaque individu
g2d.drawRect((int) xPike2, (int) yPike2, 1, 1);
//System.out.println(aquanism.getPosition().getIndex());
//System.out.println(" X = " + xPike + " Y = " + yPike);
//System.out.println(" X = " + xPike2 + " Y = " + yPike2 + "\n");
}
}
}
}
......
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