You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by lu...@apache.org on 2012/09/11 10:37:53 UTC

svn commit: r1383287 - in /commons/proper/math/trunk/src/site/design: ./ differentiation.puml oneD.puml partitioning.puml solver.puml threeD.puml twoD.puml

Author: luc
Date: Tue Sep 11 08:37:52 2012
New Revision: 1383287

URL: http://svn.apache.org/viewvc?rev=1383287&view=rev
Log:
added a few UML diagrams.
The diagrams are not used in the documentation yet, they are only kept for reference and may be removed later.

Added:
    commons/proper/math/trunk/src/site/design/
    commons/proper/math/trunk/src/site/design/differentiation.puml
    commons/proper/math/trunk/src/site/design/oneD.puml
    commons/proper/math/trunk/src/site/design/partitioning.puml
    commons/proper/math/trunk/src/site/design/solver.puml
    commons/proper/math/trunk/src/site/design/threeD.puml
    commons/proper/math/trunk/src/site/design/twoD.puml

Added: commons/proper/math/trunk/src/site/design/differentiation.puml
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/site/design/differentiation.puml?rev=1383287&view=auto
==============================================================================
--- commons/proper/math/trunk/src/site/design/differentiation.puml (added)
+++ commons/proper/math/trunk/src/site/design/differentiation.puml Tue Sep 11 08:37:52 2012
@@ -0,0 +1,105 @@
+' Licensed to the Apache Software Foundation (ASF) under one or more
+' contributor license agreements.  See the NOTICE file distributed with
+' this work for additional information regarding copyright ownership.
+' The ASF licenses this file to You under the Apache License, Version 2.0
+' (the "License"); you may not use this file except in compliance with
+' the License.  You may obtain a copy of the License at
+'
+'      http://www.apache.org/licenses/LICENSE-2.0
+'
+' Unless required by applicable law or agreed to in writing, software
+' distributed under the License is distributed on an "AS IS" BASIS,
+' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+' See the License for the specific language governing permissions and
+' limitations under the License.
+
+@startuml
+
+  skinparam svek                  true
+  skinparam ClassBackgroundColor  #F3EFEB
+  skinparam ClassArrowColor       #691616
+  skinparam ClassBorderColor      #691616
+  skinparam NoteBackgroundColor   #F3EFEB
+  skinparam NoteBorderColor       #691616
+  skinparam NoteFontColor         #691616
+  skinparam ClassFontSize         11
+
+  package org.apache.commons.math3 #ECEBD8
+
+    interface "FieldElement<T>" as FieldElement_T_ {
+      T add(T a)
+      T subtract(T a)
+      T negate()
+      T multiply(int n)
+      T multiply(T a)
+      T divide(T a)
+      T reciprocal()
+      Field<T> getField()
+    }
+
+    package analysis #DDEBD8
+      interface UnivariateFunction {
+        double value(double x)
+      }
+
+      package differentiation #DDDBD8
+
+        class DerivativeStructure {
+          -DerivativeStructure(DSCompiler compiler)
+          +DerivativeStructure(int parameters, int order, double value)
+          +DerivativeStructure(int parameters, int order, int index, double value)
+          +int getFreeParameters()
+          +int getOrder()
+          +double getValue()
+          +double getPartialDerivative(int[] orders)
+          +double taylor(double[] delta)
+          +int getExponent()
+          +DerivativeStructure compose(double[] f)
+          +DerivativeStructure cos()
+          +DerivativeStructure sin()
+          +DerivativeStructure exp()
+          +DerivativeStructure sqrt()
+        }
+        note bottom
+          lots of mathematical methods
+          and constructors ommitted for clarity
+        end note
+
+        class DSCompiler {
+          {static} +DSCompiler getCompiler(int parameters, int order)
+          +int getPartialDerivativeIndex(int[] orders)
+          +int[] getPartialDerivativeOrders(int index)
+          +int getFreeParameters()
+          +int getOrder()
+          +int getSize()
+          +void checkCompatibility(DSCompiler compiler)
+          +void compose(double[] operand, int operandOffset, double[] f, double[] result, int resultOffset)
+          +double taylor(double[] ds, int dsOffset, double[] delta)
+          +void add(double[] lhs, int lhsOffset, double[] rhs, int rhsOffset, double[] result, int resultOffset)
+          +void exp(double[] operand, int operandOffset, double[] result, int resultOffset)
+        }
+        note bottom
+          one compiler is built for each pair
+          (number of parameters, derivation order)
+          they are cached for efficiency
+        end note
+
+        interface UnivariateDifferentiable {
+          DerivativeStructure value(DerivativeStructure t)
+        }
+
+        interface UnivariateDifferentiator {
+          UnivariateDifferentiable differentiate(UnivariateFunction function)
+        }
+
+        FieldElement_T_     <..      DerivativeStructure
+        DerivativeStructure o--> "1" DSCompiler : delegates computation
+        UnivariateFunction  <|..     UnivariateDifferentiable
+        UnivariateDifferentiable <-- UnivariateDifferentiator : creates
+        UnivariateDifferentiable --> DerivativeStructure : uses
+
+      end package
+    end package
+  end package
+
+@enduml

