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; }