Пересечение Plane-Ray C#

У меня есть этот код для пересечения плоского луча: http://pastebin.com/2VuPeZ5r Думаю, я правильно вычислил t , но мне нужно вернуть null, если пересечения нет. Как мне это проверить?

Спасибо


person user1796942    schedule 19.11.2012    source источник


Ответы (1)


Что вы имеете в виду под "без пересечения"? Любой луч где-то пересекает плоскость, за исключением вырожденного случая, когда луч точно перпендикулярен нормали к плоскости. Чтобы обнаружить этот случай, проверьте наличие Vector3.Dot(Norm, ray.Dir) == 0.

Если вы хотите узнать, находится ли пересечение перед началом луча или позади него, проверьте t > 0.

person Tavian Barnes    schedule 19.11.2012
comment
Обычно да. Положительные значения t движутся в направлении ray.Dir; отрицательные значения t удаляются от ray.Dir. - person Tavian Barnes; 20.11.2012