|
From: <bma...@us...> - 2017-05-04 14:27:48
|
Revision: 9550
http://sourceforge.net/p/fudaa/svn/9550
Author: bmarchan
Date: 2017-05-04 14:27:45 +0000 (Thu, 04 May 2017)
Log Message:
-----------
Distinction vitesses transect calculees/interpolees
Modified Paths:
--------------
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivShow3DTransectPanel.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivDischargeReader.java
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/metier/PivFlowResults.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivGlobalFlowResults.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivResultsI.java
Added Paths:
-----------
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivFlowResultsLayer.java
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java 2017-05-04 12:21:04 UTC (rev 9549)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java 2017-05-04 14:27:45 UTC (rev 9550)
@@ -49,6 +49,7 @@
import org.fudaa.fudaa.piv.action.PivRealViewAction;
import org.fudaa.fudaa.piv.action.PivTransectParamAction;
import org.fudaa.fudaa.piv.layer.PivControlPointsModel;
+import org.fudaa.fudaa.piv.layer.PivFlowResultsLayer;
import org.fudaa.fudaa.piv.layer.PivFlowResultsModel;
import org.fudaa.fudaa.piv.layer.PivImageRasterLayer;
import org.fudaa.fudaa.piv.layer.PivOrthoPointsModel;
@@ -111,7 +112,7 @@
/** L'affichage des vitesses filtr\xE9es instantan\xE9es */
PivVelResultsLayer cqInstantVelFltResults_;
/** L'affichage des r\xE9sultats de d\xE9bit */
- ZCalqueFleche cqFlowResults;
+ PivFlowResultsLayer cqFlowResults;
/** L'affichage des r\xE9sultats instantan\xE9s filtr\xE9s */
PivResultsLayer cqInstantFltIso_;
/** L'affichage des r\xE9sultats instantan\xE9s */
@@ -290,18 +291,13 @@
cqInstantVelFltResults_.setVisible(false);
// Layer des d\xE9bits.
- cqFlowResults = new ZCalqueFleche() {
- @Override
- protected String getFlecheUnit() {
- return "m/s";
- }
- };
+ cqFlowResults = new PivFlowResultsLayer();
cqFlowResults.setTitle(PivResource.getS("Vit. moy. prof."));
cqFlowResults.setLongTitle(PivResource.getS("Vitesses moyenn\xE9es sur la profondeur"));
cqFlowResults.setTitleModifiable(true);
cqFlowResults.setName("cqRealFlow");
// Donne la couleur des fl\xE8ches si pas de palette de couleurs.
- cqFlowResults.setLineModel(0, new TraceLigneModel(TraceLigne.LISSE, 1, Color.ORANGE));
+ cqFlowResults.setLineModel(0, new TraceLigneModel(TraceLigne.LISSE, 2, Color.ORANGE));
// Layer des transect
cqTransect_= new PivTransectLayer();
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivShow3DTransectPanel.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivShow3DTransectPanel.java 2017-05-04 12:21:04 UTC (rev 9549)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivShow3DTransectPanel.java 2017-05-04 14:27:45 UTC (rev 9550)
@@ -28,8 +28,6 @@
public class PivShow3DTransectPanel extends CtuluDialogPanel {
PivImplementation impl_;
EG3dGraph pnGraph_;
- private EG3dDefaultDataRenderer transRenderer_;
- private EG3dDefaultDataRenderer disRenderer_;
/** Le morphisme pour passer des donn\xE9es data vers le repere courant */
GrMorphisme toReal_;
@@ -149,31 +147,31 @@
double vy;
double lgFleche;
- switch (_idx%5) {
+ switch (_idx % 5) {
// Point d'origine
case 0:
default:
- return (float)res_.getY(_idx/5);
+ return (float) res_.getY(_idx / 5);
// Point extremit\xE9
case 1:
case 3:
- return (float)(res_.getY(_idx/5)+res_.getValue(_idx/5,ResultType.VY)*ratio_);
- // Point extremite 1 fleche
- case 2:
- vx=res_.getValue(_idx/5,ResultType.VX)*ratio_;
- vy=res_.getValue(_idx/5,ResultType.VY)*ratio_;
- lgFleche=Math.sqrt(vx*vx+vy*vy)/10.;
- double angVit=Math.atan2(vy, vx);
- double angFleche=angVit+5./6.*Math.PI;
- return (float)(lgFleche*Math.sin(angFleche)+res_.getY(_idx/5)+vy);
- // Point extremite 2 fleche
- case 4:
- vx=res_.getValue(_idx/5,ResultType.VX)*ratio_;
- vy=res_.getValue(_idx/5,ResultType.VY)*ratio_;
- lgFleche=Math.sqrt(vx*vx+vy*vy)/10.;
- angVit=Math.atan2(vy, vx);
- angFleche=angVit-5./6.*Math.PI;
- return (float)(lgFleche*Math.sin(angFleche)+res_.getY(_idx/5)+vy);
+ return (float) (res_.getY(_idx / 5) + res_.getValue(_idx / 5, ResultType.VY) * ratio_);
+ // Point extremite 1 fleche
+ case 2:
+ vx=res_.getValue(_idx / 5, ResultType.VX) * ratio_;
+ vy=res_.getValue(_idx / 5, ResultType.VY) * ratio_;
+ lgFleche=Math.sqrt(vx * vx + vy * vy) / 10.;
+ double angVit=Math.atan2(vy, vx);
+ double angFleche=angVit + 5. / 6. * Math.PI;
+ return (float) (lgFleche * Math.sin(angFleche) + res_.getY(_idx / 5) + vy);
+ // Point extremite 2 fleche
+ case 4:
+ vx=res_.getValue(_idx / 5, ResultType.VX) * ratio_;
+ vy=res_.getValue(_idx / 5, ResultType.VY) * ratio_;
+ lgFleche=Math.sqrt(vx * vx + vy * vy) / 10.;
+ angVit=Math.atan2(vy, vx);
+ angFleche=angVit - 5. / 6. * Math.PI;
+ return (float) (lgFleche * Math.sin(angFleche) + res_.getY(_idx / 5) + vy);
}
}
@@ -181,8 +179,64 @@
public float getZ(int _idx) {
return (float)zniv_;
}
+
+ /**
+ * @return True, si le trac\xE9 entre le point pr\xE9c\xE9dent et celui ci correspondant \xE0 une vitesse extrapol\xE9e.
+ */
+ public boolean isExtrapolated(int _idx) {
+ // 1er point ligne horizontale
+ if (_idx<2) {
+ return false;
+ }
+ _idx-=2;
+
+ return res_.getValue(_idx/5, ResultType.COMPUTE_MODE)!=0;
+ }
}
+ class DischargeRenderer extends EG3dDefaultDataRenderer {
+ DischargeModel mdl_;
+
+ public DischargeRenderer(DischargeModel _mdl) {
+ mdl_=_mdl;
+
+ setLineColor(0, Color.ORANGE.darker());
+ setLineThickness(0, 1.f);
+ }
+
+ @Override
+ public int getLineStyle(int _idx) {
+ if (_idx==0)
+ return TraceLigne.POINTILLE;
+ if (_idx==1)
+ return TraceLigne.INVISIBLE;
+
+ if ((_idx-2)%5==4)
+ return TraceLigne.INVISIBLE;
+ else
+ return lm.getTypeTrait();
+ }
+
+ /* (non-Javadoc)
+ * @see org.fudaa.ebli.graphe3D.renderer.EG3dDefaultDataRenderer#getLineColor(int)
+ */
+ @Override
+ public Color getLineColor(int _idx) {
+ if (mdl_.isExtrapolated(_idx))
+ return new Color(200,120,0);
+ else
+ return Color.ORANGE;
+ }
+ }
+
+ class TransectRenderer extends EG3dDefaultDataRenderer {
+ public TransectRenderer() {
+
+ setLineColor(0, Color.BLUE);
+ setLineThickness(0, 1.f);
+ }
+ }
+
/**
* Constructeur.
*/
@@ -194,28 +248,6 @@
private void customize() {
setLayout(new BorderLayout());
- transRenderer_=new EG3dDefaultDataRenderer();
- transRenderer_.setLineColor(0, Color.ORANGE);
- transRenderer_.setLineThickness(0, 1.f);
-
- disRenderer_=new EG3dDefaultDataRenderer() {
- @Override
- public int getLineStyle(int _idx) {
- if (_idx==0)
- return TraceLigne.TIRETE;
- if (_idx==1)
- return TraceLigne.INVISIBLE;
-
- _idx-=2;
- if (_idx%5==4)
- return TraceLigne.INVISIBLE;
- else
- return lm.getTypeTrait();
- }
- };
- disRenderer_.setLineColor(0, Color.BLUE.darker());
- disRenderer_.setLineThickness(0, 1.f);
-
EG3dGraphPanel pn=new EG3dGraphPanel();
pn.setPreferredSize(new Dimension(700,500));
@@ -245,7 +277,7 @@
for (int i=0; i<_isels.length; i++) {
TransectModel mdl=new TransectModel(transects[_isels[i]].getStraight().applique(toReal_));
pnGraph_.addData(mdl);
- pnGraph_.setDataRenderer(i, transRenderer_);
+ pnGraph_.setDataRenderer(i, new TransectRenderer());
}
PivFlowResults[] res=impl_.getCurrentProject().getFlowResults();
@@ -258,7 +290,7 @@
DischargeModel mdl=new DischargeModel(pl,ptZ.z_,resAdapter);
pnGraph_.addData(mdl);
- pnGraph_.setDataRenderer(i+_isels.length, disRenderer_);
+ pnGraph_.setDataRenderer(i+_isels.length, new DischargeRenderer(mdl));
}
}
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivDischargeReader.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivDischargeReader.java 2017-05-04 12:21:04 UTC (rev 9549)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivDischargeReader.java 2017-05-04 14:27:45 UTC (rev 9550)
@@ -62,6 +62,7 @@
TDoubleArrayList ly=new TDoubleArrayList();
TDoubleArrayList lvx=new TDoubleArrayList();
TDoubleArrayList lvy=new TDoubleArrayList();
+ TDoubleArrayList lmode=new TDoubleArrayList();
if (super.in_ == null) {
analyze_.addErrorFromFile(PivResource.getS("Flux d'entr\xE9e non trouv\xE9"), 0);
@@ -98,8 +99,6 @@
while (true) {
in_.readFields();
- // Pour l'instant, pas de r\xE9cup\xE9ration des vitesses extrapol\xE9es.
- if (in_.doubleField(8) == 0) {
// X
lx.add(in_.doubleField(2));
// Y
@@ -108,7 +107,8 @@
lvx.add(in_.doubleField(5));
// VY
lvy.add(in_.doubleField(6));
- }
+ // Extrapolation
+ lmode.add(in_.doubleField(8));
lu+=84; // Si le formattage en fortran
@@ -124,6 +124,7 @@
res.setY(ly.toNativeArray());
res.setVx(lvx.toNativeArray());
res.setVy(lvy.toNativeArray());
+ res.setComputeMode(lmode.toNativeArray());
}
catch (final IOException e) {
analyze_.addErrorFromFile(PivResource.getS("Une erreur de lecture s'est produite"), in_.getLineNumber());
Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivFlowResultsLayer.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivFlowResultsLayer.java (rev 0)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivFlowResultsLayer.java 2017-05-04 14:27:45 UTC (rev 9550)
@@ -0,0 +1,106 @@
+package org.fudaa.fudaa.piv.layer;
+
+import java.awt.Color;
+
+import org.fudaa.ebli.calque.ZCalqueFleche;
+import org.fudaa.ebli.commun.EbliUIProperties;
+import org.fudaa.ebli.geometrie.GrSegment;
+import org.fudaa.ebli.palette.BPalettePlage;
+import org.fudaa.ebli.palette.BPlage;
+import org.fudaa.ebli.trace.TraceIconModel;
+import org.fudaa.ebli.trace.TraceLigne;
+import org.fudaa.ebli.trace.TraceLigneModel;
+import org.fudaa.fudaa.piv.PivResource;
+
+import com.memoire.fu.FuLog;
+
+/**
+ * Un modele pour le trac\xE9 des d\xE9bits sous forme de vecteurs vitesses.
+ * @author Bertrand Marchand (mar...@de...)
+ */
+public class PivFlowResultsLayer extends ZCalqueFleche {
+
+ /**
+ * Construction du calque.
+ */
+ public PivFlowResultsLayer() {
+ super();
+
+ definePalette();
+ }
+
+ @Override
+ public void initFrom(final EbliUIProperties _p) {
+ if (_p != null) {
+ super.initFrom(_p);
+ }
+
+ if (paletteCouleur_ == null || paletteCouleur_.getNbPlages() != 2) {
+ definePalette();
+ }
+ }
+
+ /**
+ * Definition de la palette (utilis\xE9e pour les couleurs de trait et la l\xE9gende)
+ */
+ protected void definePalette() {
+ BPalettePlage pal=new BPalettePlage();
+ BPlage[] plages=new BPlage[2];
+ plages[0]=new BPlage();
+ plages[0].setMin(-0.5);
+ plages[0].setMax(0.5);
+ plages[0].setCouleur(Color.ORANGE);
+ plages[0].setLegende(PivResource.getS("Calcul\xE9es"));
+
+ plages[1]=new BPlage();
+ plages[1].setMin(0.5);
+ plages[1].setMax(1.5);
+ plages[1].setCouleur(new Color(200,120,0));
+ plages[1].setLegende(PivResource.getS("Interpol\xE9es"));
+ pal.setPlages(plages);
+ setPaletteCouleurPlages(pal);
+ }
+
+ @Override
+ public boolean isPaletteModifiable() {
+ return true;
+ }
+
+
+ /**
+ * On recupere la couleur des vecteurs suivant le mode de calcul du vecteur.
+ */
+ @Override
+ protected boolean updateTraceLigne(TraceLigneModel _ligne, TraceIconModel _icone, GrSegment _s, int _idx) {
+ Color color=getPaletteColorFor(modeleDonnees().getComputeMode(_idx));
+ if (color != null) {
+ _ligne.setCouleur(color);
+ _ligne.setTypeTrait(ligneModel_.getTypeTrait());
+ }
+ // Trait invisible
+ else {
+ _ligne.setCouleur(ligneModel_.getCouleur());
+ _ligne.setTypeTrait(TraceLigne.INVISIBLE);
+ }
+ return true;
+ }
+
+ @Override
+ public PivFlowResultsModel modeleDonnees() {
+ return (PivFlowResultsModel)modele_;
+ }
+
+ public void setModele(PivFlowResultsModel _s) {
+ if (_s==null || _s instanceof PivFlowResultsModel)
+ setFlecheModele(_s);
+ else {
+ FuLog.error(new Throwable("PivFlowResultsModel is expected"));
+ }
+ }
+
+ @Override
+ protected String getFlecheUnit() {
+ return "m/s";
+ }
+
+}
Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivFlowResultsLayer.java
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: 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 2017-05-04 12:21:04 UTC (rev 9549)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivFlowResultsModel.java 2017-05-04 14:27:45 UTC (rev 9550)
@@ -147,6 +147,10 @@
public double getZ2(int _i) {
return 0;
}
+
+ public double getComputeMode(int _i) {
+ return res_.getComputeMode(_i);
+ }
@Override
public BuTable createValuesTable(ZCalqueAffichageDonneesInterface _layer) {
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivFlowResults.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivFlowResults.java 2017-05-04 12:21:04 UTC (rev 9549)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivFlowResults.java 2017-05-04 14:27:45 UTC (rev 9550)
@@ -29,6 +29,8 @@
protected double[] vx;
/** Les vitesses suivant Vy */
protected double[] vy;
+ /** Mode de calcul : Si 1, la vitesse est extrapol\xE9e. 0 : Calcul\xE9e */
+ protected double[] computeMode;
/**
* @return Le debit
@@ -156,6 +158,14 @@
public void setVy(double[] _vy) {
vy=_vy;
}
+
+ /**
+ * Definit le caract\xE8re extrapol\xE9 ou calcul\xE9 des vitesses.
+ * @param _computeMode Si 1 : Extrapol\xE9e, 0 : Calcul\xE9e.
+ */
+ public void setComputeMode(double[] _computeMode) {
+ computeMode = _computeMode;
+ }
@Override
public boolean hasResult(ResultType _tpRes) {
@@ -164,7 +174,7 @@
@Override
public ResultType[] getResults() {
- return new ResultType[]{ResultType.VX,ResultType.VY,ResultType.FULL_DISCHARGE, ResultType.WETTED_AREA, ResultType.MEAN_VELOCITY, ResultType.WATER_ELEVATION, ResultType.MEASURED_DISCHARGE};
+ return new ResultType[]{ResultType.VX, ResultType.VY, ResultType.COMPUTE_MODE, ResultType.FULL_DISCHARGE, ResultType.WETTED_AREA, ResultType.MEAN_VELOCITY, ResultType.WATER_ELEVATION, ResultType.MEASURED_DISCHARGE};
}
@Override
@@ -178,6 +188,8 @@
return getVx(_ind);
else if (ResultType.VY.equals(_tpRes))
return getVy(_ind);
+ else if (ResultType.COMPUTE_MODE.equals(_tpRes))
+ return computeMode[_ind];
else if (ResultType.FULL_DISCHARGE.equals(_tpRes))
return discharge;
else if (ResultType.WETTED_AREA.equals(_tpRes))
@@ -198,6 +210,8 @@
return vy;
else if (ResultType.VY.equals(_tpRes))
return vy;
+ else if (ResultType.COMPUTE_MODE.equals(_tpRes))
+ return computeMode;
else if (ResultType.FULL_DISCHARGE.equals(_tpRes))
return new double[]{discharge};
else if (ResultType.WETTED_AREA.equals(_tpRes))
@@ -224,6 +238,8 @@
vx[_ind] = _val;
else if (ResultType.VY.equals(_tpRes))
vy[_ind] = _val;
+ else if (ResultType.COMPUTE_MODE.equals(_tpRes))
+ computeMode[_ind] = _val;
else if (ResultType.FULL_DISCHARGE.equals(_tpRes))
discharge = _val;
else if (ResultType.WETTED_AREA.equals(_tpRes))
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivGlobalFlowResults.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivGlobalFlowResults.java 2017-05-04 12:21:04 UTC (rev 9549)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivGlobalFlowResults.java 2017-05-04 14:27:45 UTC (rev 9550)
@@ -54,6 +54,14 @@
return -1;
}
+ public double getComputeMode(int _i) {
+ PivResultsI res=getRes(_i);
+ if (res!=null)
+ return res.getValue(_i-cpt_,ResultType.COMPUTE_MODE);
+
+ return -1;
+ }
+
/**
* @return Le nombre de points de v\xE9locit\xE9.
*/
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivResultsI.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivResultsI.java 2017-05-04 12:21:04 UTC (rev 9549)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivResultsI.java 2017-05-04 14:27:45 UTC (rev 9550)
@@ -22,6 +22,8 @@
CORREL(true),
OMEGA(true),
DIVERG(true),
+ /** Mode de calcul des vitesses sur les transect : Extrapol\xE9e si valeur 1, calcul\xE9e si 0. */
+ COMPUTE_MODE(true),
/** D\xE9bit total */
FULL_DISCHARGE(false),
/** D\xE9bit mesur\xE9 */
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|