Exemple #1
0
MatP* pivot_local_transform(const struct Pivot* pivot, Mat local_transform) {
    Mat rotation = {0};
    quat_invert(pivot->orientation, rotation);
    mat_rotate(NULL, rotation, rotation);

    Mat translation = {0};
    vec_invert(pivot->position, translation);
    mat_translate(NULL, translation, translation);

    mat_mul(translation, rotation, local_transform);

    return local_transform;
}
void SCANLINE::compute_invert(vector<float> &device_xyz)
{
    //1 renormal
     device_xyz[0] = (2/(Xmax - Xmin))*(device_xyz[0])-1 ;//x
     device_xyz[1] = (2/(Ymax - Ymin))*(device_xyz[1])-1 ;//y
    //2 times invert matrix
    device_xyz.push_back(1); //add w value
    vector<float>  vec_invert(device_xyz);
       //scale normalize vertices data to device
    matrix_multi_4x1(device_xyz, M_Invert, vec_invert);

    for(int j = 0; j<4; j++)
        device_xyz[j] = device_xyz[j]/device_xyz[3];


//    for(int j = 0; j<4; j++)
//        datatest<<setw(15)<<device_xyz[j];
//    datatest<<endl;
}