Задать вопрос
@Oleg_Programist

Как узнать место пересечения луча со сферой?

Нужна функция, которая возвращает координаты столкновения луча со сферой, она принимает такие значения как:
позиция камеры, направление луча, позиция сферы и радиус сферы, желательно написанная на c++.
  • Вопрос задан
  • 1416 просмотров
Подписаться 2 Простой 1 комментарий
Решение пользователя Wataru К ответам на вопрос (2)
wataru
@wataru Куратор тега Математика
Разработчик на С++, экс-олимпиадник.
Тривиально: парметризуйте луч, подставьте в уравнение сферы, решите получившееся квадратное уравнение.

Луч:
x = x0 + t*vx
y = y0 + t*vy    (1)
z = z0 + t*zy

Где (x0,y0,z0) - начало луча (камера?), (vx, vy, vz) - направление луча.

Уравнение сферы:
(x-xs)**2 + (y-ys)**2 + (z-zs)**2 = R**2 (2)

Где (xs, ys, zs) -центр сферы, R - радиус.

Подставьте (1) в (2) - получите квадратное уравнение на t. Решите его по школьной формуле и возьмите минимальное положительное t. Подставьте в (1) и получите координаты точки пересечения (и заодно длину луча, если вектор направления нормализован).
Ответ написан