Added: commons/proper/math/trunk/src/site/design/oneD.puml
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/site/design/oneD.puml?rev=1383287&view=auto
==============================================================================
--- commons/proper/math/trunk/src/site/design/oneD.puml (added)
+++ commons/proper/math/trunk/src/site/design/oneD.puml Tue Sep 11 08:37:52 2012
@@ -0,0 +1,81 @@
+' Licensed to the Apache Software Foundation (ASF) under one or more
+' contributor license agreements.  See the NOTICE file distributed with
+' this work for additional information regarding copyright ownership.
+' The ASF licenses this file to You under the Apache License, Version 2.0
+' (the "License"); you may not use this file except in compliance with
+' the License.  You may obtain a copy of the License at
+'
+'      http://www.apache.org/licenses/LICENSE-2.0
+'
+' Unless required by applicable law or agreed to in writing, software
+' distributed under the License is distributed on an "AS IS" BASIS,
+' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+' See the License for the specific language governing permissions and
+' limitations under the License.
+
+@startuml
+
+  skinparam svek                  true
+  skinparam ClassBackgroundColor  #F3EFEB
+  skinparam ClassArrowColor       #691616
+  skinparam ClassBorderColor      #691616
+  skinparam NoteBackgroundColor   #F3EFEB
+  skinparam NoteBorderColor       #691616
+  skinparam NoteFontColor         #691616
+  skinparam ClassFontSize         11
+
+  package org.apache.commons.math3.geometry #ECEBD8
+
+    interface Space {
+      +int getDimension()
+      +Space getSubSpace()
+    }
+    note top
+      Space is mainly used as a parameter
+      for generics and to link d-dimensional
+      space with (d-1)-dimensional space
+    end note
+
+    interface "Vector<S extends Space>" as Vector_S_ {
+      +Space getSpace()
+      +Vector getZero()
+      +double getNorm()
+      +Vector add()
+      +Vector subtract()
+      +Vector negate()
+      +Vector normalize()
+      +Vector scalarMultiply()
+      +boolean isNaN()
+      +boolean isInfinite()
+      +double distance()
+      +double dotProduct()
+    }
+
+    Space <-- Vector_S_
+
+    package partitioning #DDEBD8
+      interface "Region<S extends Space>" as Region_S_
+      interface "Hyperplane<S extends Space>" as Hyperplane_S_
+      interface "SubHyperplane<S extends Space>" as SubHyperplane_S_
+    end package
+
+    package euclidean #DDEBD8
+
+      package oned #DDDBD8
+
+        class Euclidean1D
+        class OrientedPoint
+        class Interval
+        class IntervalSet
+
+        Space       <|.. Euclidean1D
+        Vector_S_   <|.. OrientedPoint
+        Region_S_   <|.. IntervalSet
+
+      end package
+
+    end package
+
+  end package
+
+@enduml

