Может быть глупый вопрос, но есть ли смысл использовать Math.Sign?
Влияет ли использование Math.Sign на скорость/оптимизацию, а не просто на оператор if? Возможно, это просто предпочтение лучшей практики/читабельности кода?
if (rayDirX < 0)
stepX = -1;
else
stepX = 1;
//----------
stepX = (rayDirX < 0) ? (-1) : (1);
//----------
stepX = Math.Sign(rayDirX);