Second commit for Brecht's IK work.
authorTon Roosendaal <ton@blender.org>
Sat, 27 Aug 2005 12:45:29 +0000 (12:45 +0000)
committerTon Roosendaal <ton@blender.org>
Sat, 27 Aug 2005 12:45:29 +0000 (12:45 +0000)
(Moto needs 'make install' before you can do IK lib btw)

intern/moto/include/MT_Matrix3x3.h
intern/moto/include/MT_Transform.h

index 712d48b8a64922a69c17caf452b6efdc73d967f1..fb899a7da96763119cc7f60310c3942d07c5c062 100755 (executable)
@@ -79,6 +79,15 @@ public:
     
     MT_Vector3&       operator[](int i)       { return m_el[i]; }
     const MT_Vector3& operator[](int i) const { return m_el[i]; }
+
+       MT_Vector3 getColumn(int i) const {
+               return MT_Vector3(m_el[0][i], m_el[1][i], m_el[2][i]);
+       }
+       void setColumn(int i, const MT_Vector3& v) {
+               m_el[0][i] = v[0];
+               m_el[1][i] = v[1];
+               m_el[2][i] = v[2];
+       }
     
     void setValue(const float *m) {
         m_el[0][0] = *m++; m_el[1][0] = *m++; m_el[2][0] = *m++; m++;
index 5b95f81b9ddc2dc2e3367b7941bf7eafb40a62d8..ee5ae29dc414739e7cd18c4a7a686a688f372c6e 100644 (file)
@@ -75,6 +75,12 @@ public:
                setBasis(m);
        }
 
+       static MT_Transform Identity()
+       {
+               MT_Transform t;
+               t.setIdentity();
+               return t;
+       }
 
 
     MT_Point3 operator()(const MT_Point3& p) const {
@@ -82,11 +88,22 @@ public:
                          MT_dot(m_basis[1], p) + m_origin[1], 
                          MT_dot(m_basis[2], p) + m_origin[2]);
     }
+
+    MT_Vector3 operator()(const MT_Vector3& p) const {
+        return MT_Vector3(MT_dot(m_basis[0], p) + m_origin[0], 
+                         MT_dot(m_basis[1], p) + m_origin[1], 
+                         MT_dot(m_basis[2], p) + m_origin[2]);
+    }
     
     MT_Point3 operator*(const MT_Point3& p) const {
         return (*this)(p);
     }
-    
+    MT_Vector3 operator*(const MT_Vector3& p) const {
+        return (*this)(p);
+    }
+
+
     MT_Matrix3x3&         getBasis()          { return m_basis; }
     const MT_Matrix3x3&   getBasis()    const { return m_basis; }
     MT_Point3&            getOrigin()         { return m_origin; }