В общем, трансформированная сфера будет эллипсоидом некоторого вида.Нетрудно получить точную ограничивающую рамку для него;если вы не хотите проходить всю математику:
- обратите внимание, что
M
- это ваша матрица преобразования (масштаб, вращение, переводы и т. д.) - прочитайте определение
S
ниже - вычислите
R
, как описано в конце - вычислите границы
x
, y
и z
на основе R
, как описано в прошлом.
Общая коника (которая включает сферы и их преобразования) может быть представлена в виде симметричной матрицы 4x4: однородная точка p
находится внутри коники S
, когда p^t S p < 0
.Преобразование вашего пространства с помощью матрицы M преобразует матрицу S следующим образом (условное обозначение ниже состоит в том, что точки являются векторами столбцов):
A unit-radius sphere about the origin is represented by:
S = [ 1 0 0 0 ]
[ 0 1 0 0 ]
[ 0 0 1 0 ]
[ 0 0 0 -1 ]
point p is on the conic surface when:
0 = p^t S p
= p^t M^t M^t^-1 S M^-1 M p
= (M p)^t (M^-1^t S M^-1) (M p)
transformed point (M p) should preserve incidence
-> conic S transformed by matrix M is: (M^-1^t S M^-1)
Представлено двойственное коническое число, которое применяется к плоскостям вместо точек.обратным к S;для плоскости q (представленной в виде вектора строки):
plane q is tangent to the conic when:
0 = q S^-1 q^t
= q M^-1 M S^-1 M^t M^t^-1 q^t
= (q M^-1) (M S^-1 M^t) (q M^-1)^t
transformed plane (q M^-1) should preserve incidence
-> dual conic transformed by matrix M is: (M S^-1 M^t)
Итак, вы ищете выровненные по оси плоскости, которые касаются преобразованной коники:
let (M S^-1 M^t) = R = [ r11 r12 r13 r14 ] (note that R is symmetric: R=R^t)
[ r12 r22 r23 r24 ]
[ r13 r23 r33 r34 ]
[ r14 r24 r34 r44 ]
axis-aligned planes are:
xy planes: [ 0 0 1 -z ]
xz planes: [ 0 1 0 -y ]
yz planes: [ 1 0 0 -x ]
НайтиВыровненные по xy плоскости, касательные к R:
[0 0 1 -z] R [ 0 ] = r33 - 2 r34 z + r44 z^2 = 0
[ 0 ]
[ 1 ]
[-z ]
so, z = ( 2 r34 +/- sqrt(4 r34^2 - 4 r44 r33) ) / ( 2 r44 )
= (r34 +/- sqrt(r34^2 - r44 r33) ) / r44
Аналогично, для выровненных по xz плоскостей:
y = (r24 +/- sqrt(r24^2 - r44 r22) ) / r44
и выровненные по yz плоскости:
x = (r14 +/- sqrt(r14^2 - r44 r11) ) / r44
Thisдает вам точную ограничительную рамку для преобразованной сферы.