Я пытаюсь написать функцию, которая возвращает истину, если луч пересекает сферу и код я ссылающийся идет что-то вроде этого:Ray-Sphere Пересечение Выведение
// given Sphere and Ray as arguments
invert the Sphere matrix
make new Ray object
origin of this object = old Ray origin * inverted Sphere matrix
direction = old Ray direction * inverted Sphere matrix
a = |new direction|^2
b = dot product of new origin and new direction
c = |new origin|^2 - 1
det = b*b - a*c
if det > 0 there is an intersection
Я застрял на понимании почему нам нужно сначала инвертировать матрицу Сферы, а затем умножить ее на начало и направление Рэя. Также я смущен, как получить квадратичные переменные уравнения a, b, c и конец. Я знаю, что мне нужно совместить параметрические уравнения для луча (p + td) и для круга (x dot x - 1 = 0), но я не могу понять, как это сделать.
см [луч и эллипсоид улучшение точности пересечения] (http://stackoverflow.com/q/25470493/ 2521214), если у вас есть сфера, тогда нет необходимости в преобразованиях ... – Spektre