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. |