|
From: <bma...@us...> - 2015-06-22 14:45:19
|
Revision: 9134
http://sourceforge.net/p/fudaa/svn/9134
Author: bmarchan
Date: 2015-06-22 14:45:16 +0000 (Mon, 22 Jun 2015)
Log Message:
-----------
Matrice de transformation repere d'origine vers repere de calcul
Modified Paths:
--------------
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlParam.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlReader.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlWriter.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java
Added Paths:
-----------
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransformationMatrix.java
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlParam.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlParam.java 2015-06-16 16:36:57 UTC (rev 9133)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlParam.java 2015-06-22 14:45:16 UTC (rev 9134)
@@ -11,4 +11,12 @@
public GrPoint iaCenter;
/** La liste ordonn\xE9e des noms des images source */
public String[] srcImages;
+ /** Translation X */
+ public double tx;
+ /** Translation Y */
+ public double ty;
+ /** Translation Z */
+ public double tz;
+ /** Rotation Z */
+ public double rz;
}
\ No newline at end of file
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlReader.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlReader.java 2015-06-16 16:36:57 UTC (rev 9133)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlReader.java 2015-06-22 14:45:16 UTC (rev 9134)
@@ -79,6 +79,17 @@
params.srcImages[ind]=name;
}
+ // La matrice de transformation espace d'origine => espace de calcul.
+ NodeList ndlMat=doc.getElementsByTagName("transfMatrix");
+ for (int i=0; i<ndlMat.getLength(); i++) {
+ Element elMat=(Element)ndlMat.item(i);
+ params.tx=Double.parseDouble(elMat.getAttribute("tx"));
+ params.ty=Double.parseDouble(elMat.getAttribute("ty"));
+ params.tz=Double.parseDouble(elMat.getAttribute("tz"));
+ params.rz=Double.parseDouble(elMat.getAttribute("rz"));
+ }
+
+
// // Les transects
// NodeList ndlTrans=doc.getElementsByTagName("transect");
// params.transects=new PivTransect[ndlTrans.getLength()];
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlWriter.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlWriter.java 2015-06-16 16:36:57 UTC (rev 9133)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlWriter.java 2015-06-22 14:45:16 UTC (rev 9134)
@@ -38,6 +38,10 @@
}
writer.endTag("srcImages");
+ // La rotation/translation appliqu\xE9s \xE0 l'espace r\xE9el.
+ writer.startTagWithAttrs("transfMatrix", new String[]{"tx","ty","tz","rz"}, new String[]{ "" + _param.tx,"" + _param.ty,"" + _param.tz,"" + _param.rz});
+ writer.endTag("transfMatrix");
+
// writeTransects(writer, _param.transects);
writer.finish();
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2015-06-16 16:36:57 UTC (rev 9133)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2015-06-22 14:45:16 UTC (rev 9134)
@@ -1,6 +1,7 @@
package org.fudaa.fudaa.piv.metier;
import java.awt.Dimension;
+import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileFilter;
@@ -102,6 +103,10 @@
protected Dimension imgPgmSize=null;
/** True : Les images d'origine ont \xE9t\xE9 modifi\xE9es */
protected boolean areSrcImagesChanged=true;
+ /** La matrice de transformation pour passer du systeme d'origine au systeme de calcul. Identit\xE9 au lancement */
+ protected PivTransformationMatrix matrix=new PivTransformationMatrix();
+ /** Definit si les coordonn\xE9es affich\xE9es le sont dans le system de coordonn\xE9es d'origine ou de calcul. */
+ protected boolean isOriginalSystemCoords_;
/** Les listeners notifi\xE9s lors d'une modification du projet. */
protected HashSet<PivProjectStateListener> listeners=new HashSet<PivProjectStateListener>();
@@ -1018,6 +1023,40 @@
return usedInstantResults;
}
+ /**
+ * @param _matrix La matrice de transformation pour passer du repere origine au repere calcul
+ */
+ public void setMatrixToComputation(PivTransformationMatrix _matrix) {
+ matrix=_matrix;
+ isModified=true;
+ fireProjectStateChanged("matrix");
+ }
+
+ /**
+ * @return La matrice de transformation pour passer du repere origine au repere calcul
+ */
+ public PivTransformationMatrix getMatrixToComputation() {
+ return matrix;
+ }
+
+ public void setOriginalSystemCoords(boolean _b) {
+ isOriginalSystemCoords_=_b;
+ }
+
+ public boolean isOriginalSystemCoords() {
+ return isOriginalSystemCoords_;
+ }
+
+ /**
+ * @return La matrice de transformation pour le systeme courant.
+ */
+ public PivTransformationMatrix getMatrixForCurrentSystem() {
+ if (isOriginalSystemCoords())
+ return matrix;
+ else
+ return new PivTransformationMatrix();
+ }
+
void fireProjectStateChanged(String _prop) {
for (PivProjectStateListener listener : listeners) {
listener.projectStateChanged(this,_prop);
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java 2015-06-16 16:36:57 UTC (rev 9133)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java 2015-06-22 14:45:16 UTC (rev 9134)
@@ -448,6 +448,12 @@
return names.indexOf(o1.getName()) - names.indexOf(o2.getName());
}
});
+
+ // Affectation de la transformation.
+ prj_.matrix=new PivTransformationMatrix();
+ prj_.matrix.setToTranslation(paramXml.tx, paramXml.ty);
+ prj_.matrix.setTranslateZ(paramXml.tz);
+ prj_.matrix.rotate(paramXml.rz);
prj_.srcFiles_.clear();
prj_.srcFiles_.addAll(Arrays.asList(srcFiles));
@@ -467,6 +473,12 @@
for (int i=0; i<prj_.srcFiles_.size(); i++) {
params.srcImages[i]=prj_.srcFiles_.get(i).getName();
}
+
+ // La matrice de transformation
+ params.tx=prj_.matrix.getTranslateX();
+ params.ty=prj_.matrix.getTranslateY();
+ params.tz=prj_.matrix.getTranslateZ();
+ params.rz=prj_.matrix.getRotationZ();
File globalFile = new File(prj_.getOutputDir(), "global.xml");
new PivGlobalXmlWriter().write(params, globalFile, _prog);
Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransformationMatrix.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransformationMatrix.java (rev 0)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransformationMatrix.java 2015-06-22 14:45:16 UTC (rev 9134)
@@ -0,0 +1,51 @@
+package org.fudaa.fudaa.piv.metier;
+
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+
+import org.fudaa.ebli.geometrie.GrPoint;
+
+/**
+ * Une classe pour d\xE9finir la translation et la rotation du systeme d'origine vers le systeme de calcul. On ajoute aussi
+ * une translation en Z qui ne sert pas pour l'affichage, mais pour les calculs.
+ * @author Bertrand Marchand (mar...@de...)
+ */
+public class PivTransformationMatrix extends AffineTransform {
+ /** Translation suivant Z */
+ private double tz_=0;
+ /** Des caches */
+ Point2D pt2D=new Point2D.Double();
+
+ /**
+ * @return L'angle de rotation suivant Z (en radians).
+ */
+ public double getRotationZ() {
+ return Math.atan2(getShearY(),getScaleX());
+ }
+
+ /**
+ * @param _tz La translation suivant Z.
+ */
+ public void setTranslateZ(double _tz) {
+ tz_=_tz;
+ }
+
+ /**
+ * @return La translation suivant Z.
+ */
+ public double getTranslateZ() {
+ return tz_;
+ }
+
+ /**
+ * Transforme le point suivant la matrice.
+ * @param _pt Le point d'entr\xE9e.
+ * @return LE point transform\xE9.
+ */
+ public GrPoint transform(GrPoint _pt) {
+ pt2D.setLocation(_pt.x_, _pt.y_);
+ transform(pt2D, pt2D);
+ GrPoint pt=new GrPoint(pt2D.getX(),pt2D.getY(),_pt.z_+tz_);
+ return pt;
+ }
+}
Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransformationMatrix.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|