
MPR里的reslicecursor 的坐标与 vtkimage 坐标一致。
但三维窗格里的vtkvolume 的坐标是相对坐标,坐标值依然是MM单位。
用中心点的偏移量比较容易实现,交互中Reslicercursor中心点 距离 vtkimagedata 的中心点 的偏移量,用于vtkvolume即可。

//转换为3D VTKVOLUME 坐标系
void MprBoxControlInteral::CalculateCursorCenter(double center3)
{
if (!m_resliceCursor || !m_imageData || !m_volume) {
double* volCenter = m_volume ? m_volume->GetCenter() : nullptr;
if (volCenter) {
center0 = volCenter0;
center1 = volCenter1;
center2 = volCenter2;
}
return;
}
double* cursorCenter = m_resliceCursor->GetCenter();
double* imageDataCenter = m_imageData->GetCenter();
double* volCenter = m_volume->GetCenter();
double offset3 = { 0, 0, 0 };
offset0 = cursorCenter0 - imageDataCenter0;
offset1 = cursorCenter1 - imageDataCenter1;
offset2 = cursorCenter2 - imageDataCenter2;
center0 = volCenter0 + offset0;
center1 = volCenter1 - offset1;
center2 = volCenter2 - offset2;
}
有一个问题,我这个vtkvulome的 上下 前后,与vtkimagedata 是反的。
