fix NiftiHeader to properly round-trip qforms, add "effective sform" to toString()
Tim Coalson
5 years ago
325 | 325 | ret += "qoffset_y: " + AString_number(m_header.qoffset_y) + "\n"; |
326 | 326 | ret += "qoffset_z: " + AString_number(m_header.qoffset_z) + "\n"; |
327 | 327 | } |
328 | ret += "effective sform:\n"; | |
329 | vector<vector<float> > tempSform = getSForm(); | |
330 | for (int i = 0; i < 3; ++i) | |
331 | { | |
332 | for (int j = 0; j < 4; ++j) | |
333 | { | |
334 | ret += " " + AString_number(tempSform[i][j]); | |
335 | } | |
336 | ret += "\n"; | |
337 | } | |
328 | 338 | ret += "xyzt_units: " + AString_number(m_header.xyzt_units) + "\n"; |
329 | 339 | ret += "intent_code: " + AString_number(m_header.intent_code) + "\n"; |
330 | 340 | ret += "intent_name: " + AString_from_latin1(m_header.intent_name, 16) + "\n"; |
411 | 421 | kvec = -kvec;//because to nifti, "left handed" apparently means "up is down", not "left is right" |
412 | 422 | } |
413 | 423 | float rotmat[3][3]; |
414 | rotmat[0][0] = ivec[0]; rotmat[1][0] = jvec[0]; rotmat[2][0] = kvec[0]; | |
415 | rotmat[0][1] = ivec[1]; rotmat[1][1] = jvec[1]; rotmat[2][1] = kvec[1]; | |
416 | rotmat[0][2] = ivec[2]; rotmat[1][2] = jvec[2]; rotmat[2][2] = kvec[2]; | |
424 | rotmat[0][0] = ivec[0]; rotmat[1][0] = ivec[1]; rotmat[2][0] = ivec[2]; | |
425 | rotmat[0][1] = jvec[0]; rotmat[1][1] = jvec[1]; rotmat[2][1] = jvec[2]; | |
426 | rotmat[0][2] = kvec[0]; rotmat[1][2] = kvec[1]; rotmat[2][2] = kvec[2]; | |
417 | 427 | float quat[4]; |
418 | 428 | if (!MathFunctions::matrixToQuatern(rotmat, quat)) |
419 | 429 | { |