Game Development Reference
In-Depth Information
soid aligned to the natural axes R , S , and T . We can transform the problem into
that of finding a bounding sphere by scaling the vertex positions in these direc-
tions so that their bounding box becomes a cube. Once the bounding sphere of
the scaled set is known, we scale its radius by the reciprocal amount in each di-
rection to derive the semiaxis lengths.
To scale the vertex positions so that they are bounded by a cube, we need to
know the distance between the planes representing the minimum and maximum
extents in each natural axis direction. These distances are equal to the dimensions
of the standard bounding box, which are given by the differences between the
minimum and maximum dot products of the points P with the vectors R , S , and
T . Calling these distances a , b , and c , respectively, we have
a
=
max
{
PR
}
min
{
PR
}
i
i
iN
1
≤≤
iN
1
≤≤
{
}
{
}
b
=
max
PS
min
PS
i
i
1
≤≤
iN
1
≤≤
iN
{
}
{
}
c
=
max
PT
min
PT
.
(8.20)
i
i
1
≤≤
iN
1
≤≤
iN
To transform the vertex set into one bounded by a cube, we need to scale their
positions by 1 a in the R direction, by 1 b in the S direction, and by 1 c in the T
direction. As stated in Equation (4.11), the matrix M that performs this scale is
given by
1 0 0
01 0
001
a
[
]
[
]
T
M
=
RST
b
RST ,
(8.21)
c
where we have replaced the inverse operation for the rightmost matrix by a
transpose operation since the vectors R , S , and T are orthonormal.
P has been transformed by the matrix M , we cal-
culate the bounding sphere for the set of points
Once each of the points
{
}
MPMP M . Once the
center Q of this sphere is known, we can calculate the center of the bounding
ellipsoid of the original set of vertices by transforming Q back into the unscaled
coordinate space. The ellipsoid center is simply given by
,
,
,
1
2
N
MQ , where the in-
1
verse of M is
a
00
[
]
[
]
1
T
M
=
RST
0
b
0
RST .
(8.22)
00
c