Я читаю вдоль этой аккуратной статьи здесь: Отбор Frustum
и он гласит, что найти расстояние между сферой и стороной усеченного конуса (плоскостью):
C = центр сферы
N = нормаль плоскости
D = расстояние плоскости по нормали от начала координат
Расстояние = DotProduct (C, N) + D
Но я не понимаю, к какой переменной относится D. В частности, я не понимаю, каково происхождение усеченного конуса. Это где глаз камеры?
D — это перпендикулярное расстояние, которое вам нужно будет пройти вдоль нормали плоскости, чтобы пройти через начало любого пространства, в котором определена плоскость (я ожидаю, что это чаще всего будет началом координат в мировых координатах, но если ваши плоскости описаны в Затем координаты камеры используют исходную точку камеры. В конечном счете, это не имеет значения, если вы выполняете все вычисления в одном и том же пространстве. Другими словами, какой бы источник вы ни использовали для пространства, в котором сравниваются и сфера, и плоскости в.).
Это то же значение в уравнении плоскости: Ax + By + Cz + d = 0. d — это значение D, которое вы будете использовать. Вы можете рассчитать d, взяв известную точку на плоскости и используя ее для решения уравнения плоскости для d. (A, B, C) — элементы X, Y, Z единичного вектора нормали вашей плоскости, (x, y, z) — координаты точки на плоскости, решите уравнение плоскости для d, и вы получите расстояние.
Просто будьте внимательны, чтобы делать все свои вычисления в одном и том же пространстве, будь то пространство мира, пространство камеры или пространство экрана. Я подозреваю, что вы захотите сделать свои расчеты в мировом пространстве.