Binary Space Partitioning
Binary Space Partitioning
Binary Space Partitioning is implemented for recursively subdividing a space into two
convex sets by using hyperplanes as partitions. This process of subdividing gives rise to
the representation of objects within the space in the form of tree data structure known as
BSP Tree.
Binary space partitioning arose in the context of 3D computer graphics in 1969, where
the structure of a BSP tree allows for spatial information about the objects in a scene that
is useful in rendering, such as objects being ordered from front-to-back with respect to a
viewer at a given location, to be accessed rapidly.
Binary space partitioning arose from the computer graphics need to rapidly draw three-
dimensional scenes composed of polygons.
A simple way to draw such scenes is the painter’s algorithm which produces polygons in
order of distance from the viewer, back to front, painting over the background, and
previous polygons with each closer object.
This approach has two disadvantages:
● the time required to sort polygons in back to front order,
● and the possibility of errors in overlapping polygons.
Fuchs and co-authors showed that constructing a BSP tree solved both of these problems
by providing a rapid method of sorting polygons with respect to a given viewpoint (linear
in the number of polygons in the scene) and by subdividing overlapping polygons to
avoid errors that can occur with the painter’s algorithm.
Overview of BSP
For example: In computer graphics rendering, the scene is divided until and unless each
node of the BSP tree consists of only polygons that can render in arbitrary order. When
back-face culling is implemented, each node, therefore, consists of a convex set of
polygons, whereas when rendering double-sided polygons, each node of the BSP tree
consists of only polygons in a single plane.
Disadvantage of BSP
● Generating a BSP tree can be time-consuming.
● BSP does not solve the problem of visible surface determination.
Uses of BSP
● It is used in collision detection in 3D video games and robotics.
● It is used in ray tracing
● It is involved in the handling of complex spatial scenes.