2014-08-29 2 views
2

Я читаю по этой аккуратной статье здесь: Frustum CullingFrustum и сфера пересечения

и читает, что для нахождения расстояния между сферой и стороны усеченного (плоскости) является:

C = центр сферы

N = нормальные плоскости

D = расстояние от плоскости вдоль нормали от происхождения

Расстояние = DotProduct (C, N) + D

Но я не понимаю, к чему относится переменная D. В частности, я не понимаю, что такое происхождение усечения. Это будет глаз камеры?

ответ

3

D - это перпендикулярное расстояние, которое вам нужно было бы перемещать по нормали плоскости, чтобы пройти через начало какого-либо пространства, в котором находится плоскость (я ожидаю, что это чаще всего будет происходить в мировых координатах, но если ваш плоскости описываются в координатах камеры, а затем используют происхождение камеры. В конечном счете это не имеет значения, если вы делаете все вычисления в одном и том же пространстве. Другими словами, какое бы происхождение вы не использовали для пространства, в котором и сфера, и плоскости сравниваются.).

Это то же значение в уравнении плоскости: Ax + By + Cz + d = 0. d - это значение D, которое вы использовали бы. Вы можете рассчитать d, взяв известную точку на плоскости и используя ее для решения уравнения плоскости для d. (A, B, C) являются элементами X, Y, Z единичного нормального вектора плоскости, (x, y, z) являются координатами точки на плоскости, решают уравнение плоскости для d, и у вас есть расстояние.

Просто будьте внимательны, чтобы делать все ваши вычисления в одном и том же пространстве ,,, будь то пространство в мире или место на камере или пространство на экране. Я подозреваю, что вы захотите сделать свои расчеты в мировом пространстве.

+0

Также обратите внимание, что «DotProduct (C, N) + D» по существу то же самое, что применение уравнения плоскости (Ax + By + Cz + d) к центру вашей сферы, результат 0 означает центр сфера лежит точно на плоскости. – YoungJohn

+0

Итак, если бы он был определен в мировых координатах, а усечка была в начале координат, то происхождение, которое проходило нормальное, составляло 0,0,0? – sgtHale

+0

Да, я считаю, что это будет происхождение, которое вы хотите. – YoungJohn

Смежные вопросы