Added: commons/proper/math/trunk/src/site/design/partitioning.puml
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/site/design/partitioning.puml?rev=1383287&view=auto
==============================================================================
--- commons/proper/math/trunk/src/site/design/partitioning.puml (added)
+++ commons/proper/math/trunk/src/site/design/partitioning.puml Tue Sep 11 08:37:52 2012
@@ -0,0 +1,119 @@
+' Licensed to the Apache Software Foundation (ASF) under one or more
+' contributor license agreements.  See the NOTICE file distributed with
+' this work for additional information regarding copyright ownership.
+' The ASF licenses this file to You under the Apache License, Version 2.0
+' (the "License"); you may not use this file except in compliance with
+' the License.  You may obtain a copy of the License at
+'
+'      http://www.apache.org/licenses/LICENSE-2.0
+'
+' Unless required by applicable law or agreed to in writing, software
+' distributed under the License is distributed on an "AS IS" BASIS,
+' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+' See the License for the specific language governing permissions and
+' limitations under the License.
+
+@startuml
+
+  skinparam svek                  true
+  skinparam ClassBackgroundColor  #F3EFEB
+  skinparam ClassArrowColor       #691616
+  skinparam ClassBorderColor      #691616
+  skinparam NoteBackgroundColor   #F3EFEB
+  skinparam NoteBorderColor       #691616
+  skinparam NoteFontColor         #691616
+  skinparam ClassFontSize         11
+
+  package org.apache.commons.math3.geometry #ECEBD8
+
+    package partitioning #DDEBD8
+
+      abstract "AbstractSubHyperplane<S extends Space, T extends Space>" as AbstractSubHyperplane_S_T_
+      note left
+        an abstract sub-hyperplane contains
+         - an hyperplane defined in space S
+         - a region defined in space T
+        T being a sub-space of S
+      end note
+
+      interface "Hyperplane<S extends Space>" as Hyperplane_S_ {
+        +double getOffset(Vector point)
+        +boolean sameOrientationAs(Hyperplane other)
+        +SubHyperplane wholeHyperplane()
+        +Region wholeSpace()
+      }
+
+      interface "SubHyperplane<S extends Space>" as SubHyperplane_S_ {
+        +Hyperplane getHyperplane()
+        +boolean isEmpty()
+        +double getSize()
+        +Side side(Hyperplane hyperplane)
+        +SplitSubHyperplane split(Hyperplane hyperplane)
+        +SubHyperplane reunite(SubHyperplane other)
+      }
+
+      class "BSPTree<S extends Space>" as BSPTree_S_ {
+        +boolean insertCut(Hyperplane hyperplane)
+        +void setAttribute(Object attribute)
+        +Object getAttribute()
+        +void visit(BSPTreeVisitor visitor)
+        +BSPTree getCell(Vector point)
+        +BSPTree split(SubHyperplane sub)
+      }
+
+      interface "BSPTreeVisitor<S extends Space>" as BSPTreeVisitor_S_ {
+        +Order visitOrder(BSPTree node)
+        +void visitInternalNode(BSPTree node)
+        +void visitLeafNode(BSPTree node)
+      }
+
+      interface "Region<S extends Space>" as Region_S_ {
+        +boolean isEmpty()
+        +boolean contains(Region region)
+        +Location checkPoint(Vector point)
+        +double getBoundarySize()
+        +double getSize()
+        +Vector getBarycenter()
+        +Side side(Hyperplane hyperplane)
+        +SubHyperplane intersection(SubHyperplane sub)
+      }
+      note top
+        a region is a part of the space
+        it may be empty,
+        it may cover the whole space,
+        it may have infinite non-closed boudaries,
+        it may be in several disconnected sub-parts,
+        it may contain holes
+      end note
+
+      enum Location {
+        +INSIDE
+        +OUTSIDE
+        +BOUNDARY
+      }
+
+      enum Side {
+        +PLUS
+        +MINUS
+        +BOTH
+        +HYPER
+      }
+
+      Hyperplane_S_ "1" <--* "1" SubHyperplane_S_
+      SubHyperplane_S_ "0..1" <--* BSPTree_S_ : cut
+      BSPTree_S_ <--o BSPTree_S_ : "parent      "
+      BSPTree_S_ o--> BSPTree_S_ : "children"
+      Region_S_ *-->  "1" BSPTree_S_
+      Hyperplane_S_  <-- Region_S_
+      AbstractSubHyperplane_S_T_ ..|> SubHyperplane_S_
+      AbstractSubHyperplane_S_T_ *--> "1" Hyperplane_S_ : hyperplane
+      AbstractSubHyperplane_S_T_ *--> "1" Region_S_ : region
+      Region_S_ --> Location
+      Region_S_ --> Side
+      BSPTree_S_ <-- BSPTreeVisitor_S_ : visits
+
+    end package
+
+  end package
+
+@enduml

