How to get crosshair position for three MRI series

Hi everyone
I am writing a program, but I am stuck at one stage, namely getting the crosshair position by the current slice number in MRI series

I did a great job of doing this for the CT series, but that’s probably because I reconstruct the other two planes from the axial one myself

Coordinate CrosshairManager::getCoordinateCT(const SliceDirection& targetDir) const
{
int targetIndex = static_cast(targetDir);
int sagittalIndex = static_cast(SliceDirection::Sagittal);
int coronalIndex = static_cast(SliceDirection::Coronal);
int axialIndex = static_cast(SliceDirection::Axial);
Coordinate normCoord;

switch (targetDir)
{
	case SliceDirection::Axial:
	{
		normCoord.setXYZ
		(
			static_cast<double>(sliceIndices[sagittalIndex]) / (maxSliceIndices[sagittalIndex]),
			static_cast<double>(sliceIndices[coronalIndex]) / (maxSliceIndices[coronalIndex])
		);
		break;
	}
	case SliceDirection::Sagittal:
	{
		normCoord.setXYZ
		(
			static_cast<double>(sliceIndices[coronalIndex]) / (maxSliceIndices[coronalIndex]),
			static_cast<double>(sliceIndices[axialIndex]) / (maxSliceIndices[axialIndex])
		);
		break;
	}
	case SliceDirection::Coronal:
	{
		normCoord.setXYZ
		(
			static_cast<double>(sliceIndices[sagittalIndex]) / (maxSliceIndices[sagittalIndex]),
			static_cast<double>(sliceIndices[axialIndex]) / (maxSliceIndices[axialIndex])
		);
		break;
	}
}

return applyFlipToCoordinate(normCoord, targetDir);
}

But for MRI I can’t perfectly hit the same point in all planes, I checked the work with the Radiant program

My data:
Three separate MRI series, their dimensions are 480x480xSliceCount
In Saggital 22 slices
In Coronal 25 slices
In Axial 26 slices