---
name: "SbBSPTree"
section: "3"
platform: "linux"
package: "coin"
version: "1:4.0.10-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/SbBSPTree"
---

# SbBSPTree(3)

The SbBSPTree class provides a binary space partitioning container.

## NAME

SbBSPTree - The **SbBSPTree** class provides a binary space partitioning container.

## SYNOPSIS

\#include \<Inventor/SbBSPTree.h\>

### Public Member Functions

**SbBSPTree** (const int maxnodepts=64, const int initsize=4)\
 **~SbBSPTree** ()\
 int **numPoints** () const\
 **SbVec3f** **getPoint** (const int idx) const\
 void **getPoint** (const int idx, **SbVec3f** &pt) const\
 void \* **getUserData** (const int idx) const\
 void **setUserData** (const int idx, void \*const data)\
 int **addPoint** (const **SbVec3f** &pt, void \*const userdata=NULL)\
 int **removePoint** (const **SbVec3f** &pt)\
 void **removePoint** (const int idx)\
 int **findPoint** (const **SbVec3f** &pos) const\
 int **findClosest** (const **SbVec3f** &pos) const\
 void **clear** (const int initsize=4)\
 void **findPoints** (const **SbSphere** &sphere, **SbIntList** &array) const\
 int **findClosest** (const **SbSphere** &sphere, **SbIntList** &array) const\
 const **SbBox3f** & **getBBox** () const\
 const **SbVec3f** \* **getPointsArrayPtr** () const\
 void **findPoints** (const **SbSphere** &sphere, **SbList**\< int \> &array) const\
 int **findClosest** (const **SbSphere** &sphere, **SbList**\< int \> &array) const\

## Detailed Description

The **SbBSPTree** class provides a binary space partitioning container.

This class can be used to organize searches for 3D points or normals in a set in O(log(n)) time.

Note: **SbBSPTree** is an extension to the original Open Inventor API.

## Constructor & Destructor Documentation

### SbBSPTree::SbBSPTree (const int maxnodepts = 64, const int initsize = 4)

Constructor with *maxnodepts* specifying the maximum number of points in a node before it must be split, and *initsize* is the number of initially allocated points in the growable points array. If you know approximately the number of points which will be added to the tree, it will help the performance if you supply this in *initsize*.

### SbBSPTree::~SbBSPTree ()

Destructor. Frees used memory.

## Member Function Documentation

### int SbBSPTree::numPoints () const

Returns the number of points in the BSP tree.

### SbVec3f SbBSPTree::getPoint (const int idx) const

Returns the point at index *idx*.

**See also**

**SbBSPTree::numPoints()**

### void SbBSPTree::getPoint (const int idx, SbVec3f & pt) const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

### void \* SbBSPTree::getUserData (const int idx) const

Returns the user data for the point at index *idx*.

**See also**

**SbBSPTree::addPoint()**

**SbBSPTree::numPoints()**

### void SbBSPTree::setUserData (const int idx, void \*const data)

Sets the user data for the point at index *idx* to *data*.

**See also**

**SbBSPTree::addPoint()**

**SbBSPTree::numPoints()**

### int SbBSPTree::addPoint (const SbVec3f & pt, void \*const data = NULL)

Adds a new point *pt* to the BSP tree, and returns the index to the new point. The user data for that point will be set to *data*.

If the point already exists in the BSP tree, the index to the old point will be returned. The user data for that point will not be changed.

**See also**

**SbBSPTree::findPoint()**

### int SbBSPTree::removePoint (const SbVec3f & pt)

Removes the point with coordinates *pt*, and returns the index to the removed point. -1 is returned if no point with those coordinates could be found.

### void SbBSPTree::removePoint (const int idx)

Removes the point at index *idx*.

**See also**

**SbBSPTree::numPoints()**

### int SbBSPTree::findPoint (const SbVec3f & pos) const

Will search the tree, and return the index to the point with coordinates matching *pos*. If no such point can be found, -1 is returned.

### int SbBSPTree::findClosest (const SbVec3f & pos) const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

### void SbBSPTree::clear (const int initsize = 4)

Will empty all points from the BSP tree.

### void SbBSPTree::findPoints (const SbSphere & sphere, SbIntList & array) const

Will return indices to all points inside *sphere*.

**Since**

Coin 2.3

### int SbBSPTree::findClosest (const SbSphere & sphere, SbIntList & arr) const

Will return the index to the point closest to the center of *sphere*. Indices to all points inside the sphere is returned in *arr*. If no points can be found inside the sphere, -1 is returned.

**Since**

Coin 2.3

### const SbBox3f & SbBSPTree::getBBox () const

Will return the bounding box of all points in the BSP tree.

### const SbVec3f \* SbBSPTree::getPointsArrayPtr (void ) const

Returns a pointer to the array of points inserted into the BPS tree.

### void SbBSPTree::findPoints (const SbSphere & sphere, SbList\< int \> & array) const

WARNING: Please don't use this function. It can cause hard to find bugs on the Windows platform if your application is linked against a different CRT than your Coin DLL.

Use void findPoints(const SbSphere &sphere, SbIntList & array) instead.

### int SbBSPTree::findClosest (const SbSphere & sphere, SbList\< int \> & arr) const

WARNING: Please don't use this function. It can cause hard to find bugs on the Windows platform if your application is linked against a different CRT than your Coin DLL.

Use int findClosest(const SbSphere &sphere, SbIntList & arr) instead.

## Author

Generated automatically by Doxygen for Coin from the source code.
