summaryrefslogtreecommitdiffstats
path: root/debian/fireflies/fireflies-2.08/libgfx/src/symmat2.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'debian/fireflies/fireflies-2.08/libgfx/src/symmat2.cxx')
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/symmat2.cxx61
1 files changed, 61 insertions, 0 deletions
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/symmat2.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/symmat2.cxx
new file mode 100644
index 00000000..df923f33
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/symmat2.cxx
@@ -0,0 +1,61 @@
+#include <gfx/gfx.h>
+#include <gfx/symmat2.h>
+
+namespace gfx
+{
+
+SymMat2 SymMat2::I()
+{
+ SymMat2 A;
+ A(0,0) = A(1,1) = 1;
+ return A;
+}
+
+Mat2 SymMat2::fullmatrix() const
+{
+ Mat2 A;
+
+ for(int i=0; i<A.dim(); i++)
+ for(int j=0; j<A.dim(); j++)
+ A(i, j) = (*this)(i,j);
+
+ return A;
+}
+
+SymMat2 operator*(const SymMat2& n, const SymMat2& m)
+{
+ SymMat2 A;
+ for(int i=0; i<2; i++) for(int j=i; j<2; j++)
+ A(i,j) = n.row(i)*m.col(j);
+ return A;
+}
+
+std::ostream &operator<<(std::ostream &out, const SymMat2& M)
+{
+ for(int i=0; i<M.dim(); i++)
+ {
+ for(int j=0; j<M.dim(); j++)
+ out << M(i, j) << " ";
+ out << std::endl;
+ }
+
+ return out;
+}
+
+SymMat2 SymMat2::outer_product(const Vec2& v)
+{
+ SymMat2 A;
+
+ for(int i=0; i<A.dim(); i++)
+ for(int j=i; j<A.dim(); j++)
+ A(i, j) = v[i]*v[j];
+
+ return A;
+}
+
+double invert(Mat2& m_inv, const SymMat2& m)
+{
+ return invert(m_inv, m.fullmatrix());
+}
+
+} // namespace gfx