Added: commons/proper/math/trunk/src/site/design/solver.puml
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/site/design/solver.puml?rev=1383287&view=auto
==============================================================================
--- commons/proper/math/trunk/src/site/design/solver.puml (added)
+++ commons/proper/math/trunk/src/site/design/solver.puml Tue Sep 11 08:37:52 2012
@@ -0,0 +1,102 @@
+' Licensed to the Apache Software Foundation (ASF) under one or more
+' contributor license agreements.  See the NOTICE file distributed with
+' this work for additional information regarding copyright ownership.
+' The ASF licenses this file to You under the Apache License, Version 2.0
+' (the "License"); you may not use this file except in compliance with
+' the License.  You may obtain a copy of the License at
+'
+'      http://www.apache.org/licenses/LICENSE-2.0
+'
+' Unless required by applicable law or agreed to in writing, software
+' distributed under the License is distributed on an "AS IS" BASIS,
+' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+' See the License for the specific language governing permissions and
+' limitations under the License.
+
+@startuml
+
+  skinparam svek                  true
+  skinparam ClassBackgroundColor  #F3EFEB
+  skinparam ClassArrowColor       #691616
+  skinparam ClassBorderColor      #691616
+  skinparam NoteBackgroundColor   #F3EFEB
+  skinparam NoteBorderColor       #691616
+  skinparam NoteFontColor         #691616
+  skinparam ClassFontSize         11
+
+  package org.apache.commons.math3.differentiation.solvers #ECEBD8
+
+        enum AllowedSolution {
+          ANY_SIDE
+          LEFT_SIDE
+          RIGHT_SIDE
+          BELOW_SIDE
+          ABOVE_SIDE
+        }
+
+        interface "BaseUnivariateSolver<FUNC extends UnivariateFunction>" as BaseUnivariateSolver_FUNC_ {
+          +int getMaxEvaluations()
+          +int getEvaluations()
+          +double getAbsoluteAccuracy()
+          +double getRelativeAccuracy()
+          +double getFunctionValueAccuracy()
+          +double solve(int maxEval, FUNC f, double min, double max)
+          +double solve(int maxEval, FUNC f, double min, double max, double startValue)
+          +double solve(int maxEval, FUNC f, double startValue)
+        }
+
+        abstract class "BaseAbstractUnivariateSolver<FUNC extends UnivariateFunction>" as BaseAbstractUnivariateSolver_FUNC_ {
+          #{Abstract} double doSolve()
+        }
+
+        interface UnivariateSolver
+        abstract class AbstractUnivariateSolver
+
+        interface DifferentiableUnivariateSolver
+        abstract class AbstractDifferentiableUnivariateSolver
+
+        interface PolynomialSolver
+        abstract class AbstractPolynomialSolver
+
+        BaseUnivariateSolver_FUNC_         <|.. BaseAbstractUnivariateSolver_FUNC_
+
+        BaseUnivariateSolver_FUNC_         <|.. UnivariateSolver
+        UnivariateSolver                   <|.. AbstractUnivariateSolver
+        BaseAbstractUnivariateSolver_FUNC_ <|-- AbstractUnivariateSolver
+
+        BaseUnivariateSolver_FUNC_         <|.. DifferentiableUnivariateSolver
+        DifferentiableUnivariateSolver     <|.. AbstractDifferentiableUnivariateSolver
+        BaseAbstractUnivariateSolver_FUNC_ <|-- AbstractDifferentiableUnivariateSolver
+
+        BaseUnivariateSolver_FUNC_         <|.. PolynomialSolver
+        PolynomialSolver                   <|.. AbstractPolynomialSolver
+        BaseAbstractUnivariateSolver_FUNC_ <|-- AbstractPolynomialSolver
+
+
+interface "BracketedUnivariateSolver<FUNC extends UnivariateFunction>" as  BracketedUnivariateSolver_FUNC_
+AllowedSolution <-- BracketedUnivariateSolver_FUNC_ : solution side selector
+BaseUnivariateSolver_FUNC_ <|.. BracketedUnivariateSolver_FUNC_
+
+abstract class BaseSecantSolver
+
+ AbstractUnivariateSolver <|-- BaseSecantSolver
+ BracketedUnivariateSolver_FUNC_ <|.. BaseSecantSolver
+ BaseSecantSolver <|-- IllinoisSolver
+ BaseSecantSolver <|-- PegasusSolver
+ BaseSecantSolver <|-- RegulaFalsiSolver
+
+ AbstractUnivariateSolver <|-- BracketingNthOrderBrentSolver
+ BracketedUnivariateSolver_FUNC_ <|.. BracketingNthOrderBrentSolver
+
+ AbstractUnivariateSolver <|-- BrentSolver
+ AbstractUnivariateSolver <|-- SecantSolver
+ AbstractUnivariateSolver <|-- RiddersSolver
+ AbstractUnivariateSolver <|-- MullerSolver
+ AbstractUnivariateSolver <|-- MullerSolver2
+ AbstractDifferentiableUnivariateSolver <|-- NewtonSolver
+AbstractPolynomialSolver <|-- LaguerreSolver
+
+AbstractUnivariateSolver <|-- BisectionSolver
+  end package
+
+@enduml

