[Lutinmatrix-commits] r103 - in lutinmatrix/tags: . lutinmatrix-1.1 lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix lutinmatrix-1.1/src/site
Author: chatellier Date: 2008-10-24 08:18:46 +0000 (Fri, 24 Oct 2008) New Revision: 103 Added: lutinmatrix/tags/lutinmatrix-1.1/ lutinmatrix/tags/lutinmatrix-1.1/pom.xml lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/BasicMatrix.java lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MapFunction.java lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MatrixHelper.java lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MatrixIteratorImpl.java lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MatrixND.java lutinmatrix/tags/lutinmatrix-1.1/src/site/site.xml Removed: lutinmatrix/tags/lutinmatrix-1.1/pom.xml lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/BasicMatrix.java lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MapFunction.java lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MatrixHelper.java lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MatrixIteratorImpl.java lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MatrixND.java lutinmatrix/tags/lutinmatrix-1.1/src/site/site.xml Log: [maven-release-plugin] copy for tag lutinmatrix-1.1 Copied: lutinmatrix/tags/lutinmatrix-1.1 (from rev 98, lutinmatrix/trunk) Deleted: lutinmatrix/tags/lutinmatrix-1.1/pom.xml =================================================================== --- lutinmatrix/trunk/pom.xml 2008-09-29 17:47:43 UTC (rev 98) +++ lutinmatrix/tags/lutinmatrix-1.1/pom.xml 2008-10-24 08:18:46 UTC (rev 103) @@ -1,93 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - - <!--The version of maven's project object model--> - <modelVersion>4.0.0</modelVersion> - - <!--lutinproject.xml--> - <parent> - <groupId>org.codelutin</groupId> - <artifactId>lutinproject</artifactId> - <version>3.0</version> - </parent> - - <artifactId>lutinmatrix</artifactId> - <version>1.1-SNAPSHOT</version> - <name>lutinmatrix</name> - <packaging>jar</packaging> - <description>Librairie de matrice multi-dimensions.</description> - <inceptionYear>2004</inceptionYear> - - <properties> - <!-- id du projet du labs --> - <labs.id>63</labs.id> - - <!-- TODO remove this as soon as tests are fixed --> - <maven.test.testFailureIgnore>true</maven.test.testFailureIgnore> - </properties> - - <!--Source control management--> - <scm> - <connection>${maven.scm.connection}</connection> - <developerConnection>${maven.scm.developerConnection}</developerConnection> - <!-- This does'nt work for viewcvs.php with stat-scm with svn conf :( - <url>${maven.scm.url}</url> --> - </scm> - - <build> - <plugins> - - <!-- i18n --> - <plugin> - <groupId>org.codelutin</groupId> - <artifactId>maven-i18n-plugin</artifactId> - <executions> - <execution> - <goals> - <goal>parserJava</goal> - <goal>gen</goal> - </goals> - </execution> - </executions> - </plugin> - - <!-- jrst - <plugin> - <groupId>lutinplugin</groupId> - <artifactId>maven-jrst-plugin</artifactId> - </plugin> - <plugin> - <artifactId>maven-compiler-plugin</artifactId> - <version>2.0.2</version> - <configuration> - <source>1.6</source> - <target>1.6</target> - </configuration> - </plugin>--> - - </plugins> - </build> - - <!--Librairies--> - <dependencies> - <dependency> - <groupId>org.codelutin</groupId> - <artifactId>lutinutil</artifactId> - <version>0.30</version> - <scope>compile</scope> - </dependency> - <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - <version>2.4</version> - <scope>compile</scope> - </dependency> - <dependency> - <groupId>commons-primitives</groupId> - <artifactId>commons-primitives</artifactId> - <version>1.0</version> - <scope>compile</scope> - </dependency> - </dependencies> - -</project> Copied: lutinmatrix/tags/lutinmatrix-1.1/pom.xml (from rev 102, lutinmatrix/trunk/pom.xml) =================================================================== --- lutinmatrix/tags/lutinmatrix-1.1/pom.xml (rev 0) +++ lutinmatrix/tags/lutinmatrix-1.1/pom.xml 2008-10-24 08:18:46 UTC (rev 103) @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + + <!--The version of maven's project object model--> + <modelVersion>4.0.0</modelVersion> + + <!--lutinproject.xml--> + <parent> + <groupId>org.codelutin</groupId> + <artifactId>lutinproject</artifactId> + <version>3.0</version> + </parent> + + <artifactId>lutinmatrix</artifactId> + <version>1.1</version> + <name>lutinmatrix</name> + <packaging>jar</packaging> + <description>Librairie de matrice multi-dimensions.</description> + <inceptionYear>2004</inceptionYear> + + <properties> + <!-- id du projet du labs --> + <labs.id>63</labs.id> + </properties> + + <!--Source control management--> + <scm> + <connection>scm:svn:svn://anonymous@labs.libre-entreprise.org/svnroot/lutinmatrix/lutinmatrix/tags/lutinmatrix-1.1</connection> + <developerConnection>scm:svn:svn+ssh://chatellier@labs.libre-entreprise.org/svnroot/lutinmatrix/lutinmatrix/tags/lutinmatrix-1.1</developerConnection> + <url>http://labs.libre-entreprise.org/plugins/scmsvn/viewcvs.php/lutinmatrix/tags/lutinmatrix-1.1?root=lutinmatrix</url> + </scm> + + <build> + <plugins> + + <!-- i18n --> + <plugin> + <groupId>org.codelutin</groupId> + <artifactId>maven-i18n-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>parserJava</goal> + <goal>gen</goal> + </goals> + </execution> + </executions> + </plugin> + + </plugins> + </build> + + <!--Librairies--> + <dependencies> + <dependency> + <groupId>org.codelutin</groupId> + <artifactId>lutinutil</artifactId> + <version>0.31</version> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + <version>2.4</version> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>commons-primitives</groupId> + <artifactId>commons-primitives</artifactId> + <version>1.0</version> + <scope>compile</scope> + </dependency> + </dependencies> + +</project> Deleted: lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/BasicMatrix.java =================================================================== --- lutinmatrix/trunk/src/main/java/org/codelutin/math/matrix/BasicMatrix.java 2008-09-29 17:47:43 UTC (rev 98) +++ lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/BasicMatrix.java 2008-10-24 08:18:46 UTC (rev 103) @@ -1,339 +0,0 @@ -/* *##% lutinmatrix - * Copyright (C) 2004 - 2008 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ - -/* * - * BasicMatrix.java - * - * Created: 27 oct. 2004 - * - * @author Benjamin Poussin <poussin@codelutin.com> - * @version $Revision$ - * - * Mise a jour: $Date$ - * par : $Author$ - */ - -package org.codelutin.math.matrix; - -import java.util.Arrays; -import java.util.NoSuchElementException; - -import org.codelutin.i18n.I18n; - -/** - * Objet matrice qui ne permet que le stockage de double dans un matrice à - * autant de dimension que l'on souhaite. - */ -public class BasicMatrix { // BasicMatrix - - /** La factory */ - protected MatrixFactory factory = null; - /** Les dimensions de la matrice */ - protected int[] dimensions = null; - /** La matrice en représentation linéaire */ - protected Vector data = null; - /** - * tableau de facteur permettant de convertir les coordonnées dans la - * matrice en un indice dans la représentation linéaire de la matrice - */ - protected int[] linearFactor = null; - - /** - * Crée une nouvelle matrice ayant les dimensions demandées - */ - public BasicMatrix(MatrixFactory factory, int[] dimensions) { - this.factory = factory; - checkDim(dimensions); - - // copie des dimensions pour que personne à l'extérieur de l'objet - // ne puisse les modifiers par la suite - this.dimensions = new int[dimensions.length]; - System.arraycopy(dimensions, 0, this.dimensions, 0, dimensions.length); - - // calcul du linearFactor - linearFactor = new int[dimensions.length]; - linearFactor[linearFactor.length - 1] = 1; - for (int i = linearFactor.length - 2; i >= 0; i--) { - linearFactor[i] = linearFactor[i + 1] * dimensions[i + 1]; - } - - // creation de la matrice lineaire - data = factory.createVector(linearFactor[0] * dimensions[0]); - } - - /** - * Retourne la valeur la plus courrement rencontrer dans la matrice. si - * plusieurs valeurs ont le même nombre d'occurence la plus petite valeur - * est retourné. - * - * @return la valeur la plus nombreuse dans la matrice, ou la plus petite si - * plusieurs valeur se retourve le même nombre de fois - */ - public double getMaxOccurence() { - return data.getMaxOccurence(); - } - - /** - * Retourne le nombre de dimension de la matrice - * - * @return le nombre de dimension de la matrice; - */ - public int getNbDim() { - return dimensions.length; - } - - /** - * Retourne la taille d'une dimension - * - * @param dim la dimension dont on souhaite la taille - * @return la taille d'une dimension - * @throws - */ - public int getDim(int dim) { - checkDim(dim); - return dimensions[dim]; - } - - /** - * Retourne un tableau representant les dimensions de la matrice. Le tableau - * retourné n'est pas une copie, il ne faut donc pas le modifier - * - * @return le tableau des dimensions. - */ - public int[] getDim() { - return dimensions; - } - - /** - * Retourne un element de la matrice - * - * @param pos la position de l'element à retourner - */ - public double getValue(int[] pos) { - int indice = coordonatesToLinear(pos); - return data.getValue(indice); - } - - /** - * Modifie un élement de la matrice - * - * @param pos la position de l'element à modifier - * @param value la nouvelle valeur à mettre dans la matrice - */ - public void setValue(int[] pos, double value) { - int indice = coordonatesToLinear(pos); - data.setValue(indice, value); - } - - /** - * Retourne un objet Inc pret a etre utilisé pour boucler sur tous les - * element de la matrice. - * - * @return un objet Inc pret à être utilisé - */ - public BasicMatrixIterator iterator() { - return new BasicMatrixIteratorImpl(this); - } - - /** - * Permet de faire un traitement sur chaque valeur de la matrice - * - * @param f la fonction a appliquer à chaque élement de la matrice - */ - public void map(MapFunction f) { - if (data.isImplementedMap()) { - data.map(f); - } else { - for (int i = 0; i < data.size(); i++) { - double result = f.apply(data.getValue(i)); - data.setValue(i, result); - } - } - } - - /** - * Permet de convertir les coordonnées d'un élément en un indice dans la - * représentation linéraire de la matrice. - * - * @param coordonates les coordonnées à lineariser - * @return un indice réprésentant les coordonnées de façon linéaire - */ - protected int coordonatesToLinear(int[] coordonates) { - checkPos(coordonates); - - int result = 0; - for (int i = 0; i < linearFactor.length; i++) { - result += coordonates[i] * linearFactor[i]; - } - return result; - } - - /** - * Convertie une coordonnée lineaire en coordonnées spaciales - * - * @param pos la coordonnée linéaire - * @param linearFactor le tableau permettant la conversion - * @return les coordonnées spaciales de l'élément - */ - protected int[] linearToCoordinates(int pos) { - int[] result = new int[linearFactor.length]; - - for (int i = 0; i < result.length; i++) { - result[i] = pos / linearFactor[i]; - pos -= result[i] * linearFactor[i]; - } - return result; - } - - /** - * Permet de vérifier que les dimensions de la nouvelle matrice sont - * corrects - * - * @param dim les dimensions de la nouvelle matrice - * @throws IllegalArgumentException si une dimension n'est pas valide - */ - protected void checkDim(int[] dim) { - for (int i = 0; i < dim.length; i++) { - if (dim[i] <= 0) { - throw new IllegalArgumentException(I18n._( - "lutinmatrix.invalid.size", new Integer(i), - new Integer(dim[i]))); - } - } - } - - /** - * Permet de vérifier qu'une dimension demandé existe bien dans la matrice - * - * @param dim la position de la dimension que l'on souhaite - * @throws IndexOutOfBoundsException si la dimension demandée n'existe pas - */ - protected void checkDim(int dim) { - if (dim < 0 || dim >= getNbDim()) { - throw new IndexOutOfBoundsException(I18n._( - "lutinmatrix.invalid.size", dim, getNbDim())); - } - } - - /** - * Verifie que les coordonnées demandé appartiennent bien à la matrice - * - * @param pos les coordonnées souhaitées dans la matrice - * @throws NoSuchElementException si les coordonnées ne correspondent pas à - * un élement de la matrice - */ - protected void checkPos(int[] pos) { - int[] dim = getDim(); - boolean result = dim.length == pos.length; - for (int i = 0; result && i < dim.length; i++) { - result = (0 <= pos[i]) && (pos[i] < dim[i]); - } - if (!result) { - throw new NoSuchElementException(I18n._( - "lutinmatrix.invalid.element", Arrays.toString(pos), Arrays - .toString(dim))); - } - } - - public String toString() { - StringBuffer result = new StringBuffer(); - if (getNbDim() == 1) { - result.append("matrix1D ["); - for (int i = 0; i < data.size(); i++) { - result.append(data.getValue(i) + ","); - } - result.append("]"); - } else if (getNbDim() == 2) { - DimensionHelper dimHelper = new DimensionHelper(); - result.append("matrix2D ["); - for (int y = 0; y < getDim(1); y++) { - result.append("\n"); - for (int x = 0; x < getDim(0); x++) { - result.append(getValue(dimHelper.get(x, y)) + ","); - } - } - result.append("]"); - } else { - result.append("dimensions = [\n"); - for (int i = 0; i < dimensions.length; i++) { - result.append(dimensions[i] + ","); - } - result.append("\n]\nmatrice = [\n"); - for (int i = 0; i < data.size(); i++) { - result.append(data.getValue(i) + ","); - } - result.append("\n]\nlinearFactor = [\n"); - for (int i = 0; i < linearFactor.length; i++) { - result.append(linearFactor[i] + ","); - } - result.append("\n]\n"); - } - return result.toString(); - } - - public boolean equals(Object o) { - if (o instanceof BasicMatrix) { - BasicMatrix other = (BasicMatrix) o; - return this == o - || (Arrays.equals(this.dimensions, other.dimensions) && this.data - .equals(other.data)); - } - return false; - } - - protected class BasicMatrixIteratorImpl implements BasicMatrixIterator { // MatrixIteratorImpl - - protected BasicMatrix matrix = null; - protected int pos = -1; - - /** - * @param matrix la matrice sur lequel l'iterator doit travailler - */ - public BasicMatrixIteratorImpl(BasicMatrix matrix) { - this.matrix = matrix; - pos = -1; - } - - public boolean hasNext() { - return pos + 1 < matrix.data.size(); - } - - public boolean next() { - if (hasNext()) { - pos++; - return true; - } else { - return false; - } - } - - public double getValue() { - return matrix.data.getValue(pos); - } - - public void setValue(double value) { - matrix.data.setValue(pos, value); - } - - public int[] getCoordinates() { - return matrix.linearToCoordinates(pos); - } - - } // BasicMatrixIteratorImpl - -} // BasicMatrix - Copied: lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/BasicMatrix.java (from rev 101, lutinmatrix/trunk/src/main/java/org/codelutin/math/matrix/BasicMatrix.java) =================================================================== --- lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/BasicMatrix.java (rev 0) +++ lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/BasicMatrix.java 2008-10-24 08:18:46 UTC (rev 103) @@ -0,0 +1,337 @@ +/* *##% lutinmatrix + * Copyright (C) 2004 - 2008 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +/* * + * BasicMatrix.java + * + * Created: 27 oct. 2004 + * + * @author Benjamin Poussin <poussin@codelutin.com> + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ + +package org.codelutin.math.matrix; + +import java.util.Arrays; +import java.util.NoSuchElementException; + +import org.codelutin.i18n.I18n; + +/** + * Objet matrice qui ne permet que le stockage de double dans un matrice à + * autant de dimension que l'on souhaite. + */ +public class BasicMatrix { // BasicMatrix + + /** La factory */ + protected MatrixFactory factory = null; + /** Les dimensions de la matrice */ + protected int[] dimensions = null; + /** La matrice en représentation linéaire */ + protected Vector data = null; + /** + * tableau de facteur permettant de convertir les coordonnées dans la + * matrice en un indice dans la représentation linéaire de la matrice + */ + protected int[] linearFactor = null; + + /** + * Crée une nouvelle matrice ayant les dimensions demandées + */ + public BasicMatrix(MatrixFactory factory, int[] dimensions) { + this.factory = factory; + checkDim(dimensions); + + // copie des dimensions pour que personne à l'extérieur de l'objet + // ne puisse les modifiers par la suite + this.dimensions = new int[dimensions.length]; + System.arraycopy(dimensions, 0, this.dimensions, 0, dimensions.length); + + // calcul du linearFactor + linearFactor = new int[dimensions.length]; + linearFactor[linearFactor.length - 1] = 1; + for (int i = linearFactor.length - 2; i >= 0; i--) { + linearFactor[i] = linearFactor[i + 1] * dimensions[i + 1]; + } + + // creation de la matrice lineaire + data = factory.createVector(linearFactor[0] * dimensions[0]); + } + + /** + * Retourne la valeur la plus courrement rencontrer dans la matrice. si + * plusieurs valeurs ont le même nombre d'occurence la plus petite valeur + * est retourné. + * + * @return la valeur la plus nombreuse dans la matrice, ou la plus petite si + * plusieurs valeur se retourve le même nombre de fois + */ + public double getMaxOccurence() { + return data.getMaxOccurence(); + } + + /** + * Retourne le nombre de dimension de la matrice + * + * @return le nombre de dimension de la matrice; + */ + public int getNbDim() { + return dimensions.length; + } + + /** + * Retourne la taille d'une dimension + * + * @param dim la dimension dont on souhaite la taille + * @return la taille d'une dimension + */ + public int getDim(int dim) { + checkDim(dim); + return dimensions[dim]; + } + + /** + * Retourne un tableau representant les dimensions de la matrice. Le tableau + * retourné n'est pas une copie, il ne faut donc pas le modifier + * + * @return le tableau des dimensions. + */ + public int[] getDim() { + return dimensions; + } + + /** + * Retourne un element de la matrice + * + * @param pos la position de l'element à retourner + */ + public double getValue(int[] pos) { + int indice = coordonatesToLinear(pos); + return data.getValue(indice); + } + + /** + * Modifie un élement de la matrice + * + * @param pos la position de l'element à modifier + * @param value la nouvelle valeur à mettre dans la matrice + */ + public void setValue(int[] pos, double value) { + int indice = coordonatesToLinear(pos); + data.setValue(indice, value); + } + + /** + * Retourne un objet Inc pret a etre utilisé pour boucler sur tous les + * element de la matrice. + * + * @return un objet Inc pret à être utilisé + */ + public BasicMatrixIterator iterator() { + return new BasicMatrixIteratorImpl(this); + } + + /** + * Permet de faire un traitement sur chaque valeur de la matrice + * + * @param f la fonction a appliquer à chaque élement de la matrice + */ + public void map(MapFunction f) { + if (data.isImplementedMap()) { + data.map(f); + } else { + for (int i = 0; i < data.size(); i++) { + double result = f.apply(data.getValue(i)); + data.setValue(i, result); + } + } + } + + /** + * Permet de convertir les coordonnées d'un élément en un indice dans la + * représentation linéraire de la matrice. + * + * @param coordonates les coordonnées à lineariser + * @return un indice réprésentant les coordonnées de façon linéaire + */ + protected int coordonatesToLinear(int[] coordonates) { + checkPos(coordonates); + + int result = 0; + for (int i = 0; i < linearFactor.length; i++) { + result += coordonates[i] * linearFactor[i]; + } + return result; + } + + /** + * Convertie une coordonnée lineaire en coordonnées spaciales + * + * @param pos la coordonnée linéaire + * @return les coordonnées spaciales de l'élément + */ + protected int[] linearToCoordinates(int pos) { + int[] result = new int[linearFactor.length]; + + for (int i = 0; i < result.length; i++) { + result[i] = pos / linearFactor[i]; + pos -= result[i] * linearFactor[i]; + } + return result; + } + + /** + * Permet de vérifier que les dimensions de la nouvelle matrice sont + * corrects + * + * @param dim les dimensions de la nouvelle matrice + * @throws IllegalArgumentException si une dimension n'est pas valide + */ + protected void checkDim(int[] dim) { + for (int i = 0; i < dim.length; i++) { + if (dim[i] <= 0) { + throw new IllegalArgumentException(I18n._( + "lutinmatrix.invalid.size", new Integer(i), + new Integer(dim[i]))); + } + } + } + + /** + * Permet de vérifier qu'une dimension demandé existe bien dans la matrice + * + * @param dim la position de la dimension que l'on souhaite + * @throws IndexOutOfBoundsException si la dimension demandée n'existe pas + */ + protected void checkDim(int dim) { + if (dim < 0 || dim >= getNbDim()) { + throw new IndexOutOfBoundsException(I18n._( + "lutinmatrix.invalid.size", dim, getNbDim())); + } + } + + /** + * Verifie que les coordonnées demandé appartiennent bien à la matrice + * + * @param pos les coordonnées souhaitées dans la matrice + * @throws NoSuchElementException si les coordonnées ne correspondent pas à + * un élement de la matrice + */ + protected void checkPos(int[] pos) { + int[] dim = getDim(); + boolean result = dim.length == pos.length; + for (int i = 0; result && i < dim.length; i++) { + result = (0 <= pos[i]) && (pos[i] < dim[i]); + } + if (!result) { + throw new NoSuchElementException(I18n._( + "lutinmatrix.invalid.element", Arrays.toString(pos), Arrays + .toString(dim))); + } + } + + public String toString() { + StringBuffer result = new StringBuffer(); + if (getNbDim() == 1) { + result.append("matrix1D ["); + for (int i = 0; i < data.size(); i++) { + result.append(data.getValue(i) + ","); + } + result.append("]"); + } else if (getNbDim() == 2) { + DimensionHelper dimHelper = new DimensionHelper(); + result.append("matrix2D ["); + for (int y = 0; y < getDim(1); y++) { + result.append("\n"); + for (int x = 0; x < getDim(0); x++) { + result.append(getValue(dimHelper.get(x, y)) + ","); + } + } + result.append("]"); + } else { + result.append("dimensions = [\n"); + for (int i = 0; i < dimensions.length; i++) { + result.append(dimensions[i] + ","); + } + result.append("\n]\nmatrice = [\n"); + for (int i = 0; i < data.size(); i++) { + result.append(data.getValue(i) + ","); + } + result.append("\n]\nlinearFactor = [\n"); + for (int i = 0; i < linearFactor.length; i++) { + result.append(linearFactor[i] + ","); + } + result.append("\n]\n"); + } + return result.toString(); + } + + public boolean equals(Object o) { + if (o instanceof BasicMatrix) { + BasicMatrix other = (BasicMatrix) o; + return this == o + || (Arrays.equals(this.dimensions, other.dimensions) && this.data + .equals(other.data)); + } + return false; + } + + protected class BasicMatrixIteratorImpl implements BasicMatrixIterator { // MatrixIteratorImpl + + protected BasicMatrix matrix = null; + protected int pos = -1; + + /** + * @param matrix la matrice sur lequel l'iterator doit travailler + */ + public BasicMatrixIteratorImpl(BasicMatrix matrix) { + this.matrix = matrix; + pos = -1; + } + + public boolean hasNext() { + return pos + 1 < matrix.data.size(); + } + + public boolean next() { + if (hasNext()) { + pos++; + return true; + } else { + return false; + } + } + + public double getValue() { + return matrix.data.getValue(pos); + } + + public void setValue(double value) { + matrix.data.setValue(pos, value); + } + + public int[] getCoordinates() { + return matrix.linearToCoordinates(pos); + } + + } // BasicMatrixIteratorImpl + +} // BasicMatrix + Deleted: lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MapFunction.java =================================================================== --- lutinmatrix/trunk/src/main/java/org/codelutin/math/matrix/MapFunction.java 2008-09-29 17:47:43 UTC (rev 98) +++ lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MapFunction.java 2008-10-24 08:18:46 UTC (rev 103) @@ -1,45 +0,0 @@ -/* *##% lutinmatrix - * Copyright (C) 2004 - 2008 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ - -/* * - * MapFunction.java - * - * Created: 27 oct. 2004 - * - * @author Benjamin Poussin <poussin@codelutin.com> - * @version $Revision$ - * - * Mise a jour: $Date$ - * par : $Author$ - */ - -package org.codelutin.math.matrix; - -public interface MapFunction { // MapFunction - - /** - * Permet de faire un traitement sur value et de retourne une nouvelle - * valeur. - * - * @param la valeur courante sur lequel il faut faire le traitement - * @return la nouvelle valeur à mettre dans la matrice à la place de - * l'ancienne. - */ - public double apply(double value); - -} // MapFunction - Copied: lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MapFunction.java (from rev 101, lutinmatrix/trunk/src/main/java/org/codelutin/math/matrix/MapFunction.java) =================================================================== --- lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MapFunction.java (rev 0) +++ lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MapFunction.java 2008-10-24 08:18:46 UTC (rev 103) @@ -0,0 +1,45 @@ +/* *##% lutinmatrix + * Copyright (C) 2004 - 2008 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +/* * + * MapFunction.java + * + * Created: 27 oct. 2004 + * + * @author Benjamin Poussin <poussin@codelutin.com> + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ + +package org.codelutin.math.matrix; + +public interface MapFunction { // MapFunction + + /** + * Permet de faire un traitement sur value et de retourne une nouvelle + * valeur. + * + * @param value la valeur courante sur lequel il faut faire le traitement + * @return la nouvelle valeur à mettre dans la matrice à la place de + * l'ancienne. + */ + public double apply(double value); + +} // MapFunction + Deleted: lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MatrixHelper.java =================================================================== --- lutinmatrix/trunk/src/main/java/org/codelutin/math/matrix/MatrixHelper.java 2008-09-29 17:47:43 UTC (rev 98) +++ lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MatrixHelper.java 2008-10-24 08:18:46 UTC (rev 103) @@ -1,360 +0,0 @@ -/* *##% lutinmatrix - * Copyright (C) 2004 - 2008 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ - -/* * - * MatrixHelper.java - * - * Created: 28 oct. 2004 - * - * @author Benjamin Poussin <poussin@codelutin.com> - * @version $Revision$ - * - * Mise a jour: $Date$ - * par : $Author$ - */ - -package org.codelutin.math.matrix; - -import java.io.StreamTokenizer; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.NoSuchElementException; -import java.util.Stack; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -public class MatrixHelper { - - /** - * Logger for this class - */ - private static final Log log = LogFactory.getLog(MatrixHelper.class); - - // MatrixHelper - - /** - * Convert Matrix to identity matrix must have 2 dimensions. If dimension - * haven't same length, then the small dimension is used. - * - * @param mat - * @return - */ - static public MatrixND convertToId(MatrixND mat) { - int size = mat.getDim(0); - if (size > mat.getDim(1)) { - size = mat.getDim(1); - } - - fill(mat, 0); - - for (int i = 0; i < size; i++) { - mat.setValue(i, i, 1); - } - return mat; - } - - /** - * Permet de relire une chaine du type [[[1, 2], [3, 4]],[[3, 5], [1, 4]]] - * <p> - * Remarque: une premiere implatantion avait ete faite en utilisant - * {@link StreamTokenizer} mais en fait il y a un bug dedans, il ne sait pas - * parser les chiffres avec un exposant: 5.0E-7 par exemple est lu comme 5.0 - * :( - * <p> - * Remarque: une autre implantation de remplacement a ete faite en utilisant - * le {@link org.codelutin.util.StrintUtil#split(String, String)} mais elle - * etait moins performante (x2) - * - * @param s la chaine representant les listes de liste - * @return une liste de liste ... de Double - */ - static public List convertStringToList(String s) { - List result = null; - Stack<List> stack = new Stack<List>(); - StringBuffer number = new StringBuffer(20); // initial to 20 char - - for (int i = 0; i < s.length(); i++) { - char c = s.charAt(i); - if (c == ' ') { - // skip space - } - if (c == '[') { - stack.push(new ArrayList()); - } else if (c == ',') { - if (number.length() != 0) { - // on a une ',' on doit donc avoir un nombre dans number - // a moins que ce ne soit une ',' entre deux listes - Double value = Double.valueOf(number.toString()); - stack.peek().add(value); - } - number.setLength(0); - } else if (c == ']') { - // fin d'une liste, il doit rester un nombre dans number - // a mois que la liste etait vide - if (number.length() != 0) { - Double value = Double.valueOf(number.toString()); - stack.peek().add(value); - number.setLength(0); - } - - List current = stack.pop(); - if (stack.empty()) { - result = current; - } else { - stack.peek().add(current); - } - } else { - // pas un '[' ou ']', pas une ',' devrait etre - // un bout du nombre, si c un espace qui traine n'importe ou - // c pas grace car Double.valueOf gere les espaces - number.append(c); - } - } - return result; - } - - /** - * permet de donner une repr�sentation String d'un tableau de coordonn�es - * - * @param coordinates les coordonn�es - * @return la chaine demand�e de la forme 1,3,34,23 - */ - static public String coordinatesToString(int[] coordinates) { - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < coordinates.length; i++) { - sb.append(coordinates[i]); - if (i + 1 < coordinates.length) { - sb.append(','); - } - } - return sb.toString(); - } - - /** - * permet de donner une repr�sentation String d'un tableau de coordonn�es - * - * @param coordinates les coordonn�es - * @return la chaine demand�e de la forme "Ob1","Ob2,"Ob3", ... la chaine - * prise pour l'objet est celle retourn�e par la m�thode toString de - * l'objet - */ - static public String coordinatesToString(Object[] coordinates) { - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < coordinates.length; i++) { - sb.append(coordinates[i]); - if (i + 1 < coordinates.length) - sb.append(','); - } - return sb.toString(); - } - - /** - * Permet de savoir si deux dimension sont identique - */ - static public boolean sameDimension(int[] dim1, int[] dim2) { - return Arrays.equals(dim1, dim2); - } - - /** - * Permet de convertir des coordonn�es d�fini par des entiers en coordonn�e - * semantique par des objets - * - * @param semantics la semantique � utilis� pour la conversion - * @param coordinates les coordonn�es � convertir - * @return un tableau donnant les coordonn�es sous forme semantique s'il n'y - * a pas de semantique (liste pleine de null) alors un objet Integer - * est cr�er pour repr�senter la semantique de la dimension. - */ - static public Object[] dimensionToSemantics(List[] semantics, - int[] coordinates) { - Object[] result = new Object[coordinates.length]; - for (int i = 0; i < result.length; i++) { - result[i] = semantics[i].get(coordinates[i]); - if (result[i] == null) { - result[i] = new Integer(coordinates[i]); - } - } - return result; - } - - /** - * Permet de convertir des coordonn�es s�mantiques en coordonn�es d�fini par - * des entiers. Cette fonction est l'inverse de - * {@link #dimensionToSemantics}. - * - * @param semantics la semantique � utilis� pour la conversion - * @param coordonn�es les coordonn�es s�mantique - * @return les coordonn�es en entier. Si la s�mantique est repr�sent� par un - * Integer alors la valeur de l'interger est utilis� pour la - * conversion. - */ - static public int[] semanticsToDimension(List[] semantics, - Object[] coordinates) { - int[] result = new int[coordinates.length]; - for (int i = 0; i < coordinates.length; i++) { - if (coordinates[i] == null) { - result[i] = -1; - } else { - result[i] = indexOf(semantics, i, coordinates[i]); - } - } - return result; - } - - /** - * Permet de retrouver la position d'un objet dans une liste - * - * @param semantics la semantique � utilis� pour la recherche - * @param dim la dimension dans lequel il faut faire la recherche - * @param o l'objet � rechercher - * @return la position de l'objet dans la dimension demand�e - */ - static public int indexOf(List[] semantics, int dim, Object o) - throws NoSuchElementException { - if (o instanceof Integer) { - return ((Integer) o).intValue(); - } - int result = -1; - if ((0 <= dim) && (dim < semantics.length)) { - result = semantics[dim].indexOf(o); - } - if (result == -1) { - throw new NoSuchElementException( - "L'objet pass� en argument n'a pas �t� retrouve ou la dimension donn�e ne convient pas:" - + o + " in " + semantics[dim]); - } - return result; - } - - /** - * Permet de remplir toute la matrice avec la m�me donn�e - * - * @param mat la matrice � remplir - * @param value la valeur de remplissage - * @return la matrice pass� en param�tre - */ - static public MatrixND fill(MatrixND mat, final double value) { - mat.map(new MapFunction() { - public double apply(double v) { - return value; - } - }); - return mat; - } - - // /** - // * Cr�e une nouvelle matrice identit�. Une matrice identit� est une - // matrice - // * � 2 dimensions dont tous les �l�ments de la diagonal vaut 1 - // * @param size la taille de la matrice - // * @return une nouvelle matrice identit� - // */ - // static public MatrixND matrixId(int size){ - // MatrixND result = new MatrixNDImpl(new int[]{size, size}); - // for(int i=0; i<size; i++){ - // result.setValue(i, i , 1); - // } - // return result; - // } - - /** - * Retourne la valeur la plus courrement rencontrer dans un tableau. si - * plusieurs valeurs ont le m�me nombre d'occurence la plus petite valeur - * est retourn�. - * - * @param tab le tableau de valeur - * @return la valeur la plus nombreuse dans le tableau - */ - static public double maxOccurence(double[] tab) { - double[] tmp = new double[tab.length]; - System.arraycopy(tab, 0, tmp, 0, tab.length); - return maxOccurence1(tmp); - } - - static public double maxOccurence(float[] tab) { - double[] tmp = new double[tab.length]; - for (int i = 0; i < tab.length; i++) { - tmp[i] = tab[i]; - } - return maxOccurence1(tmp); - } - - /** - * le tableau en entre est trie durant l'execution de la methode, il est - * donc modifi� - */ - static protected double maxOccurence1(double[] tmp) { - if (tmp.length == 0) { - throw new IllegalArgumentException("Array must be not empty"); - } - // double [] tmp = new double[tab.length]; - // System.arraycopy(tab, 0, tmp, 0, tab.length); - Arrays.sort(tmp); - - // le nombre de fois que l'on a rencontrer la valeur la plus nombreuse - int max = 1; - // le nombre de fois que l'on a rencontrer la valeur courante - int count = 1; - // la valeur la plus rencontrer - double result = tmp[0]; - // la valeur que l'on vient de traiter pr�c�dement - double old = tmp[0]; - // la valeur courante lu dans le tableaux - double current = tmp[0]; - // tant que l'on peut encore trouve un element plus nombreux dans le - // tableau on le parcours - for (int i = 1; max < tmp.length - i + count && i < tmp.length; i++) { - current = tmp[i]; - - if (current == old) { - count++; - } else { - if (count > max) { - max = count; - result = old; - } - count = 1; - old = current; - } - } - if (count > max) { - max = count; - result = current; - } - return result; - } - - // static public String encodeToXML(MatrixND mat){ - // StringWriter out = new StringWriter(); - // XMLEncoderDecoder.getInstance().encode(out, mat); - // return out.toString(); - // } - // - // static public MatrixND decodeFromXML(String xml){ - // try{ - // return (MatrixND)XMLEncoderDecoder.getInstance().decode(new - // StringReader(xml)); - // }catch(Exception eee){ - // throw new MatrixException("Erreur durant le decodage de la matrice", - // eee); - // } - // } - -} // MatrixHelper - Copied: lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MatrixHelper.java (from rev 101, lutinmatrix/trunk/src/main/java/org/codelutin/math/matrix/MatrixHelper.java) =================================================================== --- lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MatrixHelper.java (rev 0) +++ lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MatrixHelper.java 2008-10-24 08:18:46 UTC (rev 103) @@ -0,0 +1,360 @@ +/* *##% lutinmatrix + * Copyright (C) 2004 - 2008 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +/* * + * MatrixHelper.java + * + * Created: 28 oct. 2004 + * + * @author Benjamin Poussin <poussin@codelutin.com> + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ + +package org.codelutin.math.matrix; + +import java.io.StreamTokenizer; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.Stack; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +public class MatrixHelper { + + /** + * Logger for this class + */ + private static final Log log = LogFactory.getLog(MatrixHelper.class); + + // MatrixHelper + + /** + * Convert Matrix to identity matrix must have 2 dimensions. If dimension + * haven't same length, then the small dimension is used. + * + * @param mat + * @return + */ + static public MatrixND convertToId(MatrixND mat) { + int size = mat.getDim(0); + if (size > mat.getDim(1)) { + size = mat.getDim(1); + } + + fill(mat, 0); + + for (int i = 0; i < size; i++) { + mat.setValue(i, i, 1); + } + return mat; + } + + /** + * Permet de relire une chaine du type [[[1, 2], [3, 4]],[[3, 5], [1, 4]]] + * <p> + * Remarque: une premiere implatantion avait ete faite en utilisant + * {@link StreamTokenizer} mais en fait il y a un bug dedans, il ne sait pas + * parser les chiffres avec un exposant: 5.0E-7 par exemple est lu comme 5.0 + * :( + * <p> + * Remarque: une autre implantation de remplacement a ete faite en utilisant + * le {@link org.codelutin.util.StringUtil#split(String, String)} mais elle + * etait moins performante (x2) + * + * @param s la chaine representant les listes de liste + * @return une liste de liste ... de Double + */ + static public List convertStringToList(String s) { + List result = null; + Stack<List> stack = new Stack<List>(); + StringBuffer number = new StringBuffer(20); // initial to 20 char + + for (int i = 0; i < s.length(); i++) { + char c = s.charAt(i); + if (c == ' ') { + // skip space + } + if (c == '[') { + stack.push(new ArrayList()); + } else if (c == ',') { + if (number.length() != 0) { + // on a une ',' on doit donc avoir un nombre dans number + // a moins que ce ne soit une ',' entre deux listes + Double value = Double.valueOf(number.toString()); + stack.peek().add(value); + } + number.setLength(0); + } else if (c == ']') { + // fin d'une liste, il doit rester un nombre dans number + // a mois que la liste etait vide + if (number.length() != 0) { + Double value = Double.valueOf(number.toString()); + stack.peek().add(value); + number.setLength(0); + } + + List current = stack.pop(); + if (stack.empty()) { + result = current; + } else { + stack.peek().add(current); + } + } else { + // pas un '[' ou ']', pas une ',' devrait etre + // un bout du nombre, si c un espace qui traine n'importe ou + // c pas grace car Double.valueOf gere les espaces + number.append(c); + } + } + return result; + } + + /** + * permet de donner une repr�sentation String d'un tableau de coordonn�es + * + * @param coordinates les coordonn�es + * @return la chaine demand�e de la forme 1,3,34,23 + */ + static public String coordinatesToString(int[] coordinates) { + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < coordinates.length; i++) { + sb.append(coordinates[i]); + if (i + 1 < coordinates.length) { + sb.append(','); + } + } + return sb.toString(); + } + + /** + * permet de donner une repr�sentation String d'un tableau de coordonn�es + * + * @param coordinates les coordonn�es + * @return la chaine demand�e de la forme "Ob1","Ob2,"Ob3", ... la chaine + * prise pour l'objet est celle retourn�e par la m�thode toString de + * l'objet + */ + static public String coordinatesToString(Object[] coordinates) { + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < coordinates.length; i++) { + sb.append(coordinates[i]); + if (i + 1 < coordinates.length) + sb.append(','); + } + return sb.toString(); + } + + /** + * Permet de savoir si deux dimension sont identique + */ + static public boolean sameDimension(int[] dim1, int[] dim2) { + return Arrays.equals(dim1, dim2); + } + + /** + * Permet de convertir des coordonn�es d�fini par des entiers en coordonn�e + * semantique par des objets + * + * @param semantics la semantique � utilis� pour la conversion + * @param coordinates les coordonn�es � convertir + * @return un tableau donnant les coordonn�es sous forme semantique s'il n'y + * a pas de semantique (liste pleine de null) alors un objet Integer + * est cr�er pour repr�senter la semantique de la dimension. + */ + static public Object[] dimensionToSemantics(List[] semantics, + int[] coordinates) { + Object[] result = new Object[coordinates.length]; + for (int i = 0; i < result.length; i++) { + result[i] = semantics[i].get(coordinates[i]); + if (result[i] == null) { + result[i] = new Integer(coordinates[i]); + } + } + return result; + } + + /** + * Permet de convertir des coordonnées sémantiques en coordonnées défini par + * des entiers. Cette fonction est l'inverse de + * {@link #dimensionToSemantics}. + * + * @param semantics la semantique à utiliser pour la conversion + * @param coordinates les coordonnées sémantique + * @return les coordonnées en entier. Si la sémantique est représentéé par un + * Integer alors la valeur de l'integer est utilisé pour la + * conversion. + */ + static public int[] semanticsToDimension(List[] semantics, + Object[] coordinates) { + int[] result = new int[coordinates.length]; + for (int i = 0; i < coordinates.length; i++) { + if (coordinates[i] == null) { + result[i] = -1; + } else { + result[i] = indexOf(semantics, i, coordinates[i]); + } + } + return result; + } + + /** + * Permet de retrouver la position d'un objet dans une liste + * + * @param semantics la semantique � utilis� pour la recherche + * @param dim la dimension dans lequel il faut faire la recherche + * @param o l'objet � rechercher + * @return la position de l'objet dans la dimension demand�e + */ + static public int indexOf(List[] semantics, int dim, Object o) + throws NoSuchElementException { + if (o instanceof Integer) { + return ((Integer) o).intValue(); + } + int result = -1; + if ((0 <= dim) && (dim < semantics.length)) { + result = semantics[dim].indexOf(o); + } + if (result == -1) { + throw new NoSuchElementException( + "L'objet pass� en argument n'a pas �t� retrouve ou la dimension donn�e ne convient pas:" + + o + " in " + semantics[dim]); + } + return result; + } + + /** + * Permet de remplir toute la matrice avec la m�me donn�e + * + * @param mat la matrice � remplir + * @param value la valeur de remplissage + * @return la matrice pass� en param�tre + */ + static public MatrixND fill(MatrixND mat, final double value) { + mat.map(new MapFunction() { + public double apply(double v) { + return value; + } + }); + return mat; + } + + // /** + // * Cr�e une nouvelle matrice identit�. Une matrice identit� est une + // matrice + // * � 2 dimensions dont tous les �l�ments de la diagonal vaut 1 + // * @param size la taille de la matrice + // * @return une nouvelle matrice identit� + // */ + // static public MatrixND matrixId(int size){ + // MatrixND result = new MatrixNDImpl(new int[]{size, size}); + // for(int i=0; i<size; i++){ + // result.setValue(i, i , 1); + // } + // return result; + // } + + /** + * Retourne la valeur la plus courrement rencontrer dans un tableau. si + * plusieurs valeurs ont le m�me nombre d'occurence la plus petite valeur + * est retourn�. + * + * @param tab le tableau de valeur + * @return la valeur la plus nombreuse dans le tableau + */ + static public double maxOccurence(double[] tab) { + double[] tmp = new double[tab.length]; + System.arraycopy(tab, 0, tmp, 0, tab.length); + return maxOccurence1(tmp); + } + + static public double maxOccurence(float[] tab) { + double[] tmp = new double[tab.length]; + for (int i = 0; i < tab.length; i++) { + tmp[i] = tab[i]; + } + return maxOccurence1(tmp); + } + + /** + * le tableau en entre est trie durant l'execution de la methode, il est + * donc modifi� + */ + static protected double maxOccurence1(double[] tmp) { + if (tmp.length == 0) { + throw new IllegalArgumentException("Array must be not empty"); + } + // double [] tmp = new double[tab.length]; + // System.arraycopy(tab, 0, tmp, 0, tab.length); + Arrays.sort(tmp); + + // le nombre de fois que l'on a rencontrer la valeur la plus nombreuse + int max = 1; + // le nombre de fois que l'on a rencontrer la valeur courante + int count = 1; + // la valeur la plus rencontrer + double result = tmp[0]; + // la valeur que l'on vient de traiter pr�c�dement + double old = tmp[0]; + // la valeur courante lu dans le tableaux + double current = tmp[0]; + // tant que l'on peut encore trouve un element plus nombreux dans le + // tableau on le parcours + for (int i = 1; max < tmp.length - i + count && i < tmp.length; i++) { + current = tmp[i]; + + if (current == old) { + count++; + } else { + if (count > max) { + max = count; + result = old; + } + count = 1; + old = current; + } + } + if (count > max) { + max = count; + result = current; + } + return result; + } + + // static public String encodeToXML(MatrixND mat){ + // StringWriter out = new StringWriter(); + // XMLEncoderDecoder.getInstance().encode(out, mat); + // return out.toString(); + // } + // + // static public MatrixND decodeFromXML(String xml){ + // try{ + // return (MatrixND)XMLEncoderDecoder.getInstance().decode(new + // StringReader(xml)); + // }catch(Exception eee){ + // throw new MatrixException("Erreur durant le decodage de la matrice", + // eee); + // } + // } + +} // MatrixHelper + Deleted: lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MatrixIteratorImpl.java =================================================================== --- lutinmatrix/trunk/src/main/java/org/codelutin/math/matrix/MatrixIteratorImpl.java 2008-09-29 17:47:43 UTC (rev 98) +++ lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MatrixIteratorImpl.java 2008-10-24 08:18:46 UTC (rev 103) @@ -1,83 +0,0 @@ -/* *##% lutinmatrix - * Copyright (C) 2004 - 2008 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ - -/* * - * MatrixIteratorImpl.java - * - * Created: 28 oct. 2004 - * - * @author Benjamin Poussin <poussin@codelutin.com> - * @version $Revision$ - * - * Mise a jour: $Date$ - * par : $Author$ - */ - -package org.codelutin.math.matrix; - -import java.util.List; - -public class MatrixIteratorImpl implements MatrixIterator { // MatrixIteratorImpl - - protected BasicMatrixIterator iterator = null; - protected List[] semantics = null; - protected int pos = 0; - - /** - * @param matrix la matrice sur lequel l'iterator doit travailler - * @param semantics la semantique de matrix, si matrix n'a pas de semantique - * alors il faut passer null - */ - public MatrixIteratorImpl(BasicMatrixIterator iterator, List[] semantics) { - this.iterator = iterator; - this.semantics = semantics; - pos = 0; - } - - public boolean hasNext() { - return iterator.hasNext(); - } - - public boolean next() { - return iterator.next(); - } - - public int[] getCoordinates() { - return iterator.getCoordinates(); - } - - public double getValue() { - return iterator.getValue(); - } - - public void setValue(double value) { - iterator.setValue(value); - } - - public Object[] getSemanticsCoordinates() { - if (semantics == null) { - return null; - } else { - int[] coordinates = getCoordinates(); - Object[] result = MatrixHelper.dimensionToSemantics(semantics, - coordinates); - return result; - } - } - -} // MatrixIteratorImpl - Copied: lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MatrixIteratorImpl.java (from rev 101, lutinmatrix/trunk/src/main/java/org/codelutin/math/matrix/MatrixIteratorImpl.java) =================================================================== --- lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MatrixIteratorImpl.java (rev 0) +++ lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MatrixIteratorImpl.java 2008-10-24 08:18:46 UTC (rev 103) @@ -0,0 +1,83 @@ +/* *##% lutinmatrix + * Copyright (C) 2004 - 2008 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +/* * + * MatrixIteratorImpl.java + * + * Created: 28 oct. 2004 + * + * @author Benjamin Poussin <poussin@codelutin.com> + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ + +package org.codelutin.math.matrix; + +import java.util.List; + +public class MatrixIteratorImpl implements MatrixIterator { // MatrixIteratorImpl + + protected BasicMatrixIterator iterator = null; + protected List[] semantics = null; + protected int pos = 0; + + /** + * @param iterator la matrice sur lequel l'iterator doit travailler + * @param semantics la semantique de matrix, si matrix n'a pas de semantique + * alors il faut passer null + */ + public MatrixIteratorImpl(BasicMatrixIterator iterator, List[] semantics) { + this.iterator = iterator; + this.semantics = semantics; + pos = 0; + } + + public boolean hasNext() { + return iterator.hasNext(); + } + + public boolean next() { + return iterator.next(); + } + + public int[] getCoordinates() { + return iterator.getCoordinates(); + } + + public double getValue() { + return iterator.getValue(); + } + + public void setValue(double value) { + iterator.setValue(value); + } + + public Object[] getSemanticsCoordinates() { + if (semantics == null) { + return null; + } else { + int[] coordinates = getCoordinates(); + Object[] result = MatrixHelper.dimensionToSemantics(semantics, + coordinates); + return result; + } + } + +} // MatrixIteratorImpl + Deleted: lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MatrixND.java =================================================================== --- lutinmatrix/trunk/src/main/java/org/codelutin/math/matrix/MatrixND.java 2008-09-29 17:47:43 UTC (rev 98) +++ lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MatrixND.java 2008-10-24 08:18:46 UTC (rev 103) @@ -1,619 +0,0 @@ -/* *##% lutinmatrix - * Copyright (C) 2004 - 2008 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ - -/* * - * MatrixND.java - * - * Created: 29 oct. 2004 - * - * @author Benjamin Poussin <poussin@codelutin.com> - * @version $Revision$ - * - * Mise a jour: $Date$ - * par : $Author$ - */ - -package org.codelutin.math.matrix; - -import java.io.IOException; -import java.io.Reader; -import java.io.Serializable; -import java.io.Writer; -import java.util.List; - -public interface MatrixND extends Serializable, Cloneable { // MatrixND - - /** - * Retourne la factory qui a permit de creer la matrice - */ - public MatrixFactory getFactory(); - - /** - * Donne toutes les semantiques de la matrice Si la matrice n'a pas de - * semantique retourne null - */ - public List[] getSemantics(); - - /** - * Retourne la semantique pour une dimension - * - * @param dim la dimension pour lequel on veut la semantique - * @return la semantique de la dimension on null s'il n'y a pas de - * semantique - */ - public List getSemantics(int dim); - - /** - * Modifie la semantique d'une dimension - */ - public void setSemantics(int dim, List sem); - - /** - * Permet de donner un nom à la matrice. - */ - public void setName(String name); - - /** - * Retourne le nom de la matrice - * - * @return le nom de la matrice ou la chaine vide si pas de nom. - */ - public String getName(); - - /** - * Permet de mettre des noms aux différentes dimension. - */ - public void setDimensionName(String[] names); - - /** - * Permet de mettre un nom à une dimension. - * - * @param dim la dimension dont on veut changer le nom - * @param name le nom à donner à la dimension - */ - public void setDimensionName(int dim, String name); - - /** - * Retourne le nom de la dimension demandé. - * - * @param dim la dimension dont on veut le nom - * @return le nom de la dimension ou la chaine vide si la dimension n'a pas - * de nom @ si la dimension demandé n'est pas valide - */ - public String getDimensionName(int dim); - - public String[] getDimensionName(); - - /** - * Retourne la valeur la plus courrement rencontrer dans un tableau. si - * plusieurs valeurs ont le même nombre d'occurence la plus petite valeur - * est retourné. - * - * @param tab le tableau de valeur - * @return la valeur la plus nombreuse dans le tableau - */ - public double getMaxOccurence(); - - /** - * Retourne le nombre de dimensions de la matrice. - */ - public int getNbDim(); - - /** - * Retourne les dimensions de la matrice. - */ - public int[] getDim(); - - /** - * Retourne la dimension de la matrice dans la dimension d - */ - public int getDim(int d); - - /** - * Retourne un iterator sur toute la matrice - */ - public MatrixIterator iterator(); - - /** - * Applique une fonction sur chaque valeur de la matrice - */ - public MatrixND map(MapFunction f); - - // /** - // * Retourne la sous matrice demandée en fonction des dimensions - // * passé en paramètre.<br> - // * - // * Exemple: Si on a un matrice 3D.<br> - // * get([1,1,1]) retourne un element de la matrice.<br> - // * get([0,0]) retourne une matrice 1D.<br> - // * get([3]) retourne une matrice 2D.<br> - // * get([-1,1]) retourne une matrice 2D.<br> - // * get([-1,-1,1]) retourne une matrice 2D.<br> - // * - // * @param dimensions les différentes dimension à extraire. - // * - // * @return une MatrixND. - // */ - // public MatrixND get(int [] dimensions); - // public MatrixND get(int x); - // public MatrixND get(int x, int y); - // public MatrixND get(int x, int y, int z); - // public MatrixND get(int x, int y, int z, int t); - - /** - * Renvoie un element de la matrice demandée en fonction des dimensions - * passé en paramètre.<br> - * - * Exemple: Si on a un matrice 3D.<br> - * getValue(1,1,1) retourne un element de la matrice.<br> - * - * @param dimensions les différentes dimension à extraire. Le tableau doit - * contenir toutes les dimensions de la matrice, et seulement des - * nombres positif - * - * @return un entier double. - */ - public double getValue(int[] dim); - - public double getValue(int x); - - public double getValue(int x, int y); - - public double getValue(int x, int y, int z); - - public double getValue(int x, int y, int z, int t); - - public double getValue(Object[] coordinates); - - public double getValue(Object x); - - public double getValue(Object x, Object y); - - public double getValue(Object x, Object y, Object z); - - public double getValue(Object x, Object y, Object z, Object t); - - // /** - // * Modifie la sous matrice demandée en fonction des dimensions - // * passé en paramètre.<br> - // * - // * Exemple: Si on a un matrice 3D.<br> - // * set([1,1,1], m) modifie un element de la matrice.<br> - // * set([0,0], m) modifie une matrice 1D.<br> - // * set([3], m) modifie une matrice 2D.<br> - // * set([-1,1], m) modifie une matrice 2D.<br> - // * set([-1,-1,1], m) modifie une matrice 2D.<br> - // * - // * @param dimensions les différentes dimension à extraire. - // * - // * @param m la matrice qui doit remplacer la sous matrice spécifié - // * par l'argument dimensions - // */ - // public void set(int [] dimensions, MatrixND m); - // public void set(int x, MatrixND m); - // public void set(int x, int y, MatrixND m); - // public void set(int x, int y, int z, MatrixND m); - // public void set(int x, int y, int z, int t, MatrixND m); - - /** - * Modifie un element de la matrice en fonction des dimensions passé en - * paramètre.<br> - * - * Exemple: Si on a un matrice 3D.<br> - * set([1,1,1], m) modifie un element de la matrice.<br> - * - * @param dimensions les différentes dimension à extraire. - * - * @param d l'entier double qui doit remplacer l'entier double spécifié par - * l'argument dimensions - */ - public void setValue(int[] dimensions, double d); - - public void setValue(int x, double d); - - public void setValue(int x, int y, double d); - - public void setValue(int x, int y, int z, double d); - - public void setValue(int x, int y, int z, int t, double d); - - public void setValue(Object[] coordinates, double d); - - public void setValue(Object x, double d); - - public void setValue(Object x, Object y, double d); - - public void setValue(Object x, Object y, Object z, double d); - - public void setValue(Object x, Object y, Object z, Object t, double d); - - /** - * Copy la matrice pour pouvoir la modifier sans perdre les donnees - * initiales. - */ - public MatrixND copy(); - - // public String toString(); - - // /** - // * Verifie si les 2 matrices sont egal - // */ - // public boolean equals(Object o); - - // /** - // * Verifie si les dimensions sont valide pour cette matrice - // * @return vrai si dim a la même taille que le tableau de dimensions de la - // * matrice et si chaque valeur de dim est comprise entre 0 (inclus) et - // * la taille de la dimension (exclus). - // */ - // public boolean dimValid(int [] dim); - - /** - * Somme toutes les valeurs de la matrice - */ - public double sumAll(); - - /** - * Somme la matrice sur une dimension donnée. La matrice résultat à le même - * nombre de dimension, pas la dimension sommer, ne contient qu'une ligne. - * <p> - * par exemple pour la matrice suivante si on somme sur la dimension 1 cela - * donnera - * - * <pre> - * 1 2 3 - * 2 3 4 - * 3 4 5 - * </pre> - * - * <pre> - * 6 9 12 - * </pre> - * - * @param dim la dimension sur lequel il faut faire la somme - */ - public MatrixND sumOverDim(int dim); - - /** - * Somme la matrice mais la matrice reste de la même dimension. la somme - * permet juste de regrouper dans une dimension un certain nombre de valeur. - * <p> - * pour la matrice suivant - * - * <pre> - * 1 2 3 4 - * 2 3 4 5 - * 3 4 5 6 - * 4 5 6 7 - * </pre> - * - * la somme sur la dimension 1 avec un pas de 2 donnera - * - * <pre> - * 4 6 8 10 - * 6 8 10 12 - * </pre> - * - * c'est à dire que la ligne 0 et la ligne 2 sont sommées. ainsi que la - * ligne 1 avec la ligne 3. - * - * @param dim la dimension sur lequel il faut faire les sommes - * @param step le pas qu'il faut utiliser pour regrouper les elements. Si le - * pas est inférieur à 0, le pas se comporte comme si on avait - * passé en argument la taille de la dimension. Un pas de 0 ou 1, - * retourne juste une copie de la matrice actuelle. si la - * division du pas avec la taille de la dimension ne donne pas un - * nombre entier, les elements restants ne sont pas pris en - * compte. Par exemple si la dimension a 10 élements et que l'on - * donne un pas de 3, dans la matrice resultat la dimension aura - * 3 elements qui seront la somme par 3 des 9 premiers element de - * la matrice courante. Le 10eme element sera perdu. - * @return une nouvelle matrice avec le meme nombre de dimension mais dont - * la dimension passé en paramètre aura comme taille, le resultat de - * la division entier de la taille actuelle par le step - */ - public MatrixND sumOverDim(int dim, int step); - - public MatrixND sumOverDim(int dim, int start, int nb); - - /** - * Permet de supprimer des éléments de la matrice. par exemple pour la - * matrice - * - * <pre> - * 1 2 3 4 - * 2 3 4 5 - * 3 4 5 6 - * 4 5 6 7 - * </pre> - * - * un cut(1, [0,2]) donnera - * - * <pre> - * 2 4 - * 3 5 - * 4 6 - * 5 7 - * </pre> - * - * @param dim la dimension dans lequel il faut supprimer des éléments - * @param toCut les éléments à supprimer - * @return une nouvelle matrice, la matrice actuelle n'est pas modifiée - */ - public MatrixND cut(int dim, int[] toCut); - - /** - * Copie une matrice dans la matrice actuelle. La matrice à copier à le même - * nombre de dimension. Si la matrice à copier est trop grande seul les - * éléments pouvant être copier le seront. - * - * @param mat la matrice à copier - * @return return la matrice courante. - */ - public MatrixND paste(MatrixND mat); - - /** - * Copie une matrice dans la matrice actuelle. La matrice à copier à le même - * nombre de dimension. Si la matrice à copier est trop grande seul les - * éléments pouvant être copier le seront. - * - * @param origin le point à partir duquel il faut faire la copie - * @param mat la matrice à copier - * @return return la matrice courante. - */ - public MatrixND paste(int[] origin, MatrixND mat); - - /** - * Modifie la matrice actuel en metant les valeurs de mat passé en parametre - * La copie se fait en fonction de la semantique, si un element dans une - * dimension n'est pas trouvé, alors il est passé - */ - public MatrixND pasteSemantics(MatrixND mat); - - // /** - // * Permet de prendre une sous matrice dans la matrice. - // * par exemple pour la matrice suivante - // * <pre> - // * 1 2 3 4 5 - // * 2 3 4 5 6 - // * 3 4 5 6 7 - // * 4 5 6 7 8 - // * 5 6 7 8 9 - // * </pre> - // * un getSubMatrix([1,2], [-1, -1], [2,-1]) donnera - // * <pre> - // * 4 5 - // * 5 6 - // * 6 7 - // * </pre> - // * @param origine point à partir duquel on souhaite extraire la matrice - // * toutes les valeurs de ce tableau doivent être renseigné par des nombres - // * positif et inferieur au maximum de chaque dimension respective - // * @param toExtract permet d'indiquer les dimensions que l'on souhaite - // * extraire. Les dimensions que l'on souhaite sont marqué par un -1. Si - // * une dimension n'a pas de -1 alors on ne prend qu'une ligne dans cette - // * dimension. Le nombre de -1 indique la taille de la matrice resultante - // * S'il y a 3 -1 dans le tableau, la matrice aura 3 dimensions - // * @param nbToExtract permet de limite le nombre d'élément à prendre dans - // * une dimension. Si le tableau contient -1 alors toutes les valeurs de - // * origin à la fin seront prise, si le tableau contient une valeur - // positive - // * alors seul le nombre indique sera pris à partir d'origin. Une valeur - // * différente de -1 n'a de sens que pour les dimensions qui ont une valeur - // * -1 dans le paramètre toExtract - // * @return une sous matrice de la matrice - // */ - // public MatrixND getSubMatrix(int [] origin, int [] toExtract, int [] - // nbToExtract); - - /** - * Permet de prendre une sous matrice dans la matrice courante. La sous - * matrice a le même nombre de dimensions mais sur une des dimensions on ne - * prend que certain élément. - * - * @param dim la dimension dans lequel on veut une sous matrice si dim est - * négatif alors la dimension est prise à partir de la fin par - * exemple si l'on veut la derniere dimension il faut passer -1 - * pour dim - * @param start la position dans dim d'ou il faut partir pour prendre la - * sous matrice. - * @param nb le nombre d'élément à prendre dans la dimension. si nb est - * inférieur ou égal à 0 alors cela indique qu'il faut prendre - * tous les éléments jusqu'à la fin de la dimension. - */ - public MatrixND getSubMatrix(int dim, Object start, int nb); - - /** - * Permet de prendre une sous matrice dans la matrice courante. La sous - * matrice a le même nombre de dimensions mais sur une des dimensions on ne - * prend que certain élément. - * - * @param dim la dimension dans lequel on veut une sous matrice - * @param start la position dans dim d'ou il faut partir pour prendre la - * sous matrice. 0 <= start < dim.size si start est négatif alors - * la position de départ est calculé par rapport à la fin de la - * dimension, pour avoir le dernier élément il faut passer -1 - * @param nb le nombre d'élément à prendre dans la dimension si nb est - * inférieur ou égal à 0 alors cela indique qu'il faut prendre - * tous les éléments jusqu'à la fin de la dimension. - */ - public MatrixND getSubMatrix(int dim, int start, int nb); - - /** - * Permet de prendre une sous matrice dans la matrice courante. La sous - * matrice a le même nombre de dimensions mais sur une des dimensions on ne - * prend que certain élément. - * - * @param dim la dimension dans lequel on veut une sous matrice - * @param elem les éléments dans la dimension à conserver - */ - public MatrixND getSubMatrix(int dim, Object... elem); - - /** - * Permet de prendre une sous matrice dans la matrice courante. La sous - * matrice a le même nombre de dimensions mais sur une des dimensions on ne - * prend que certain élément. - * - * @param dim la dimension dans lequel on veut une sous matrice - * @param elem les éléments dans la dimension à conserver - */ - public MatrixND getSubMatrix(int dim, int[] elem); - - /** - * Addition la matrice courante avec la matrice passe en parametre et ce - * retourne elle meme - */ - public MatrixND add(MatrixND m); - - /** - * Soustrai la matrice courante avec la matrice passe en parametre et ce - * retourne elle meme - */ - public MatrixND minus(MatrixND m); - - /** - * retourne le transpose de la matrice - */ - public MatrixND transpose(); - - /** - * Reduit la matrice de sorte que toutes les dimensions qui n'ont qu'un - * élement soit supprimée. Au pire cette méthode retourne une matrice à une - * seule dimension à un seul élément. - * - * @return une nouvelle matrice plus petite que la matrice actuelle ou egal - * s'il n'y a aucune dimension à supprimer - */ - public MatrixND reduce(); - - /** - * Reduit la matrice de sorte que toutes les dimensions qui n'ont qu'un - * élement soit supprimée. Au pire cette méthode retourne une matrice à une - * seule dimension à un seul élément. - * - * @param minNbDim le nombre minimum de dimension que l'on souhaite pour la - * matrice résultat - * @return une nouvelle matrice plus petite que la matrice actuelle ou egal - * s'il n'y a aucune dimension à supprimer - */ - public MatrixND reduce(int minNbDim); - - /** - * Reduit le matrice seulement sur les dimensions passées en argument. Si - * une des dimensions passées en arguement n'a pas un seul élément, cette - * dimension n'est pas prise en compte. - * - * @param dims les dimensions sur lequel il faut faire la reduction - * @return une nouvelle matrice - */ - public MatrixND reduceDims(int... dims); - - /** - * Multiplication normal de 2 matrices 2D. Retourne une nouvelle matrice - */ - public MatrixND mult(MatrixND m); - - // /** - // * multiplication terme a terme de la matrice courante avec la - // * matrice passe en parametre et ce retourne elle meme - // */ - // public MatrixND multm(MatrixND m); - /** - * Multiplication d'une matrice par un scalaire - */ - public MatrixND mults(final double d); - - /** - * Multiplication d'une matrice par un scalaire - */ - public MatrixND divs(final double d); - - /** - * Donne la matrice sous forme de List de list ... de double - * - * @return - */ - public List toList(); - - /** - * Permet de charger une matrice a partir d'une representation List - * - * @param list la matrice sous forme de List de list ... de double - */ - public void fromList(List list); - - /** - * Determine si la matrice supporte l'import et l'export CSV - * - * @return support du CSV - */ - public boolean isSupportedCSV(); - - /** - * Import depuis un reader au format CSV des données dans la matrice - * - * @param reader le reader à importer - * @param origin le point à partir duquel il faut faire l'importation - */ - public void importCSV(Reader reader, int[] origin) throws IOException; - - /** - * Export dans un writer au format CSV de la matrice - * - * @param writer le writer ou copier la matrice - * @param withSemantics export ou pas des semantiques de la matrice dans le - * writer - */ - public void exportCSV(Writer writer, boolean withSemantics) - throws IOException; - - /** - * Verifie si les matrices sont egales en ne regardant que les valeurs et - * pas les semantiques - * - * @param mat - * @return - */ - public boolean equalsValues(MatrixND mat); - - // /** - // * Multiplication d'une vecteur [i] avec une matrice [i,j], - // * le resultat est result[i,j]=matrice[i,j]*vecteur[i] - // */ - // public MatrixND multv(MatrixND v); - // /** - // * Multiplication d'une vecteur [i] avec une matrice [g,h,i,j,k,..], - // * le resultat est - // result[g,h,i,j,k,..]=matrice[g,h,i,j,k,l,...]*vecteur[i] - // * @param v le vecteur - // * @param dim la position de la dimension avec lequel il faut multiplier - // * le vecteur. - // */ - // public MatrixND multv(MatrixND v, int dim); - // /** - // * Addition d'un vecteur [i] avec une matrice [g,h,i,j,k,..], - // * le resultat est - // result[g,h,i,j,k,..]=matrice[g,h,i,j,k,l,...]+vecteur[i] - // * @param v le vecteur - // * @param dim la dimension ou on doit mettre le vecteur doit etre egal a - // -1 - // * [0, -1, 3 ] ajoutera le vecteur dans la dimension 2 - // */ - // public MatrixND addv(MatrixND v, int [] dim); - -} // MatrixND - Copied: lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MatrixND.java (from rev 101, lutinmatrix/trunk/src/main/java/org/codelutin/math/matrix/MatrixND.java) =================================================================== --- lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MatrixND.java (rev 0) +++ lutinmatrix/tags/lutinmatrix-1.1/src/main/java/org/codelutin/math/matrix/MatrixND.java 2008-10-24 08:18:46 UTC (rev 103) @@ -0,0 +1,618 @@ +/* *##% lutinmatrix + * Copyright (C) 2004 - 2008 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +/* * + * MatrixND.java + * + * Created: 29 oct. 2004 + * + * @author Benjamin Poussin <poussin@codelutin.com> + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ + +package org.codelutin.math.matrix; + +import java.io.IOException; +import java.io.Reader; +import java.io.Serializable; +import java.io.Writer; +import java.util.List; + +public interface MatrixND extends Serializable, Cloneable { // MatrixND + + /** + * Retourne la factory qui a permit de creer la matrice + */ + public MatrixFactory getFactory(); + + /** + * Donne toutes les semantiques de la matrice Si la matrice n'a pas de + * semantique retourne null + */ + public List[] getSemantics(); + + /** + * Retourne la semantique pour une dimension + * + * @param dim la dimension pour lequel on veut la semantique + * @return la semantique de la dimension on null s'il n'y a pas de + * semantique + */ + public List getSemantics(int dim); + + /** + * Modifie la semantique d'une dimension + */ + public void setSemantics(int dim, List sem); + + /** + * Permet de donner un nom à la matrice. + */ + public void setName(String name); + + /** + * Retourne le nom de la matrice + * + * @return le nom de la matrice ou la chaine vide si pas de nom. + */ + public String getName(); + + /** + * Permet de mettre des noms aux différentes dimension. + */ + public void setDimensionName(String[] names); + + /** + * Permet de mettre un nom à une dimension. + * + * @param dim la dimension dont on veut changer le nom + * @param name le nom à donner à la dimension + */ + public void setDimensionName(int dim, String name); + + /** + * Retourne le nom de la dimension demandé. + * + * @param dim la dimension dont on veut le nom + * @return le nom de la dimension ou la chaine vide si la dimension n'a pas + * de nom @ si la dimension demandé n'est pas valide + */ + public String getDimensionName(int dim); + + public String[] getDimensionName(); + + /** + * Retourne la valeur la plus courrement rencontrer dans un tableau. si + * plusieurs valeurs ont le même nombre d'occurence la plus petite valeur + * est retourné. + * + * @return la valeur la plus nombreuse dans le tableau + */ + public double getMaxOccurence(); + + /** + * Retourne le nombre de dimensions de la matrice. + */ + public int getNbDim(); + + /** + * Retourne les dimensions de la matrice. + */ + public int[] getDim(); + + /** + * Retourne la dimension de la matrice dans la dimension d + */ + public int getDim(int d); + + /** + * Retourne un iterator sur toute la matrice + */ + public MatrixIterator iterator(); + + /** + * Applique une fonction sur chaque valeur de la matrice + */ + public MatrixND map(MapFunction f); + + // /** + // * Retourne la sous matrice demandée en fonction des dimensions + // * passé en paramètre.<br> + // * + // * Exemple: Si on a un matrice 3D.<br> + // * get([1,1,1]) retourne un element de la matrice.<br> + // * get([0,0]) retourne une matrice 1D.<br> + // * get([3]) retourne une matrice 2D.<br> + // * get([-1,1]) retourne une matrice 2D.<br> + // * get([-1,-1,1]) retourne une matrice 2D.<br> + // * + // * @param dimensions les différentes dimension à extraire. + // * + // * @return une MatrixND. + // */ + // public MatrixND get(int [] dimensions); + // public MatrixND get(int x); + // public MatrixND get(int x, int y); + // public MatrixND get(int x, int y, int z); + // public MatrixND get(int x, int y, int z, int t); + + /** + * Renvoie un element de la matrice demandée en fonction des dimensions + * passé en paramètre.<br> + * + * Exemple: Si on a un matrice 3D.<br> + * getValue(1,1,1) retourne un element de la matrice.<br> + * + * @param dimensions les différentes dimension à extraire. Le tableau doit + * contenir toutes les dimensions de la matrice, et seulement des + * nombres positif + * + * @return un entier double. + */ + public double getValue(int[] dimensions); + + public double getValue(int x); + + public double getValue(int x, int y); + + public double getValue(int x, int y, int z); + + public double getValue(int x, int y, int z, int t); + + public double getValue(Object[] coordinates); + + public double getValue(Object x); + + public double getValue(Object x, Object y); + + public double getValue(Object x, Object y, Object z); + + public double getValue(Object x, Object y, Object z, Object t); + + // /** + // * Modifie la sous matrice demandée en fonction des dimensions + // * passé en paramètre.<br> + // * + // * Exemple: Si on a un matrice 3D.<br> + // * set([1,1,1], m) modifie un element de la matrice.<br> + // * set([0,0], m) modifie une matrice 1D.<br> + // * set([3], m) modifie une matrice 2D.<br> + // * set([-1,1], m) modifie une matrice 2D.<br> + // * set([-1,-1,1], m) modifie une matrice 2D.<br> + // * + // * @param dimensions les différentes dimension à extraire. + // * + // * @param m la matrice qui doit remplacer la sous matrice spécifié + // * par l'argument dimensions + // */ + // public void set(int [] dimensions, MatrixND m); + // public void set(int x, MatrixND m); + // public void set(int x, int y, MatrixND m); + // public void set(int x, int y, int z, MatrixND m); + // public void set(int x, int y, int z, int t, MatrixND m); + + /** + * Modifie un element de la matrice en fonction des dimensions passé en + * paramètre.<br> + * + * Exemple: Si on a un matrice 3D.<br> + * set([1,1,1], m) modifie un element de la matrice.<br> + * + * @param dimensions les différentes dimension à extraire. + * + * @param d l'entier double qui doit remplacer l'entier double spécifié par + * l'argument dimensions + */ + public void setValue(int[] dimensions, double d); + + public void setValue(int x, double d); + + public void setValue(int x, int y, double d); + + public void setValue(int x, int y, int z, double d); + + public void setValue(int x, int y, int z, int t, double d); + + public void setValue(Object[] coordinates, double d); + + public void setValue(Object x, double d); + + public void setValue(Object x, Object y, double d); + + public void setValue(Object x, Object y, Object z, double d); + + public void setValue(Object x, Object y, Object z, Object t, double d); + + /** + * Copy la matrice pour pouvoir la modifier sans perdre les donnees + * initiales. + */ + public MatrixND copy(); + + // public String toString(); + + // /** + // * Verifie si les 2 matrices sont egal + // */ + // public boolean equals(Object o); + + // /** + // * Verifie si les dimensions sont valide pour cette matrice + // * @return vrai si dim a la même taille que le tableau de dimensions de la + // * matrice et si chaque valeur de dim est comprise entre 0 (inclus) et + // * la taille de la dimension (exclus). + // */ + // public boolean dimValid(int [] dim); + + /** + * Somme toutes les valeurs de la matrice + */ + public double sumAll(); + + /** + * Somme la matrice sur une dimension donnée. La matrice résultat à le même + * nombre de dimension, pas la dimension sommer, ne contient qu'une ligne. + * <p> + * par exemple pour la matrice suivante si on somme sur la dimension 1 cela + * donnera + * + * <pre> + * 1 2 3 + * 2 3 4 + * 3 4 5 + * </pre> + * + * <pre> + * 6 9 12 + * </pre> + * + * @param dim la dimension sur lequel il faut faire la somme + */ + public MatrixND sumOverDim(int dim); + + /** + * Somme la matrice mais la matrice reste de la même dimension. la somme + * permet juste de regrouper dans une dimension un certain nombre de valeur. + * <p> + * pour la matrice suivant + * + * <pre> + * 1 2 3 4 + * 2 3 4 5 + * 3 4 5 6 + * 4 5 6 7 + * </pre> + * + * la somme sur la dimension 1 avec un pas de 2 donnera + * + * <pre> + * 4 6 8 10 + * 6 8 10 12 + * </pre> + * + * c'est à dire que la ligne 0 et la ligne 2 sont sommées. ainsi que la + * ligne 1 avec la ligne 3. + * + * @param dim la dimension sur lequel il faut faire les sommes + * @param step le pas qu'il faut utiliser pour regrouper les elements. Si le + * pas est inférieur à 0, le pas se comporte comme si on avait + * passé en argument la taille de la dimension. Un pas de 0 ou 1, + * retourne juste une copie de la matrice actuelle. si la + * division du pas avec la taille de la dimension ne donne pas un + * nombre entier, les elements restants ne sont pas pris en + * compte. Par exemple si la dimension a 10 élements et que l'on + * donne un pas de 3, dans la matrice resultat la dimension aura + * 3 elements qui seront la somme par 3 des 9 premiers element de + * la matrice courante. Le 10eme element sera perdu. + * @return une nouvelle matrice avec le meme nombre de dimension mais dont + * la dimension passé en paramètre aura comme taille, le resultat de + * la division entier de la taille actuelle par le step + */ + public MatrixND sumOverDim(int dim, int step); + + public MatrixND sumOverDim(int dim, int start, int nb); + + /** + * Permet de supprimer des éléments de la matrice. par exemple pour la + * matrice + * + * <pre> + * 1 2 3 4 + * 2 3 4 5 + * 3 4 5 6 + * 4 5 6 7 + * </pre> + * + * un cut(1, [0,2]) donnera + * + * <pre> + * 2 4 + * 3 5 + * 4 6 + * 5 7 + * </pre> + * + * @param dim la dimension dans lequel il faut supprimer des éléments + * @param toCut les éléments à supprimer + * @return une nouvelle matrice, la matrice actuelle n'est pas modifiée + */ + public MatrixND cut(int dim, int[] toCut); + + /** + * Copie une matrice dans la matrice actuelle. La matrice à copier à le même + * nombre de dimension. Si la matrice à copier est trop grande seul les + * éléments pouvant être copier le seront. + * + * @param mat la matrice à copier + * @return return la matrice courante. + */ + public MatrixND paste(MatrixND mat); + + /** + * Copie une matrice dans la matrice actuelle. La matrice à copier à le même + * nombre de dimension. Si la matrice à copier est trop grande seul les + * éléments pouvant être copier le seront. + * + * @param origin le point à partir duquel il faut faire la copie + * @param mat la matrice à copier + * @return return la matrice courante. + */ + public MatrixND paste(int[] origin, MatrixND mat); + + /** + * Modifie la matrice actuel en metant les valeurs de mat passé en parametre + * La copie se fait en fonction de la semantique, si un element dans une + * dimension n'est pas trouvé, alors il est passé + */ + public MatrixND pasteSemantics(MatrixND mat); + + // /** + // * Permet de prendre une sous matrice dans la matrice. + // * par exemple pour la matrice suivante + // * <pre> + // * 1 2 3 4 5 + // * 2 3 4 5 6 + // * 3 4 5 6 7 + // * 4 5 6 7 8 + // * 5 6 7 8 9 + // * </pre> + // * un getSubMatrix([1,2], [-1, -1], [2,-1]) donnera + // * <pre> + // * 4 5 + // * 5 6 + // * 6 7 + // * </pre> + // * @param origine point à partir duquel on souhaite extraire la matrice + // * toutes les valeurs de ce tableau doivent être renseigné par des nombres + // * positif et inferieur au maximum de chaque dimension respective + // * @param toExtract permet d'indiquer les dimensions que l'on souhaite + // * extraire. Les dimensions que l'on souhaite sont marqué par un -1. Si + // * une dimension n'a pas de -1 alors on ne prend qu'une ligne dans cette + // * dimension. Le nombre de -1 indique la taille de la matrice resultante + // * S'il y a 3 -1 dans le tableau, la matrice aura 3 dimensions + // * @param nbToExtract permet de limite le nombre d'élément à prendre dans + // * une dimension. Si le tableau contient -1 alors toutes les valeurs de + // * origin à la fin seront prise, si le tableau contient une valeur + // positive + // * alors seul le nombre indique sera pris à partir d'origin. Une valeur + // * différente de -1 n'a de sens que pour les dimensions qui ont une valeur + // * -1 dans le paramètre toExtract + // * @return une sous matrice de la matrice + // */ + // public MatrixND getSubMatrix(int [] origin, int [] toExtract, int [] + // nbToExtract); + + /** + * Permet de prendre une sous matrice dans la matrice courante. La sous + * matrice a le même nombre de dimensions mais sur une des dimensions on ne + * prend que certain élément. + * + * @param dim la dimension dans lequel on veut une sous matrice si dim est + * négatif alors la dimension est prise à partir de la fin par + * exemple si l'on veut la derniere dimension il faut passer -1 + * pour dim + * @param start la position dans dim d'ou il faut partir pour prendre la + * sous matrice. + * @param nb le nombre d'élément à prendre dans la dimension. si nb est + * inférieur ou égal à 0 alors cela indique qu'il faut prendre + * tous les éléments jusqu'à la fin de la dimension. + */ + public MatrixND getSubMatrix(int dim, Object start, int nb); + + /** + * Permet de prendre une sous matrice dans la matrice courante. La sous + * matrice a le même nombre de dimensions mais sur une des dimensions on ne + * prend que certain élément. + * + * @param dim la dimension dans lequel on veut une sous matrice + * @param start la position dans dim d'ou il faut partir pour prendre la + * sous matrice. 0 <= start < dim.size si start est négatif alors + * la position de départ est calculé par rapport à la fin de la + * dimension, pour avoir le dernier élément il faut passer -1 + * @param nb le nombre d'élément à prendre dans la dimension si nb est + * inférieur ou égal à 0 alors cela indique qu'il faut prendre + * tous les éléments jusqu'à la fin de la dimension. + */ + public MatrixND getSubMatrix(int dim, int start, int nb); + + /** + * Permet de prendre une sous matrice dans la matrice courante. La sous + * matrice a le même nombre de dimensions mais sur une des dimensions on ne + * prend que certain élément. + * + * @param dim la dimension dans lequel on veut une sous matrice + * @param elem les éléments dans la dimension à conserver + */ + public MatrixND getSubMatrix(int dim, Object... elem); + + /** + * Permet de prendre une sous matrice dans la matrice courante. La sous + * matrice a le même nombre de dimensions mais sur une des dimensions on ne + * prend que certain élément. + * + * @param dim la dimension dans lequel on veut une sous matrice + * @param elem les éléments dans la dimension à conserver + */ + public MatrixND getSubMatrix(int dim, int[] elem); + + /** + * Addition la matrice courante avec la matrice passe en parametre et ce + * retourne elle meme + */ + public MatrixND add(MatrixND m); + + /** + * Soustrai la matrice courante avec la matrice passe en parametre et ce + * retourne elle meme + */ + public MatrixND minus(MatrixND m); + + /** + * retourne le transpose de la matrice + */ + public MatrixND transpose(); + + /** + * Reduit la matrice de sorte que toutes les dimensions qui n'ont qu'un + * élement soit supprimée. Au pire cette méthode retourne une matrice à une + * seule dimension à un seul élément. + * + * @return une nouvelle matrice plus petite que la matrice actuelle ou egal + * s'il n'y a aucune dimension à supprimer + */ + public MatrixND reduce(); + + /** + * Reduit la matrice de sorte que toutes les dimensions qui n'ont qu'un + * élement soit supprimée. Au pire cette méthode retourne une matrice à une + * seule dimension à un seul élément. + * + * @param minNbDim le nombre minimum de dimension que l'on souhaite pour la + * matrice résultat + * @return une nouvelle matrice plus petite que la matrice actuelle ou egal + * s'il n'y a aucune dimension à supprimer + */ + public MatrixND reduce(int minNbDim); + + /** + * Reduit le matrice seulement sur les dimensions passées en argument. Si + * une des dimensions passées en arguement n'a pas un seul élément, cette + * dimension n'est pas prise en compte. + * + * @param dims les dimensions sur lequel il faut faire la reduction + * @return une nouvelle matrice + */ + public MatrixND reduceDims(int... dims); + + /** + * Multiplication normal de 2 matrices 2D. Retourne une nouvelle matrice + */ + public MatrixND mult(MatrixND m); + + // /** + // * multiplication terme a terme de la matrice courante avec la + // * matrice passe en parametre et ce retourne elle meme + // */ + // public MatrixND multm(MatrixND m); + /** + * Multiplication d'une matrice par un scalaire + */ + public MatrixND mults(final double d); + + /** + * Multiplication d'une matrice par un scalaire + */ + public MatrixND divs(final double d); + + /** + * Donne la matrice sous forme de List de list ... de double + * + * @return + */ + public List toList(); + + /** + * Permet de charger une matrice a partir d'une representation List + * + * @param list la matrice sous forme de List de list ... de double + */ + public void fromList(List list); + + /** + * Determine si la matrice supporte l'import et l'export CSV + * + * @return support du CSV + */ + public boolean isSupportedCSV(); + + /** + * Import depuis un reader au format CSV des données dans la matrice + * + * @param reader le reader à importer + * @param origin le point à partir duquel il faut faire l'importation + */ + public void importCSV(Reader reader, int[] origin) throws IOException; + + /** + * Export dans un writer au format CSV de la matrice + * + * @param writer le writer ou copier la matrice + * @param withSemantics export ou pas des semantiques de la matrice dans le + * writer + */ + public void exportCSV(Writer writer, boolean withSemantics) + throws IOException; + + /** + * Verifie si les matrices sont egales en ne regardant que les valeurs et + * pas les semantiques + * + * @param mat + * @return + */ + public boolean equalsValues(MatrixND mat); + + // /** + // * Multiplication d'une vecteur [i] avec une matrice [i,j], + // * le resultat est result[i,j]=matrice[i,j]*vecteur[i] + // */ + // public MatrixND multv(MatrixND v); + // /** + // * Multiplication d'une vecteur [i] avec une matrice [g,h,i,j,k,..], + // * le resultat est + // result[g,h,i,j,k,..]=matrice[g,h,i,j,k,l,...]*vecteur[i] + // * @param v le vecteur + // * @param dim la position de la dimension avec lequel il faut multiplier + // * le vecteur. + // */ + // public MatrixND multv(MatrixND v, int dim); + // /** + // * Addition d'un vecteur [i] avec une matrice [g,h,i,j,k,..], + // * le resultat est + // result[g,h,i,j,k,..]=matrice[g,h,i,j,k,l,...]+vecteur[i] + // * @param v le vecteur + // * @param dim la dimension ou on doit mettre le vecteur doit etre egal a + // -1 + // * [0, -1, 3 ] ajoutera le vecteur dans la dimension 2 + // */ + // public MatrixND addv(MatrixND v, int [] dim); + +} // MatrixND + Deleted: lutinmatrix/tags/lutinmatrix-1.1/src/site/site.xml =================================================================== --- lutinmatrix/trunk/src/site/site.xml 2008-09-29 17:47:43 UTC (rev 98) +++ lutinmatrix/tags/lutinmatrix-1.1/src/site/site.xml 2008-10-24 08:18:46 UTC (rev 103) @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project name="LutinMatrix"> - - <skin> - <groupId>org.codelutin</groupId> - <artifactId>maven-lutin-skin</artifactId> - <version>0.2</version> - </skin> - - <bannerLeft> - <name>Lutin Matrix</name> - </bannerLeft> - - <bannerRight> - <src>http://www.codelutin.com/images/lutinorange-codelutin.png</src> - <href>http://www.codelutin.com</href> - </bannerRight> - - <body> - <links> - <item name="Labs" href="http://labs.libre-entreprise.org/"/> - <item name="Code Lutin" href="http://www.codelutin.com/"/> - </links> - - <menu name="Utilisateur"> - <item href="http://lutinbuilder.labs.libre-entreprise.org/maven2/org/codelutin/lutinmatr..." name="Téléchargement"/> - </menu> - - <menu name="Développeur"> - <item name="Serializable" href="Serializable.html"/> - <item name="Todo" href="Todo.html"/> - </menu> - - ${reports} - - </body> -</project> Copied: lutinmatrix/tags/lutinmatrix-1.1/src/site/site.xml (from rev 99, lutinmatrix/trunk/src/site/site.xml) =================================================================== --- lutinmatrix/tags/lutinmatrix-1.1/src/site/site.xml (rev 0) +++ lutinmatrix/tags/lutinmatrix-1.1/src/site/site.xml 2008-10-24 08:18:46 UTC (rev 103) @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project name="LutinMatrix"> + + <publishDate format="dd/MM/yyyy"/> + + <skin> + <groupId>org.codelutin</groupId> + <artifactId>maven-lutin-skin</artifactId> + <version>0.2.1</version> + </skin> + + <bannerLeft> + <name>Lutin Matrix</name> + </bannerLeft> + + <bannerRight> + <src>http://www.codelutin.com/images/lutinorange-codelutin.png</src> + <href>http://www.codelutin.com</href> + </bannerRight> + + <body> + <links> + <item name="Labs" href="http://labs.libre-entreprise.org/"/> + <item name="Code Lutin" href="http://www.codelutin.com/"/> + </links> + + <menu name="Utilisateur"> + <item href="http://lutinbuilder.labs.libre-entreprise.org/maven2/org/codelutin/lutinmatr..." name="Téléchargement"/> + </menu> + + <menu name="Développeur"> + <item name="Serializable" href="Serializable.html"/> + <item name="Todo" href="Todo.html"/> + </menu> + + ${reports} + + </body> +</project>
participants (1)
-
chatellier@users.labs.libre-entreprise.org