三维重建模块VR,3DCursor,MPR与VR的坐标转换
MPR里的reslicecursor 的坐标与 vtkimage 坐标一致。
但三维窗格里的vtkvolume 的坐标是相对坐标,坐标值依然是MM单位。
用中心点的偏移量比较容易实现,交互中Reslicercursor中心点 距离 vtkimagedata 的中心点 的偏移量,用于vtkvolume即可。
//转换为3D VTKVOLUME 坐标系
void MprBoxControlInteral::CalculateCursorCenter(double center[3])
{
if (!m_resliceCursor || !m_imageData || !m_volume) {
double* volCenter = m_volume ? m_volume->GetCenter() : nullptr;
if (volCenter) {
center[0] = volCenter[0];
center[1] = volCenter[1];
center[2] = volCenter[2];
}
return;
}
double* cursorCenter = m_resliceCursor->GetCenter();
double* imageDataCenter = m_imageData->GetCenter();
double* volCenter = m_volume->GetCenter();
double offset[3] = { 0, 0, 0 };
offset[0] = cursorCenter[0] - imageDataCenter[0];
offset[1] = cursorCenter[1] - imageDataCenter[1];
offset[2] = cursorCenter[2] - imageDataCenter[2];
center[0] = volCenter[0] + offset[0];
center[1] = volCenter[1] - offset[1];
center[2] = volCenter[2] - offset[2];
}
有一个问题,我这个vtkvulome的 上下 前后,与vtkimagedata 是反的。