Added: commons/proper/math/trunk/src/site/design/threeD.puml
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/site/design/threeD.puml?rev=1383287&view=auto
==============================================================================
--- commons/proper/math/trunk/src/site/design/threeD.puml (added)
+++ commons/proper/math/trunk/src/site/design/threeD.puml Tue Sep 11 08:37:52 2012
@@ -0,0 +1,86 @@
+' Licensed to the Apache Software Foundation (ASF) under one or more
+' contributor license agreements.  See the NOTICE file distributed with
+' this work for additional information regarding copyright ownership.
+' The ASF licenses this file to You under the Apache License, Version 2.0
+' (the "License"); you may not use this file except in compliance with
+' the License.  You may obtain a copy of the License at
+'
+'      http://www.apache.org/licenses/LICENSE-2.0
+'
+' Unless required by applicable law or agreed to in writing, software
+' distributed under the License is distributed on an "AS IS" BASIS,
+' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+' See the License for the specific language governing permissions and
+' limitations under the License.
+
+@startuml
+
+  skinparam svek                  true
+  skinparam ClassBackgroundColor  #F3EFEB
+  skinparam ClassArrowColor       #691616
+  skinparam ClassBorderColor      #691616
+  skinparam NoteBackgroundColor   #F3EFEB
+  skinparam NoteBorderColor       #691616
+  skinparam NoteFontColor         #691616
+  skinparam ClassFontSize         11
+
+  package org.apache.commons.math3.geometry #ECEBD8
+
+    interface Space {
+      +int getDimension()
+      +Space getSubSpace()
+    }
+    note top
+      Space is mainly used as a parameter
+      for generics and to link d-dimensional
+      space with (d-1)-dimensional space
+    end note
+
+    interface "Vector<S extends Space>" as Vector_S_ {
+      +Space getSpace()
+      +Vector getZero()
+      +double getNorm()
+      +Vector add()
+      +Vector subtract()
+      +Vector negate()
+      +Vector normalize()
+      +Vector scalarMultiply()
+      +boolean isNaN()
+      +boolean isInfinite()
+      +double distance()
+      +double dotProduct()
+    }
+
+    Space <-- Vector_S_
+
+    package partitioning #DDEBD8
+      interface "Region<S extends Space>" as Region_S_
+      interface "Hyperplane<S extends Space>" as Hyperplane_S_
+      interface "SubHyperplane<S extends Space>" as SubHyperplane_S_
+    end package
+
+    package euclidean #DDEBD8
+
+      package threed #DDDBD8
+
+        class Euclidean3D
+        class Vector3D
+        class Line
+        class SubLine
+        class Plane
+        class SubPlane
+        class PolyhedronsSet
+
+        Space            <|.. Euclidean3D
+        Vector_S_        <|.. Vector3D
+        Hyperplane_S_    <|.. Plane
+        SubHyperplane_S_ <|.. SubPlane
+        Region_S_        <|.. PolyhedronsSet
+
+      end package
+
+    end package
+
+  end package
+
+@enduml

