|
From: <bma...@us...> - 2011-09-30 12:02:31
|
Revision: 6467
http://fudaa.svn.sourceforge.net/fudaa/?rev=6467&view=rev
Author: bmarchan
Date: 2011-09-30 12:02:24 +0000 (Fri, 30 Sep 2011)
Log Message:
-----------
Add: Affichage des vecteurs d?\195?\169bit
Modified Paths:
--------------
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java
Added Paths:
-----------
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowFlowAction.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivFlowResultsModel.java
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-09-29 21:13:23 UTC (rev 6466)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-09-30 12:02:24 UTC (rev 6467)
@@ -222,6 +222,7 @@
setEnabledForAction("PIV_COMPUTE", bprjOpen);
setEnabledForAction("COMPUTE_AVERAGE", bprjOpen);
setEnabledForAction("RESULTS_SHOW_VELOCITIES", bprjOpen && project.getVelResults()!=null);
+ setEnabledForAction("SHOW_FLOW_RESULTS", bprjOpen && project.getFlowResults()!=null);
refreshTitle();
}
@@ -680,6 +681,7 @@
mn.addSeparator(PivResource.getS("Post-traitement"));
mn.add(get2dFrame().getVisuPanel().getNewTransectAction());
mn.add(new PivComputeFlowAction(this));
+ mn.add(get2dFrame().getVisuPanel().getShowFlowAction().buildMenuItem(EbliComponentFactory.INSTANCE));
mn.addSeparator(PivResource.getS("Vue"));
ButtonGroup bg=new ButtonGroup();
AbstractButton itOriginalView=get2dFrame().getVisuPanel().getOriginalViewAction().buildMenuItem(EbliComponentFactory.INSTANCE);
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2011-09-29 21:13:23 UTC (rev 6466)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2011-09-30 12:02:24 UTC (rev 6467)
@@ -44,10 +44,12 @@
import org.fudaa.fudaa.piv.action.PivOriginalViewAction;
import org.fudaa.fudaa.piv.action.PivOrthoGRPAction;
import org.fudaa.fudaa.piv.action.PivRealViewAction;
+import org.fudaa.fudaa.piv.action.PivShowFlowAction;
import org.fudaa.fudaa.piv.action.PivShowVelocityAction;
import org.fudaa.fudaa.piv.action.PivTransfViewAction;
import org.fudaa.fudaa.piv.layer.PivCntGridModel;
import org.fudaa.fudaa.piv.layer.PivControlPointsModel;
+import org.fudaa.fudaa.piv.layer.PivFlowResultsModel;
import org.fudaa.fudaa.piv.layer.PivIASALayer;
import org.fudaa.fudaa.piv.layer.PivIASAModel;
import org.fudaa.fudaa.piv.layer.PivOriginalImageModel;
@@ -125,6 +127,8 @@
ZCalqueEditionInteraction cqEdition_;
/** L'affichage des r\xE9sultats moyenn\xE9s */
ZCalqueFleche cqVelResults;
+ /** L'affichage des r\xE9sultats de d\xE9bit */
+ ZCalqueFleche cqFlowResults;
PivIASAModel mdlIASA;
PivCntGridModel mdlCntGrid;
@@ -137,6 +141,7 @@
PivControlPointsModel mdlRealControlPoints;
PivVelResultsModel mdlVelResults;
PivTransectModel mdlTransect;
+ PivFlowResultsModel mdlFlowResults;
ZEditorDefault editGeom_;
@@ -148,6 +153,7 @@
private PivComputeGridDefinitionAction actComputeGrid_;
private PivOrthoGRPAction actOrthoGRP_;
private PivShowVelocityAction actShowVelocities_;
+ private PivShowFlowAction actShowFlow_;
private PivEditAction actEdit_;
private PivNewTransectAction actNewTransect_;
@@ -213,11 +219,14 @@
mdlOrthoPoints.update();
mdlRealOrthoPoints.update();
}
+ else if ("transect".equals(_prop)) {
+ mdlTransect.update();
+ }
else if("velResults".equals(_prop)) {
mdlVelResults.update();
}
- else if ("transect".equals(_prop)) {
- mdlTransect.update();
+ else if("flowResults".equals(_prop)) {
+ mdlFlowResults.update();
}
getVueCalque().repaint();
@@ -250,6 +259,7 @@
actNewTransect_=new PivNewTransectAction(this);
actNewTransect_.setTransectLayer(cqTransect_);
actShowVelocities_=new PivShowVelocityAction((PivImplementation)getCtuluUI());
+ actShowFlow_=new PivShowFlowAction((PivImplementation)getCtuluUI());
actEdit_=new PivEditAction(this);
getScene().addSelectionListener(actEdit_);
@@ -314,6 +324,14 @@
}
/**
+ * Retourne l'action pour voir les d\xE9bits.
+ * @return L'action.
+ */
+ public EbliActionAbstract getShowFlowAction() {
+ return actShowFlow_;
+ }
+
+ /**
* Retourne l'action pour \xE9diter une g\xE9om\xE9trie.
* @return L'action.
*/
@@ -347,6 +365,7 @@
getCqLegend().enleve(cqIASA_);
getCqLegend().enleve(cqRealControlPoints_);
getCqLegend().enleve(cqVelResults);
+ getCqLegend().enleve(cqFlowResults);
actOriginalView_.putValue(Action.SELECTED_KEY,true);
setCoordinateDefinitions(new EbliCoordinateDefinition[]{DEF_COOR_I,DEF_COOR_J});
@@ -363,6 +382,12 @@
cqVelResults.setLegende(getCqLegend());
addCalque(cqVelResults,true);
}
+ if (projet!=null && projet.getFlowResults()!=null) {
+ cqFlowResults.setLegende(null);
+ cqFlowResults.setLegende(getCqLegend());
+ addCalque(cqFlowResults,true);
+ }
+
addCalque(cqRealOrthoPoints_);
addCalque(cqRealImg_);
@@ -385,6 +410,7 @@
actTransfView_.putValue(Action.SELECTED_KEY,true);
getCqLegend().enleve(cqRealControlPoints_);
getCqLegend().enleve(cqVelResults);
+ getCqLegend().enleve(cqFlowResults);
setCoordinateDefinitions(new EbliCoordinateDefinition[]{DEF_COOR_J,DEF_COOR_I});
@@ -430,6 +456,19 @@
}
/**
+ * Rend visible le calque des d\xE9bits.
+ * @param _b True : Le calque est visible.
+ */
+ public void setFlowLayerVisible(boolean _b) {
+ if (_b) {
+ if (viewMode_==MODE_REAL_VIEW) {
+ addCalque(cqFlowResults, true);
+ }
+ }
+ cqFlowResults.setVisible(_b);
+ }
+
+ /**
* Retourne le mode de vue.
* @return Le mode de vue parmi {@link #MODE_ORIGINAL_VIEW},
* {@link #MODE_REAL_VIEW}, {@link #MODE_TRANSF_VIEW}
@@ -526,6 +565,25 @@
}
}
});
+
+ // Layer des d\xE9bits.
+ cqFlowResults = new ZCalqueFleche() {
+ @Override
+ protected String getFlecheUnit() {
+ return "m/s";
+ }
+ };
+ cqFlowResults.setTitle(PivResource.getS("D\xE9bits"));
+ cqFlowResults.setName("cqRealFlow");
+ // Donne la couleur des fl\xE8ches si pas de palette de couleurs.
+ cqFlowResults.setLineModel(0, new TraceLigneModel(TraceLigne.LISSE, 1, Color.YELLOW.darker()));
+ cqFlowResults.addPropertyChangeListener(new PropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent evt) {
+ if ("visible".equals(evt.getPropertyName())) {
+ actShowFlow_.setSelected((Boolean)evt.getNewValue());
+ }
+ }
+ });
// Layer des transect
cqTransect_= new ZCalqueLigneBriseeEditable();
@@ -622,6 +680,11 @@
cqVelResults.setModele(mdlVelResults);
cqVelResults.setVisible(false);
+ mdlFlowResults=new PivFlowResultsModel();
+ mdlFlowResults.setProjet(projet);
+ cqFlowResults.setModele(mdlFlowResults);
+ cqFlowResults.setVisible(false);
+
mdlTransect=new PivTransectModel();
mdlTransect.setProjet(projet);
cqTransect_.modele(mdlTransect);
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java 2011-09-29 21:13:23 UTC (rev 6466)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java 2011-09-30 12:02:24 UTC (rev 6467)
@@ -18,6 +18,7 @@
import org.fudaa.fudaa.piv.PivPreferences;
import org.fudaa.fudaa.piv.PivProgressionPanel;
import org.fudaa.fudaa.piv.PivResource;
+import org.fudaa.fudaa.piv.PivVisuPanel;
/**
* Une action pour lancer le calcul de d\xE9bit.
@@ -87,7 +88,8 @@
}
impl.message(PivResource.getS("Calcul termin\xE9"), PivResource.getS("Le calcul s'est termin\xE9 avec succ\xE8s"), false);
-// impl.get2dFrame().getVisuPanel().setVelocitiesLayerVisible(false);
+ impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_REAL_VIEW);
+ impl.get2dFrame().getVisuPanel().setFlowLayerVisible(true);
}
};
Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowFlowAction.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowFlowAction.java (rev 0)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowFlowAction.java 2011-09-30 12:02:24 UTC (rev 6467)
@@ -0,0 +1,50 @@
+/*
+ * @creation 3 juil. 2008
+ * @modification $Date:$
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail fud...@li...
+ */
+package org.fudaa.fudaa.piv.action;
+
+import org.fudaa.ebli.commun.EbliActionChangeState;
+import org.fudaa.fudaa.piv.PivImplementation;
+import org.fudaa.fudaa.piv.PivResource;
+import org.fudaa.fudaa.piv.PivVisuPanel;
+
+/**
+ * Une action pour voir les d\xE9bits apr\xE8s calcul en espace r\xE9el.
+ *
+ * @author Bertrand Marchand (mar...@de...)
+ * @version $Id$
+ */
+public class PivShowFlowAction extends EbliActionChangeState {
+ PivImplementation impl;
+
+ /**
+ * Constructeur.
+ * @param _impl L'implementation.
+ */
+ public PivShowFlowAction(PivImplementation _impl) {
+ super(PivResource.getS("Voir les d\xE9bits"), null, "SHOW_FLOW_RESULTS");
+
+ impl=_impl;
+ setEnabled(false);
+ }
+
+
+ @Override
+ public String getEnableCondition() {
+ return PivResource.getS("Il doit exister des r\xE9sultats de calcul de d\xE9bit");
+ }
+
+
+ @Override
+ public void changeAction() {
+ // On bascule dans la bonne vue.
+ if (isSelected()) {
+ impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_REAL_VIEW);
+ }
+ impl.get2dFrame().getVisuPanel().setFlowLayerVisible(isSelected());
+ }
+}
Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowFlowAction.java
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivFlowResultsModel.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivFlowResultsModel.java (rev 0)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivFlowResultsModel.java 2011-09-30 12:02:24 UTC (rev 6467)
@@ -0,0 +1,199 @@
+package org.fudaa.fudaa.piv.layer;
+
+import com.memoire.bu.BuTable;
+import org.fudaa.ctulu.table.CtuluTable;
+import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface;
+import org.fudaa.ebli.calque.ZCalqueFleche;
+import org.fudaa.ebli.calque.ZModeleFleche;
+import org.fudaa.ebli.commun.EbliLib;
+import org.fudaa.ebli.geometrie.GrBoite;
+import org.fudaa.ebli.geometrie.GrPoint;
+import org.fudaa.ebli.geometrie.GrSegment;
+import org.fudaa.ebli.palette.BPaletteInfo.InfoData;
+import org.fudaa.fudaa.piv.metier.PivFlowResults;
+import org.fudaa.fudaa.piv.metier.PivProject;
+
+/**
+ * Un modele pour le trac\xE9 des d\xE9bits sous forme de vecteurs vitesses.
+ *
+ * @author Bertrand Marchand (mar...@de...)
+ * @version $Id$
+ */
+public class PivFlowResultsModel implements ZModeleFleche {
+ /** Le projet. **/
+ PivProject prj_;
+ /** Le point, toujours le m\xEAme, pour retourner les coordonn\xE9es 3D d'un r\xE9sultat. */
+ GrPoint ptCache_=new GrPoint();
+
+ /**
+ * Le constructeur.
+ */
+ public PivFlowResultsModel() {
+ }
+
+ /**
+ * Redefinit le projet, et remet a jour le modele.
+ * @param _prj Le projet courant.
+ */
+ public void setProjet(PivProject _prj) {
+ prj_=_prj;
+ update();
+ }
+
+ /**
+ * Met a jour le mod\xE8le. Cette m\xE9thode est vide, le mod\xE8le se base directement
+ * sur le projet.
+ */
+ public void update() {}
+
+ /** Non implement\xE9 */
+ @Override
+ public boolean interpolate(GrSegment _seg, double _x, double _y) {
+ return false;
+ }
+
+ /**
+ * Initialise le segment depuis les points d'indice _i et _i+1
+ * @param _s Le segement.
+ * @param _i L'indice du premier point.
+ * @param _force Inutilis\xE9.
+ * @return Fix\xE9 \xE0 true.
+ */
+ @Override
+ public boolean segment(GrSegment _s, int _i, boolean _force) {
+ _s.o_.x_=getX(_i);
+ _s.o_.y_=getY(_i);
+ _s.e_.x_=getX(_i)+getVx(_i);
+ _s.e_.y_=getY(_i)+getVy(_i);
+
+ return true;
+ }
+
+ /**
+ * Retourne la norme de la vitesse au point d'indice _i
+ * @param _i L'indice du point.
+ * @return La norme.
+ */
+ @Override
+ public double getNorme(int _i) {
+ double vx=getVx(_i);
+ double vy=getVy(_i);
+ return Math.sqrt(vx*vx+vy*vy);
+ }
+
+ /**
+ * Retourne la vitesse suivant X au point d'indice _i
+ * @param _i L'indice du point.
+ * @return La vitesse.
+ */
+ @Override
+ public double getVx(int _i) {
+ if (prj_.getFlowResults()==null) return 0;
+ return prj_.getFlowResults().getVx(_i);
+ }
+
+ /**
+ * Retourne la vitesse suivant Y au point d'indice _i
+ * @param _i L'indice du point.
+ * @return La vitesse.
+ */
+ @Override
+ public double getVy(int _i) {
+ if (prj_.getFlowResults()==null) return 0;
+ return prj_.getFlowResults().getVy(_i);
+ }
+
+ /**
+ * Retourne la coordonn\xE9e X au point d'indice _i
+ * @param _i L'indice du point.
+ * @return La coordonn\xE9e.
+ */
+ @Override
+ public double getX(int _i) {
+ if (prj_.getFlowResults()==null) return 0;
+ return prj_.getFlowResults().getX(_i);
+ }
+
+ /**
+ * Retourne la coordonn\xE9e Y au point d'indice _i
+ * @param _i L'indice du point.
+ * @return La coordonn\xE9e.
+ */
+ @Override
+ public double getY(int _i) {
+ if (prj_.getFlowResults()==null) return 0;
+ return prj_.getFlowResults().getY(_i);
+ }
+
+ /** Non implement\xE9 */
+ @Override
+ public double getZ1(int _i) {
+ return 0;
+ }
+
+ /** Non implement\xE9 */
+ @Override
+ public double getZ2(int _i) {
+ return 0;
+ }
+
+ @Override
+ public BuTable createValuesTable(ZCalqueAffichageDonneesInterface _layer) {
+ return new CtuluTable(new ZCalqueFleche.ValueTableModel(this));
+ }
+
+ @Override
+ public void fillWithInfo(InfoData _d, ZCalqueAffichageDonneesInterface _layer) {
+ final ZCalqueFleche.StringInfo info = new ZCalqueFleche.StringInfo();
+ info.titleIfOne_ = EbliLib.getS("Resultats: point n\xB0");
+ info.title_ = EbliLib.getS("Resultats");
+ ZCalqueFleche.fillWithInfo(_d, _layer.getLayerSelection(), this, info);
+ }
+
+ /** Non implement\xE9 */
+ @Override
+ public boolean isValuesTableAvailable() {
+ return true;
+ }
+
+ /**
+ * Retourne la boite englobante des points du mod\xE8le.
+ * @return La boite.
+ */
+ @Override
+ public GrBoite getDomaine() {
+ PivFlowResults res=prj_.getFlowResults();
+ if (res==null) return null;
+
+ GrBoite bt=new GrBoite();
+ for (int i=0; i<res.getNombre(); i++) {
+ bt.ajuste(res.getX(i),res.getY(i),0);
+ }
+ return bt;
+ }
+
+ /**
+ * Retourne le nombre de points du mod\xE8le.
+ * @return Le nombre de points.
+ */
+ @Override
+ public int getNombre() {
+ if (prj_.getFlowResults()==null) return 0;
+ return prj_.getFlowResults().getNombre();
+ }
+
+ /** Non implement\xE9 */
+ @Override
+ public Object getObject(int _ind) {
+ return null;
+ }
+
+ public GrPoint getVertexForObject(int _ind, int _idVertex) {
+ if (prj_.getFlowResults()==null) return null;
+ if (_ind!=0) return null;
+
+ ptCache_.x_=getX(_idVertex);
+ ptCache_.y_=getY(_idVertex);
+ return ptCache_;
+ }
+}
Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivFlowResultsModel.java
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|