OSDN Git Service

pmd_import sphere map.
[meshio/meshio.git] / include / la.h
index e0fe84d..0ef6ee8 100644 (file)
@@ -21,11 +21,13 @@ struct Vector2
                : x(_x), y(_y)
                {}
 };
+#ifndef SWIG
 inline std::ostream &operator<<(std::ostream &os, const Vector2 &rhs)
 {
        return os
                << '[' << rhs.x << ',' << rhs.y << ']';
 }
+#endif
 
 
 struct Vector3
@@ -45,12 +47,24 @@ struct Vector3
        {
                return x==rhs.x && y==rhs.y && z==rhs.z;
        }
+
+       Vector3 operator+(const Vector3 &rhs)
+       {
+               return Vector3(x+rhs.x, y+rhs.y, z+rhs.z);
+       }
+
+       Vector3 operator-(const Vector3 &rhs)
+       {
+               return Vector3(x-rhs.x, y-rhs.y, z-rhs.z);
+       }
 };
+#ifndef SWIG
 inline std::ostream &operator<<(std::ostream &os, const Vector3 &rhs)
 {
        return os
                << '[' << rhs.x << ',' << rhs.y << ',' << rhs.z << ']';
 }
+#endif
 
 
 struct Vector4
@@ -67,11 +81,13 @@ struct Vector4
                : x(_x), y(_y), z(_z), w(_w)
                {}
 };
+#ifndef SWIG
 inline std::ostream &operator<<(std::ostream &os, const Vector4 &rhs)
 {
        return os
                << '[' << rhs.x << ',' << rhs.y << ',' << rhs.z << ',' << rhs.w << ']';
 }
+#endif
 
 
 struct Quaternion
@@ -87,12 +103,19 @@ struct Quaternion
        Quaternion(float _x, float _y, float _z, float _w)
                : x(_x), y(_y), z(_z), w(_w)
                {}
+
+       float dot(const Quaternion &rhs)
+       {
+               return x*rhs.x + y*rhs.y + z*rhs.z + w*rhs.w;
+       }
 };
+#ifndef SWIG
 inline std::ostream &operator<<(std::ostream &os, const Quaternion &rhs)
 {
        return os
                << '[' << rhs.x << ',' << rhs.y << ',' << rhs.z << ',' << rhs.w << ']';
 }
+#endif
 
 
 }