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