SbBSPTree(3)

πŸ“¦ version 3.1.3, in fedora 43, fedora 44

πŸ’– SbBSPTree πŸ’–

okay bestie, sit down, hydrate, because we're about to talk about SbBSPTree β€” the class that hands you a binary space partitioning container and honestly? it's giving organized. it's giving spatially aware. no cap.

this page lives in the Library Functions Manual section (that's the (3) in SbBSPTree(3), iykyk), so it's a C++ class, not a command you type into your shell. just so we're clear 🫢


✨ NAME ✨

SbBSPTree β€” the SbBSPTree class provides a binary space partitioning container.


🌸 SYNOPSIS 🌸

#include <Inventor/SbBSPTree.h>

πŸŽ€ Public Member Functions πŸŽ€

here's the whole roster, every single one, no skips:

  • 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. yes, that's the same sentence as the NAME section, she's consistent, we love her for it πŸ’…

here's the actual tea though: this class can be used to organize searches for 3D points or normals in a set in O(log(n)) time. log-n. logarithmic. she's fast. she's efficient. she ate. πŸ”₯

Note: SbBSPTree is an extension to the original Open Inventor API. so if you were like "hmm I don't remember this from the original" β€” correct, you don't, bestie, it's a Coin thing ✨

πŸ¦‹ Constructor & Destructor Documentation πŸ¦‹

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

Constructor time, babes πŸŽ€ here's the deal:

  • maxnodepts β€” the maximum number of points in a node before it must be split. that's the whole point of the tree, she splits when she's full, main character energy.
  • initsize β€” the number of initially allocated points in the growable points array.

and lowkey a pro tip from the manpage itself: if you already know approximately how many points you're gonna add to the tree, supply that in initsize, because it helps the performance. do your future self a favor fr fr πŸ™ˆ

SbBSPTree::~SbBSPTree ()

Destructor. Frees used memory. that's it, that's the vibe, she cleans up after herself, iconic 🧹✨


πŸ‘‘ Member Function Documentation πŸ‘‘

int SbBSPTree::numPoints () const

Returns the number of points in the BSP tree. how many besties are in the tree, basically πŸ’œ

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. same girl, different fit πŸ’…

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.

BUT WAIT β€” if the point already exists in the BSP tree, the index to the old point will be returned. and the user data for that point will not be changed. so don't come in expecting your new data to overwrite anything, she said no πŸ’€

See also: SbBSPTree::findPoint()

int SbBSPTree::removePoint (const SbVec3f & pt)

Removes the point with coordinates pt, and returns the index to the removed point. and if no point with those coordinates could be found? you get -1. the classic "girl, she's not here" 😭

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. (again with the -1, she's consistent 🫢)

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. same energy, different signature ✨

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

Will empty all points from the BSP tree. full reset. factory settings. clean slate 🌸

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. And if no points can be found inside the sphere, -1 is returned. (you knew it was coming πŸ’€)

Since: Coin 2.3

const SbBox3f & SbBSPTree::getBBox () const

Will return the bounding box of all points in the BSP tree. the little box that contains every single point, so cute, so organized πŸ“¦πŸ’–

const SbVec3f * SbBSPTree::getPointsArrayPtr (void ) const

Returns a pointer to the array of points inserted into the BPS tree. (yes, it says BPS in the original, we're keeping it exactly as written, no editing bestie πŸ™ˆ)

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. seriously, use the other one, this one is a trap 🚩

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. same warning, same escape hatch, go use the SbIntList version 🌈


πŸ’œ Author πŸ’œ

Generated automatically by Doxygen for Coin from the source code. so technically the author is a robot and the source code, which is honestly so valid of them πŸ€–βœ¨


and that's the whole page bestie!! you read all of it, I'm so proud, you ate that πŸ“

Coin β€” Version 3.1.3 β€” and the date is stamped on the page as SbBSPTree(3), so there you go. mwah, go build something spatially partitioned πŸ’…πŸ¦‹

πŸ“¦ where this page comes from