Example #1
0
void Mat::mul(Mat& op)
{
    if(DimenY != op.getDimenX())
    {
        std::cerr<<DimenY<<" != "<<op.getDimenX();
        std::cerr<<"    Unmatched dimensions - MULTIPLY;"<<std::endl;
        return;
    }

    float** temp;
    temp = (float**)malloc(DimenX*sizeof(float*));
    for(int x=0; x<DimenX; x++)
        temp[x] = (float*)malloc(op.getDimenY()*sizeof(float));

    for(int x=0; x<DimenX; x++)
    {
        for(int y=0; y<op.getDimenY(); y++)
        {
            temp[x][y]=0.0;
            for(int k=0; k<DimenY; k++)
            {
                float t = matrix[x][k] * op.getElement(k,y);
                if( abs(t) > 1.0e-6 )
                    temp[x][y] = temp[x][y] + t;
            }
        }
    }
    free(matrix);
    matrix = temp;
    DimenY = op.getDimenY();
}
Example #2
0
void Mat::add(Mat& op)
{
    if(DimenX != op.getDimenX() || DimenY != op.getDimenY())
    {
        std::cerr<<"("<<DimenX<<","<<DimenY<<") != ("<<op.getDimenX()<<","<<op.getDimenY()<<")";
        std::cerr<<"    Unmatched dimensions - ADD;"<<std::endl;
        return;
    }
    for(int x=0; x<DimenX; x++)
        for(int y=0; y<DimenY; y++)
            matrix[x][y] = matrix[x][y] + op.getElement(x,y);
}
Example #3
0
Vector3D toVector(Mat& m)
{
    /* convert a 3 by 1 matrix(coloumn vector) to type Vector3D */
    return Vector3D(m.getElement(0,0), m.getElement(1,0), m.getElement(2,0));
}