Added: commons/proper/math/trunk/src/site/design/twoD.puml
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/site/design/twoD.puml?rev=1383287&view=auto
==============================================================================
--- commons/proper/math/trunk/src/site/design/twoD.puml (added)
+++ commons/proper/math/trunk/src/site/design/twoD.puml Tue Sep 11 08:37:52 2012
@@ -0,0 +1,84 @@
+' Licensed to the Apache Software Foundation (ASF) under one or more
+' contributor license agreements.  See the NOTICE file distributed with
+' this work for additional information regarding copyright ownership.
+' The ASF licenses this file to You under the Apache License, Version 2.0
+' (the "License"); you may not use this file except in compliance with
+' the License.  You may obtain a copy of the License at
+'
+'      http://www.apache.org/licenses/LICENSE-2.0
+'
+' Unless required by applicable law or agreed to in writing, software
+' distributed under the License is distributed on an "AS IS" BASIS,
+' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+' See the License for the specific language governing permissions and
+' limitations under the License.
+
+@startuml
+
+  skinparam svek                  true
+  skinparam ClassBackgroundColor  #F3EFEB
+  skinparam ClassArrowColor       #691616
+  skinparam ClassBorderColor      #691616
+  skinparam NoteBackgroundColor   #F3EFEB
+  skinparam NoteBorderColor       #691616
+  skinparam NoteFontColor         #691616
+  skinparam ClassFontSize         11
+
+  package org.apache.commons.math3.geometry #ECEBD8
+
+    interface Space {
+      +int getDimension()
+      +Space getSubSpace()
+    }
+    note top
+      Space is mainly used as a parameter
+      for generics and to link d-dimensional
+      space with (d-1)-dimensional space
+    end note
+
+    interface "Vector<S extends Space>" as Vector_S_ {
+      +Space getSpace()
+      +Vector getZero()
+      +double getNorm()
+      +Vector add()
+      +Vector subtract()
+      +Vector negate()
+      +Vector normalize()
+      +Vector scalarMultiply()
+      +boolean isNaN()
+      +boolean isInfinite()
+      +double distance()
+      +double dotProduct()
+    }
+
+    Space <-- Vector_S_
+
+    package partitioning #DDEBD8
+      interface "Region<S extends Space>" as Region_S_
+      interface "Hyperplane<S extends Space>" as Hyperplane_S_
+      interface "SubHyperplane<S extends Space>" as SubHyperplane_S_
+    end package
+
+    package euclidean #DDEBD8
+
+      package twod #DDDBD8
+
+        class Euclidean2D
+        class Vector2D
+        class Line
+        class SubLine
+        class PolygonsSet
+
+        Space            <|.. Euclidean2D
+        Vector_S_        <|.. Vector2D
+        Hyperplane_S_    <|.. Line
+        SubHyperplane_S_ <|.. SubLine
+        Region_S_        <|.. PolygonsSet
+
+      end package
+
+    end package
+
+  end package
+
+@enduml