From: <de...@us...> - 2008-10-30 17:10:32
|
Revision: 4122 http://fudaa.svn.sourceforge.net/fudaa/?rev=4122&view=rev Author: deniger Date: 2008-10-30 17:10:26 +0000 (Thu, 30 Oct 2008) Log Message: ----------- Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrComputeLigneCourantTrajectoire.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrIsoLayerDefault.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeBuilder.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeTreeModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataCreatedNorm.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataVecteur.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostFlecheContentDefaut.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostMultiSourceActivator.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjet.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostRubarLimniMng.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSource.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceAbstract.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTimeModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostVisuPanel.java Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrComputeLigneCourantTrajectoire.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrComputeLigneCourantTrajectoire.java 2008-10-30 17:09:20 UTC (rev 4121) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrComputeLigneCourantTrajectoire.java 2008-10-30 17:10:26 UTC (rev 4122) @@ -1,34 +1,15 @@ package org.fudaa.fudaa.tr.post; -import gnu.trove.TIntHashSet; -import gnu.trove.TIntIterator; - -import java.io.IOException; import java.util.ArrayList; -import java.util.List; -import org.fudaa.ctulu.CtuluActivity; -import org.fudaa.ctulu.CtuluVariable; +import org.fudaa.ctulu.CtuluAnalyze; import org.fudaa.ctulu.ProgressionInterface; -import org.fudaa.ctulu.gis.GISGeometryFactory; -import org.fudaa.dodico.ef.EfData; -import org.fudaa.dodico.ef.EfElement; -import org.fudaa.dodico.ef.EfGridInterface; -import org.fudaa.dodico.ef.EfNeighborMesh; -import org.fudaa.dodico.ef.interpolation.EfGridDataInterpolator; -import org.fudaa.dodico.ef.interpolation.EfGridDataInterpolatorDefault; -import org.fudaa.dodico.ef.interpolation.EfInterpolator; -import org.fudaa.dodico.ef.operation.EfIndexVisitorNearestElt; -import org.fudaa.dodico.ef.operation.EfIndexVisitorNearestNode; -import org.fudaa.dodico.ef.operation.EfLineIntersection; -import org.fudaa.dodico.ef.operation.EfLineIntersectionParent; -import org.fudaa.dodico.ef.operation.EfLineIntersectionsResultsMng; -import org.fudaa.dodico.ef.operation.EfLineIntersectorActivity; +import org.fudaa.dodico.ef.operation.EfTrajectoireActivity; +import org.fudaa.dodico.ef.operation.EfTrajectoireParameters; import org.fudaa.ebli.geometrie.GrPoint; -import org.fudaa.fudaa.tr.common.TrResource; +import org.fudaa.fudaa.meshviewer.profile.MvProfileCoteTester; import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.LineString; /** * Algorithme de Calcul les lignes de courants TODO mettre la classe dans EF il y a la classe qui est charge de faire le @@ -36,36 +17,14 @@ * * @author Adrien Hadoux */ -public class TrComputeLigneCourantTrajectoire implements EfLineIntersectionParent, CtuluActivity { +public class TrComputeLigneCourantTrajectoire { - /** - * data - */ - TrPostVisuPanel calque_; - final TrPostSource data_; + final TrPostVisuPanel calque_; - /** - * pour interpoler les valeur - */ - final EfInterpolator interpolator_; + boolean stop_; - final EfLineIntersectorActivity lineIntersect_; - ProgressionInterface prog_; - - List<Coordinate> listePointsARepartir_ = new ArrayList<Coordinate>(); // les GrPoint ne sont utilisee que pour - // l'affichage - - /** - * Liste des intersections r\xE9sultats - */ - ArrayList<EfLineIntersection> listeIntersection_ = null; - public TrComputeLigneCourantTrajectoire(final TrPostVisuPanel calque) { - super(); - calque_ = calque; - this.data_ = calque.getSource(); - this.interpolator_ = data_.getInterpolator(); - this.lineIntersect_ = new EfLineIntersectorActivity(data_); + this.calque_ = calque; } /** @@ -128,15 +87,8 @@ return listePointsARepartir; } - public void progression(final String desc, final int completionRate) { - if (prog_ == null) return; - prog_.setDesc(TrResource.getS(desc)); - prog_.setProgression(5); + EfTrajectoireActivity activity_; - } - - EfNeighborMesh voisinage_; - /** * Methode appel\xE9e par l'interface de calcul des lignes de courant. * @@ -145,286 +97,23 @@ * @param indicePdt indice du pas de temps * @param finesse coefficient de finesse double * @param vx la variable a utiliser - * @param prog l'interface de progression, peut etre null + * @param _prog l'interface de progression, peut etre null * @return */ - public ArrayList<EfLineIntersection> computeLigneCourant(final GrPoint extrem1segment, final GrPoint extrem2segment, - final int nbPointsARepartirUniformement, final double dureeIntegration, final int indicePdt, - final double finesse, final CtuluVariable vx, final CtuluVariable vy, final ProgressionInterface prog) {// FIXME - // trop de - // variable - // faire - // une - // classe - prog_ = prog; + public void computeLigneCourant(EfTrajectoireParameters _data, final CtuluAnalyze _analyse, + final ProgressionInterface _prog) { + stop_ = false; + activity_ = new EfTrajectoireActivity(calque_.getSource().getInterpolator(), new MvProfileCoteTester(), calque_ + .getSource().getTime().getTimesInSec()); + activity_.computeLigneCourant(_data, _prog, _analyse); - // on repartit les points uniform\xE9ment sur le segment - listePointsARepartir_ = repartirUniformementPointsSurSegment(extrem1segment, extrem2segment, - nbPointsARepartirUniformement); - - // test de l'algo avec le premier point - final Coordinate init = listePointsARepartir_.get(0); - - // on init le temps total avec l'indice du pas de temps fourni au depart - double tempsTotal = data_.getTimeStep(indicePdt); - double oldTempsTotal; - boolean termine = false; - - // -- variables d'initialisation - // point courant tout au long de l'algo - final Coordinate pointCourant = init; - // element sur lequel on se situe a l'iteration i - int elementCourant; - // intersection courante - EfLineIntersection intersectionCourante; - - // initialisation - progression("Recherche \xE9l\xE9ment englobant", 5); - elementCourant = elementEnglobant(pointCourant); - // creation de l'intersection avec l'\xE9l\xE9ment courant - progression("Recherche des intersection", 7); - intersectionCourante = new EfLineIntersection.ItemMesh(elementCourant, pointCourant.x, pointCourant.y); - - // recup des datas a partir de la var et du pas de temps initial - // donn\xE9es r\xE9cup\xE9r\xE9es fixe pour les lignes de courants - EfData dataX = null; - EfData dataY = null; - try { - dataX = data_.getData(vx, indicePdt); - dataY = data_.getData(vy, indicePdt); - } catch (final IOException e) { - e.printStackTrace();// erreur de lecteur arrrete le tout - } - - // -- Algo principal --// - final Coordinate c = new Coordinate(); - if (elementCourant != -1) { - final TIntHashSet elementsAdjacent = new TIntHashSet(); - - while (!termine && Math.abs(tempsTotal) <= Math.abs(dureeIntegration)) {// FIXME - // faux - // comparaison - // d'une - // duree et - // d'un - // temps. En - // fait la - // duree - // initiale - // ( - // tempsTotal - // ) vaut - // zero - // il faut faire attention: si la dureeIntegration est negative. Il faut comparer les valeurs absolues - oldTempsTotal = tempsTotal; - - // ajout de l'intersection dans la liste r\xE9sultats - listeIntersection_.add(intersectionCourante); - - // recherche des vitesses - // double vitesseX = intersectionCourante.getDistanceFrom(pointCourant.x, pointCourant.y);//FIXME la vitesse - // c'est pas la distance depuis le debut - // mais la valeur de vx - // FIXME attention pour les trajectoires les valeurs dataX et dataY doivent etre recalcule au vrai temps - // il faudra surement interpoler en temps ! - final double vitesseX = intersectionCourante.getValueBadInterpolation(dataX); - final double vitesseY = intersectionCourante.getValueBadInterpolation(dataY); - - // calcul des distances avec son voisinage - progression("Calcul des distances avec le voisinage", 10); - // FIXME ce calcul est long il faut le faire en dehors de la boucld ! - // EfNeighborMesh voisinage = EfNeighborMesh.compute(data_.getGrid(), prog_); - elementsAdjacent.clear(); - // la set elementAdjacent comporte tous les \xE9l\xE9ements adjacents \xE0 l'intersection courante - intersectionCourante.fillWithAdjacentMeshes(elementsAdjacent); - double distanceMaxEntrePoints = 0; - final int[] listeEltVoisins = null; - int voisinChoisi = 0;// ne sert a rien - // ATTENTION: pour calcul le prochain point il faut partir du point en cours, - // et se d\xE9placer selon les vitesses x2=x1*vx*delta T - // REATTENTION: il faut prendre en compte le fait que la duree d'integration peut etre negative - // cas sur un noeud - // FIXME inutile desormais - // if (intersectionCourante.isNodeIntersection()) { - // int nbVoisins = voisinage_.getNbNeighborMeshes(elementCourant); - // listeEltVoisins = new int[nbVoisins]; - // for (int i = 0; i < nbVoisins; i++) { - // // On calcule la distance avec lequel de ces points??? - // // avec tous - // listeEltVoisins[i] = voisinage_.getNeighborMesh(elementCourant, i); - // } - // - // } else { - // // comment faire en fudaa pour les autres cas??? - // // cas des arretes - // - // } - - // calcul de la distance max - // pour calculer la distance max, il faut parcourir tous les \xE9l\xE9ments trouve et tous les noeuds des \xE9l\xE9ments - for (final TIntIterator it = elementsAdjacent.iterator(); it.hasNext();) { - final int idxElt = it.next(); - final EfElement elt = data_.getGrid().getElement(idxElt); - for (int i = 0; i < elt.getPtNb(); i++) { - data_.getGrid().getCoord(elt.getPtIndex(i), c); - distanceMaxEntrePoints = Math.max(distanceMaxEntrePoints, intersectionCourante.getDistanceFrom(c.x, c.y)); - } - } - // maintenant, on a la distance max, on calcul la duree du d\xE9placement. On a la vitesse qui vaut - // sqrt(vx*vx+vy*vy) - // Attenion. si la duree d'integration est negative il faut avoir une duree de deplacement n\xE9gative - // y=y1+vy*(delta t) et meme chose pour x - - // le reste est faux: on calcule une trajectoire et donc il faut se deplacer selon vx et vy et ne pas prendre le - // noeud du voisinage le plus loin ! - if (listeEltVoisins != null && listeEltVoisins.length > 0) voisinChoisi = listeEltVoisins[0];// pourquoi le - // premier ? - for (int i = 0; i < listeEltVoisins.length; i++) { - final int eltVoisin = listeEltVoisins[i]; - - // coordonn\xE9es de l'\xE9l\xE9ment voisin - // double x = 123456789;//getCoordonnees(eltVoisin).x_;//FAUX - // double y = 123456789;//getCoordonnees(eltVoisin).y_;//FAUX - // double distance = Math.sqrt((pointCourant.x - x) * (pointCourant.x - - // x) + (pointCourant.y - y) - // * (pointCourant.y - y)); - // if (distanceMaxEntrePoints > distance) { - // // candidat potentiel - // - // // ACHTUNG!! VERIFIER QUE LE t+ deltaT<dureeIntegration si on choisit - // // cette distance - // if (vitesseY != 0 - // && (Math.abs(tempsTotal) + distance / Math.sqrt(vitesseY * vitesseY + vitesseX * vitesseX) <= - // Math - // .abs(dureeIntegration))) {// FIXME pourquoi seulement la - // // vitesse y. Il faut - // //faire sqrt(vx*vx+vy*vy) - // distanceMaxEntrePoints = distance; - // voisinChoisi = eltVoisin; - // } - // } - // } - // - // - // - // // on calcul le nouveau temps total - // if (vitesseY != 0) tempsTotal += distanceMaxEntrePoints / vitesseY;//FIXME pour calcul le - - // -- calcul du temps pass\xE9 pour aller jusqu'a distance max --// - - double deltaT = 0; - if (Math.sqrt(vitesseY * vitesseY + vitesseX * vitesseX) != 0) deltaT = distanceMaxEntrePoints - / Math.sqrt(vitesseY * vitesseY + vitesseX * vitesseX); - - // -- on ajoute si cela ne fait pas depasser --// - if (Math.abs(tempsTotal + deltaT) <= (Math.abs(dureeIntegration))) tempsTotal += deltaT; - else { - - // FIXME que fait-on si le temps total d\xE9passe? Tu parlais de diviser les intervalles, je n'ai pas bien - // compris mais je tente quand meme - - } - - // on verifie que l'on n'est pas inactif: pas necessaire - if (oldTempsTotal == tempsTotal) { - termine = true; - } else { - - // on a ondc un segment form\xE9 par element courant vers element choisi - final GrPoint pointchoisi = new GrPoint(data_.getGrid().getCoor(voisinChoisi).x, data_.getGrid().getCoor( - voisinChoisi).y, 0); - - // FIXME non on recherche le point le plus eloigne pour savoir sur - // combien de temps on doit bouge - - // listeCoor[1] = new Coordinate(pointchoisi.x, pointchoisi.y); - - // LineString ligne = new LineString(listeCoor, new - // PrecisionModel(),0); - - // utilse GISGeometryFactory.createSegment - final LineString ligne = GISGeometryFactory.INSTANCE.createSegment(pointCourant.x, pointCourant.y, - pointchoisi.x_, pointchoisi.y_); - progression("Recherche des intersections", 50); - final EfLineIntersectionsResultsMng res = lineIntersect_.computeForMeshes(ligne, prog_); - - if (res.isSegmentOut(0)) { - // particules est sortie du maillage, le calcul s'arrete - termine = true; - } else { - - } - // recuperationde la nouvelle intersection aui devien courante - intersectionCourante = res.getFoundIntersect(1);// Je crois qu'il - // faut prendre - // l'intersection 1 - // car la 0 est le - // point de d\xE9part - - // cette intersection sera automatiquement ajout\xE9e a la liste solution a la prochaine it\xE9ration (premiere - // instruction du while) - - } - } - }// fin du while - - } - return listeIntersection_; } /** - * Retourne les coordonn\xE9es associ\xE9es a l \xE9l\xE9ment du point FIXME faux - * - * @param element - * @return - */ - // GrPoint getCoordonnees(int element) { - // GrPoint point = new GrPoint(); - // calque_.getIsoLayer().getIsoModel().point(element, point);// FIXME Faux on passe un element et on renvoie un point - // ! - // return point; - // } - /** - * Recherche l'\xE9l\xE9lment englobant pour un point donn\xE9 - * - * @param _prReel - * @param grid - * @return - */ - public int elementEnglobant(final Coordinate _prReel) { - final EfGridInterface grid = data_.getGrid(); - if (grid.getIndex() != null) { - final EfIndexVisitorNearestElt visitor = new EfIndexVisitorNearestElt(grid, _prReel.x, _prReel.y, 0); - grid.getIndex().query(EfIndexVisitorNearestNode.getEnvelope(_prReel.x, _prReel.y, 0), visitor); - return visitor.isIn() ? visitor.getSelected() : -1; - } else return -1; - } - - public void buildNeighbor(final ProgressionInterface _prog) { - if (voisinage_ == null) { - voisinage_ = EfNeighborMesh.compute(data_.getGrid(), _prog); - } - // TODO Auto-generated method stub - - } - - public EfGridInterface getGrid() { - // TODO Auto-generated method stub - return data_.getGrid(); - } - - public EfGridDataInterpolator getGridData() { - // TODO le stocker dans un champ prive - return new EfGridDataInterpolatorDefault(data_, interpolator_); - } - - public EfNeighborMesh getNeighbor() { - return voisinage_; - } - - /** * fonction appel\xE9e en cas de stop de thread */ - public void stop() {} - + public void stop() { + stop_ = true; + if (activity_ != null) activity_.stop(); + } } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrIsoLayerDefault.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrIsoLayerDefault.java 2008-10-30 17:09:20 UTC (rev 4121) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrIsoLayerDefault.java 2008-10-30 17:10:26 UTC (rev 4122) @@ -36,8 +36,7 @@ import org.fudaa.ctulu.CtuluListSelection; import org.fudaa.ctulu.CtuluRange; import org.fudaa.dodico.ef.EfGridInterface; -import org.fudaa.dodico.ef.operation.EfIndexVisitorNearestElt; -import org.fudaa.dodico.ef.operation.EfIndexVisitorNearestNode; +import org.fudaa.dodico.ef.operation.EfIndexHelper; import org.fudaa.dodico.ef.operation.EfIsoRestructuredGridActivity; import org.fudaa.dodico.ef.operation.EfIsoRestructuredGridResult; import org.fudaa.dodico.h2d.type.H2dVariableType; @@ -228,11 +227,7 @@ */ public static int sondeSelection(final GrPoint _prReel, final TrPostModelInterface _model) { final EfGridInterface grid = _model.getGrid(); - if (grid.getIndex() != null) { - final EfIndexVisitorNearestElt visitor = new EfIndexVisitorNearestElt(grid, _prReel.x_, _prReel.y_, 0); - grid.getIndex().query(EfIndexVisitorNearestNode.getEnvelope(_prReel.x_, _prReel.y_, 0), visitor); - return visitor.isIn() ? visitor.getSelected() : -1; - } + if (grid.getIndex() != null) { return EfIndexHelper.getElementEnglobant(grid, _prReel.x_, _prReel.y_, null); } return sondeSelectionLong(_prReel, _model); } @@ -244,12 +239,7 @@ * @return */ public static int sondeSelection(final GrPoint _prReel, final EfGridInterface grid) { - - if (grid.getIndex() != null) { - final EfIndexVisitorNearestElt visitor = new EfIndexVisitorNearestElt(grid, _prReel.x_, _prReel.y_, 0); - grid.getIndex().query(EfIndexVisitorNearestNode.getEnvelope(_prReel.x_, _prReel.y_, 0), visitor); - return visitor.isIn() ? visitor.getSelected() : -1; - } + if (grid.getIndex() != null) { return EfIndexHelper.getElementEnglobant(grid, _prReel.x_, _prReel.y_, null); } return -1; } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeBuilder.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeBuilder.java 2008-10-30 17:09:20 UTC (rev 4121) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeBuilder.java 2008-10-30 17:10:26 UTC (rev 4122) @@ -42,7 +42,7 @@ } public static EvolutionReguliere getEvol(final TrPostSource _src, final int _idxPtElt, final H2dVariableType _var) { - final double[] times = _src.getTime().getInitTimeSteps(); + final double[] times = _src.getTime().getTimeListModel().getTimesInSec(); if (times == null) { return null; } final double[] values = new double[times.length]; try { Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeTreeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeTreeModel.java 2008-10-30 17:09:20 UTC (rev 4121) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeTreeModel.java 2008-10-30 17:10:26 UTC (rev 4122) @@ -53,7 +53,7 @@ public class TrPostCourbeTreeModel extends EGGrapheTreeModel implements TrPostTimeContentListener, Target { - FudaaCommonImplementation impl_; + FudaaCommonImplementation impl_; Set intepolPt_; @@ -536,25 +536,25 @@ // -- verification si le point du model choisi est reel ou interpol\xE9 // dans la nouvelle source --// - if (srcChoisie.getGrid().contientPoint(modelBase.getPtX(), modelBase.getPtY())) { + // if (srcChoisie.getGrid().contientPoint(modelBase.getPtX(), modelBase.getPtY())) { + // + // // -- CREATION DE LA COURBE REELE DEPUIS COURBE REELLE --// + // newCurve = TrPostCourbeModel.buildCourbeModel(var, ((TrPostCourbeModel.Node) modelBase).ptIdx_, _child + // .getParentGroup(), srcChoisie); + // } else { + // -- on recupere le point le plus proche pour interpoler --// + final GrPoint pointAInterpole = new GrPoint(modelBase.getPtX(), modelBase.getPtY(), 0); + final int newPtIdx = TrIsoLayerDefault.sondeSelection(pointAInterpole, srcChoisie.getGrid()); - // -- CREATION DE LA COURBE REELE DEPUIS COURBE REELLE --// - newCurve = TrPostCourbeModel.buildCourbeModel(var, ((TrPostCourbeModel.Node) modelBase).ptIdx_, _child - .getParentGroup(), srcChoisie); - } else { - // -- on recupere le point le plus proche pour interpoler --// - final GrPoint pointAInterpole = new GrPoint(modelBase.getPtX(), modelBase.getPtY(), 0); - final int newPtIdx = TrIsoLayerDefault.sondeSelection(pointAInterpole, srcChoisie.getGrid()); + if (newPtIdx != -1) { - if (newPtIdx != -1) { + final TrPostInterpolatePoint interpolatePoint = new TrPostInterpolatePoint(newPtIdx, pointAInterpole.x_, + pointAInterpole.y_, new GISPrecision()); - final TrPostInterpolatePoint interpolatePoint = new TrPostInterpolatePoint(newPtIdx, pointAInterpole.x_, - pointAInterpole.y_, new GISPrecision()); - - // -- CREATION DE LA COURBE INTERPOLEE DEPUIS COURBE REELLE --// - newCurve = TrPostCourbeModel.buildCourbeModel(modelBase.getVar(), interpolatePoint, _child.getParentGroup(), - srcChoisie); - } + // -- CREATION DE LA COURBE INTERPOLEE DEPUIS COURBE REELLE --// + newCurve = TrPostCourbeModel.buildCourbeModel(modelBase.getVar(), interpolatePoint, _child.getParentGroup(), + srcChoisie); + // } } // -- recuperation des y de son duplicata --// @@ -912,26 +912,26 @@ @Override public Object getSpecificPersitDatas(Map Params) { // TODO Auto-generated method stub - TrPostCourbeTreeModelPersist dataPersist=new TrPostCourbeTreeModelPersist(); - //-- on remplit les donn\xE9es persistantes --// - dataPersist.fillDataWithModel(this); - + TrPostCourbeTreeModelPersist dataPersist = new TrPostCourbeTreeModelPersist(); + // -- on remplit les donn\xE9es persistantes --// + dataPersist.fillDataWithModel(this); + return dataPersist; } @Override public void setSpecificPersitDatas(final Object specPersitData, Map params) { // TODO Auto-generated method stub - TrPostCourbeTreeModelPersist data=(TrPostCourbeTreeModelPersist) specPersitData; - - //-- remplissage du model avec les data persistantes --// - data.fillModelWith(this); - - //-- recuperation du trpostprojet specifique au chargement --// - TrPostProjet projet=(TrPostProjet) params.get("TrPostProjet"); - this.projet_=projet; - this.impl_=projet.impl_; - + TrPostCourbeTreeModelPersist data = (TrPostCourbeTreeModelPersist) specPersitData; + + // -- remplissage du model avec les data persistantes --// + data.fillModelWith(this); + + // -- recuperation du trpostprojet specifique au chargement --// + TrPostProjet projet = (TrPostProjet) params.get("TrPostProjet"); + this.projet_ = projet; + this.impl_ = projet.impl_; + } } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataCreatedNorm.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataCreatedNorm.java 2008-10-30 17:09:20 UTC (rev 4121) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataCreatedNorm.java 2008-10-30 17:10:26 UTC (rev 4122) @@ -56,7 +56,7 @@ for (int i = norm.length - 1; i >= 0; i--) { final double vxi = vx.getValue(i); final double vyi = vy.getValue(i); - norm[i] = Math.sqrt(vxi * vxi + vyi * vyi); + norm[i] = Math.hypot(vxi, vyi); } return vx.isElementData() ? ((EfData) new EfDataElement(norm)) : ((EfData) new EfDataNode(norm)); } @@ -66,7 +66,7 @@ try { final double vx = src_.getData(idxX_, _idxTime, _idxObject); final double vy = src_.getData(idxY_, _idxTime, _idxObject); - return Math.sqrt(vx * vx + vy * vy); + return Math.hypot(vx, vy); } catch (final IOException _e) { FuLog.warning(_e); } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataVecteur.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataVecteur.java 2008-10-30 17:09:20 UTC (rev 4121) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataVecteur.java 2008-10-30 17:10:26 UTC (rev 4122) @@ -11,7 +11,7 @@ import org.fudaa.ctulu.interpolation.InterpolationVectorContainer; import org.fudaa.dodico.ef.EfData; import org.fudaa.dodico.ef.EfGridInterface; -import org.fudaa.dodico.ef.interpolation.EfInterpolator; +import org.fudaa.dodico.ef.interpolation.EfGridDataInterpolator; import org.fudaa.ebli.geometrie.GrSegment; /** @@ -47,8 +47,8 @@ vx = x_.getValue(_idxElt); vy = y_.getValue(_idxElt); } else { - vx = EfInterpolator.interpolateDangerous(_idxElt, _x, _y, x_, _grid); - vy = EfInterpolator.interpolateDangerous(_idxElt, _x, _y, y_, _grid); + vx = EfGridDataInterpolator.interpolateDangerous(_idxElt, _x, _y, x_, _grid); + vy = EfGridDataInterpolator.interpolateDangerous(_idxElt, _x, _y, y_, _grid); } _target.e_.x_ = _x + vx; _target.e_.y_ = _y + vy; Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostFlecheContentDefaut.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostFlecheContentDefaut.java 2008-10-30 17:09:20 UTC (rev 4121) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostFlecheContentDefaut.java 2008-10-30 17:10:26 UTC (rev 4122) @@ -83,7 +83,7 @@ try { final double vx = src_.getData(varVx_, _idxTime, _idxObject); final double vy = src_.getData(varVy_, _idxTime, _idxObject); - return Math.sqrt(vx * vx + vy * vy); + return Math.hypot(vx,vy); } catch (final IOException _e) { FuLog.warning(_e); } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostMultiSourceActivator.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostMultiSourceActivator.java 2008-10-30 17:09:20 UTC (rev 4121) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostMultiSourceActivator.java 2008-10-30 17:10:26 UTC (rev 4122) @@ -266,7 +266,6 @@ _impl, _inter); if (retour == null) { return; } retour.setId(id); - retour.buildDefaultVarUpdateLists(); projetCourant_.ajouterSource(retour); Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjet.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjet.java 2008-10-30 17:09:20 UTC (rev 4121) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjet.java 2008-10-30 17:10:26 UTC (rev 4122) @@ -378,6 +378,7 @@ _src.addVariableListener(new VariableListener()); if (_src.getFile() == null || !isSourceLoaded(_src.getFile().getAbsolutePath())) { listeSrc_.add(_src); + _src.buildDefaultVarUpdateLists(); // -- ajout du menu correspondant uniquement a partir de la 2eme --// // if (listeSrc_.size()>1 || (menuPost_!=null &&)) @@ -500,7 +501,7 @@ */ public String formatInfoSource(final TrPostSource _src) { // --ajout dans la liste des titres --// - return "Fichier: " + formatFichier(_src.getFile())+" |"+formatName(_src.getTitle()) ; + return formatName(_src.getTitle()) + " | Fichier: " + formatFichier(_src.getFile()); } public String formatFichier(final File file) { Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostRubarLimniMng.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostRubarLimniMng.java 2008-10-30 17:09:20 UTC (rev 4121) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostRubarLimniMng.java 2008-10-30 17:10:26 UTC (rev 4122) @@ -145,9 +145,7 @@ // ce test me semble dangereux: mais je ne comprends pas certaines exceptions dues // au TRC ... if (itime < evx.getNbValues() && itime < evy.getNbValues()) { - final double vxi = evx.getY(itime); - final double vyi = evy.getY(itime); - vScalaire[itime] = Math.sqrt(vxi * vxi + vyi * vyi); + vScalaire[itime] = Math.hypot(evx.getY(itime), evy.getY(itime)); } else { vScalaire[itime] = -1; } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSource.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSource.java 2008-10-30 17:09:20 UTC (rev 4121) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSource.java 2008-10-30 17:10:26 UTC (rev 4122) @@ -25,7 +25,7 @@ import org.fudaa.dodico.ef.EfFilter; import org.fudaa.dodico.ef.EfGridData; import org.fudaa.dodico.ef.EfGridInterface; -import org.fudaa.dodico.ef.interpolation.EfInterpolator; +import org.fudaa.dodico.ef.interpolation.EfGridDataInterpolator; import org.fudaa.dodico.h2d.type.H2dVariableType; import org.fudaa.dodico.h2d.type.H2dVariableTypeCreated; import org.fudaa.ebli.calque.BCalqueLegende; @@ -53,7 +53,7 @@ public void activate(); - EfInterpolator getInterpolator(); + EfGridDataInterpolator getInterpolator(); /** * @param _var la var a enlever Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceAbstract.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceAbstract.java 2008-10-30 17:09:20 UTC (rev 4121) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceAbstract.java 2008-10-30 17:10:26 UTC (rev 4122) @@ -51,7 +51,7 @@ import org.fudaa.dodico.ef.EfFilter; import org.fudaa.dodico.ef.EfGridInterface; import org.fudaa.dodico.ef.EfLib; -import org.fudaa.dodico.ef.interpolation.EfInterpolator; +import org.fudaa.dodico.ef.interpolation.EfGridDataInterpolator; import org.fudaa.dodico.h2d.resource.H2dResource; import org.fudaa.dodico.h2d.type.H2dVariableType; import org.fudaa.dodico.h2d.type.H2dVariableTypeCreated; @@ -196,7 +196,7 @@ protected boolean inspected_; - EfInterpolator interpolator_; + EfGridDataInterpolator interpolator_; GISPrecision precision_; @@ -549,7 +549,7 @@ _m.put("X", CtuluLib.DEFAULT_NUMBER_FORMAT.format(_x)); _m.put("Y", CtuluLib.DEFAULT_NUMBER_FORMAT.format(_y)); _m.put(TrResource.getS("El\xE9ment englobant"), CtuluLibString.getString(_element + 1)); - final EfInterpolator interpolator = getInterpolator(); + final EfGridDataInterpolator interpolator = getInterpolator(); for (int i = 0; i < variable_.length; i++) { try { _m.put(variable_[i].getName(), CtuluLib.DEFAULT_NUMBER_FORMAT.format(interpolator.interpolate(_element, _x, @@ -859,8 +859,8 @@ return null; } - public EfInterpolator getInterpolator() { - if (interpolator_ == null) interpolator_ = new EfInterpolator(this, createVectorInterpolation()); + public EfGridDataInterpolator getInterpolator() { + if (interpolator_ == null) interpolator_ = new EfGridDataInterpolator(this, createVectorInterpolation()); return interpolator_; } @@ -1054,7 +1054,7 @@ */ public boolean interpolate(final H2dVariableType[] _t, final int _time, final double[] _values, final int _elementIdx, final double _x, final double _y) { - final EfInterpolator interpolator = getInterpolator(); + final EfGridDataInterpolator interpolator = getInterpolator(); for (int i = _t.length - 1; i >= 0; i--) { try { _values[i] = interpolator.interpolate(_elementIdx, _x, _y, _t[i], _time); @@ -1414,8 +1414,8 @@ // } public String getId(){ -// if(id_==null) -// id_=generateId(); + if(id_==null) + id_=generateId(); return id_; } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTimeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTimeModel.java 2008-10-30 17:09:20 UTC (rev 4121) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTimeModel.java 2008-10-30 17:10:26 UTC (rev 4122) @@ -34,6 +34,8 @@ */ public class TrPostTimeModel { + + /** * Un modele pour les pas de temps. * @@ -115,6 +117,14 @@ public TrPostTimeModel() { super(); } + + /** + * @return + * @see org.fudaa.fudaa.tr.post.TrPostTimeModel.TimeListModel#getTimesInSec() + */ + public double[] getTimesInSec() { + return getTimeListModel().getTimesInSec(); + } CtuluExpr buildExpr() { final CtuluExpr r = expr_ == null ? new CtuluExpr() : new CtuluExpr(expr_); Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostVisuPanel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostVisuPanel.java 2008-10-30 17:09:20 UTC (rev 4121) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostVisuPanel.java 2008-10-30 17:10:26 UTC (rev 4122) @@ -36,7 +36,6 @@ import org.fudaa.ebli.calque.ZCalqueSondeInterface; import org.fudaa.ebli.calque.ZEbliCalquePanelController; import org.fudaa.ebli.calque.ZEbliCalquesPanelPersistManager; -import org.fudaa.ebli.calque.ZebliCalquePersist; import org.fudaa.ebli.calque.action.CalqueActionSonde; import org.fudaa.ebli.calque.action.EbliCalqueActionTimeChooser; import org.fudaa.ebli.calque.action.EbliCalqueActionVariableChooser; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |