Ejemplo n.º 1
0
    def premultiply_v4(self, v):
        x = v.x * self.m[0][0] + v.y * self.m[1][0] + v.z * self.m[2][0] + v.w * self.m[3][0]
        y = v.x * self.m[0][1] + v.y * self.m[1][1] + v.z * self.m[2][1] + v.w * self.m[3][1]
        z = v.x * self.m[0][2] + v.y * self.m[1][2] + v.z * self.m[2][2] + v.w * self.m[3][2]
        w = v.x * self.m[0][3] + v.y * self.m[1][3] + v.z * self.m[2][3] + v.w * self.m[3][3]

        return vector4.Vector4(x, y, z, w)
Ejemplo n.º 2
0
    def posmultiply_v3(self, v, w):
        ox = self.m[0][0] * v.x + self.m[0][1] * v.y + self.m[0][2] * v.z + self.m[0][3]
        oy = self.m[1][0] * v.x + self.m[1][1] * v.y + self.m[1][2] * v.z + self.m[1][3]
        oz = self.m[2][0] * v.x + self.m[2][1] * v.y + self.m[2][2] * v.z + self.m[2][3]
        ow = self.m[3][0] * v.x + self.m[3][1] * v.y + self.m[3][2] * v.z + self.m[3][3]

        return vector4.Vector4(ox, oy, oz, ow)
Ejemplo n.º 3
0
    def posmultiply_v4(self, v):
        x = self.m[0][0] * v.x + self.m[0][1] * v.y + self.m[0][2] * v.z + self.m[0][3] * v.w
        y = self.m[1][0] * v.x + self.m[1][1] * v.y + self.m[1][2] * v.z + self.m[1][3] * v.w
        z = self.m[2][0] * v.x + self.m[2][1] * v.y + self.m[2][2] * v.z + self.m[2][3] * v.w
        w = self.m[3][0] * v.x + self.m[3][1] * v.y + self.m[3][2] * v.z + self.m[3][3] * v.w

        return vector4.Vector4(x, y, z, w)
Ejemplo n.º 4
0
    def premultiply_v3(self, v, w):
        ox = v.x * self.m[0][0] + v.y * self.m[1][0] + v.z * self.m[2][0] + w * self.m[3][0]
        oy = v.x * self.m[0][1] + v.y * self.m[1][1] + v.z * self.m[2][1] + w * self.m[3][1]
        oz = v.x * self.m[0][2] + v.y * self.m[1][2] + v.z * self.m[2][2] + w * self.m[3][2]
        ow = v.x * self.m[0][3] + v.y * self.m[1][3] + v.z * self.m[2][3] + w * self.m[3][3]

        return vector4.Vector4(ox, oy, oz, ow)
Ejemplo n.º 5
0
 def numpy_matrix___rmul__(self, m):   
     if isinstance(m, Matrix4):
         return Matrix4(m.m @ self.m)
     elif isinstance(m, vector4.Vector4):
         v = np.array([m.x, m.y, m.z, m.w]).transpose()
         v = self.m @ v
         return vector4.Vector4(v[0], v[1], v[2], v[3])
     else:
         raise InvalidMatrixOperationException("mult", type(self), type(m))
Ejemplo n.º 6
0
    def __rmul__(self, m):   
        if isinstance(m, Matrix4):
            m2 = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
            
            for i in range(0, 4):
                for j in range(0, 4):
                    m2[i][j] = 0
                    for k in range(0, 4):
                        m2[i][j] += self.m[k][j] * m.m[i][k]

            return Matrix4(m2)
        elif isinstance(m, vector4.Vector4):
            x = self.m[0][0] * m.x + self.m[0][1] * m.y + self.m[0][2] * m.z + self.m[0][3] * m.w
            y = self.m[1][0] * m.x + self.m[1][1] * m.y + self.m[1][2] * m.z + self.m[1][3] * m.w
            z = self.m[2][0] * m.x + self.m[2][1] * m.y + self.m[2][2] * m.z + self.m[2][3] * m.w
            w = self.m[3][0] * m.x + self.m[3][1] * m.y + self.m[3][2] * m.z + self.m[3][3] * m.w

            return vector4.Vector4(x, y, z, w)
        else:
            raise InvalidMatrixOperationException("mult", type(self), type(m))
Ejemplo n.º 7
0
    def __mul__(self, m):
        if isinstance(m, Matrix4):
            m2 = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

            for i in range(0, 4):
                for j in range(0, 4):
                    m2[i][j] = 0
                    for k in range(0, 4):
                        m2[i][j] += self.m[i][k] * m.m[k][j]

            return Matrix4(m2)
        elif isinstance(m, vector4.Vector4):
            x = m.x * self.m[0][0] + m.y * self.m[1][0] + m.z * self.m[2][0] + m.w * self.m[3][0]
            y = m.x * self.m[0][1] + m.y * self.m[1][1] + m.z * self.m[2][1] + m.w * self.m[3][1]
            z = m.x * self.m[0][2] + m.y * self.m[1][2] + m.z * self.m[2][2] + m.w * self.m[3][2]
            w = m.x * self.m[0][3] + m.y * self.m[1][3] + m.z * self.m[2][3] + m.w * self.m[3][3]

            return vector4.Vector4(x, y, z, w)
        else:
            raise InvalidMatrixOperationException("mult", type(self), type(m))
Ejemplo n.º 8
0
    def numpy_matrix_posmultiply_v4(self, v):
        v = self.m @ np.array([v.x, v.y, v.z, v.w])

        return vector4.Vector4(v[0], v[1], v[2], v[3])
Ejemplo n.º 9
0
    def numpy_matrix_premultiply_v3(self, v, w):
        v = np.array([v.x, v.y, v.z, w]) @ self.m

        return vector4.Vector4(v[0], v[1], v[2], v[3])