OpenSiv3D  v0.6.5
C++20 framework for creative coding
s3d::KDTree< DatasetAdapter > Class Template Reference

kd-tree More...

#include <KDTree.hpp>

Public Types

using adapter_type = detail::KDAdapter< DatasetAdapter >
 
using point_type = typename adapter_type::point_type
 
using element_type = typename adapter_type::element_type
 
using dataset_type = typename adapter_type::dataset_type
 

Public Member Functions

 KDTree ()=default
 デフォルトコンストラクタ More...
 
 KDTree (const dataset_type &dataset)
 kd-tree を構築します。 More...
 
void rebuildIndex ()
 ツリーを再構築します。 More...
 
void release ()
 kd-tree を消去し、メモリから解放します。 More...
 
size_t usedMemory () const
 kd-tree が消費しているメモリのサイズ(バイト)を返します。 More...
 
Array< size_t > knnSearch (size_t k, const point_type &point) const
 指定した座標から最も近い k 個の要素を検索して返します。 More...
 
void knnSearch (Array< size_t > &results, size_t k, const point_type &point) const
 指定した座標から最も近い k 個の要素を検索して取得します。 More...
 
void knnSearch (Array< size_t > &results, Array< element_type > &distanceSqResults, size_t k, const point_type &point) const
 指定した座標から最も近い k 個の要素を検索して取得します。 More...
 
Array< size_t > radiusSearch (const point_type &point, element_type radius, SortByDistance sortByDistance=SortByDistance::No) const
 指定した座標から指定した半径以内にある要素一覧を検索して返します。 More...
 
void radiusSearch (Array< size_t > &results, const point_type &point, element_type radius, const SortByDistance sortByDistance=SortByDistance::No) const
 指定した座標から指定した半径以内にある要素一覧を検索して取得します。 More...
 

Static Public Attributes

static constexpr int32 Dimensions = adapter_type::Dimensions
 

Detailed Description

template<class DatasetAdapter>
class s3d::KDTree< DatasetAdapter >

kd-tree

Template Parameters
DatasetAdapterkd-tree 用のアダプタ型

Member Typedef Documentation

◆ adapter_type

template<class DatasetAdapter >
using s3d::KDTree< DatasetAdapter >::adapter_type = detail::KDAdapter<DatasetAdapter>

◆ dataset_type

template<class DatasetAdapter >
using s3d::KDTree< DatasetAdapter >::dataset_type = typename adapter_type::dataset_type

◆ element_type

template<class DatasetAdapter >
using s3d::KDTree< DatasetAdapter >::element_type = typename adapter_type::element_type

◆ point_type

template<class DatasetAdapter >
using s3d::KDTree< DatasetAdapter >::point_type = typename adapter_type::point_type

Constructor & Destructor Documentation

◆ KDTree() [1/2]

template<class DatasetAdapter >
s3d::KDTree< DatasetAdapter >::KDTree ( )
default

デフォルトコンストラクタ

◆ KDTree() [2/2]

template<class DatasetAdapter >
s3d::KDTree< DatasetAdapter >::KDTree ( const dataset_type dataset)
explicit

kd-tree を構築します。

Parameters
datasetデータセット

Member Function Documentation

◆ knnSearch() [1/3]

template<class DatasetAdapter >
void s3d::KDTree< DatasetAdapter >::knnSearch ( Array< size_t > &  results,
Array< element_type > &  distanceSqResults,
size_t  k,
const point_type point 
) const

指定した座標から最も近い k 個の要素を検索して取得します。

Parameters
results結果を格納する配列
distanceSqResultsそれぞれの要素について、中心からの距離を格納する配列
k検索する個数
point中心座標

◆ knnSearch() [2/3]

template<class DatasetAdapter >
void s3d::KDTree< DatasetAdapter >::knnSearch ( Array< size_t > &  results,
size_t  k,
const point_type point 
) const

指定した座標から最も近い k 個の要素を検索して取得します。

Parameters
results結果を格納する配列
k検索する個数
point中心座標

◆ knnSearch() [3/3]

template<class DatasetAdapter >
Array<size_t> s3d::KDTree< DatasetAdapter >::knnSearch ( size_t  k,
const point_type point 
) const

指定した座標から最も近い k 個の要素を検索して返します。

Parameters
k検索する個数
point座標
Returns
見つかった要素一覧

◆ radiusSearch() [1/2]

template<class DatasetAdapter >
void s3d::KDTree< DatasetAdapter >::radiusSearch ( Array< size_t > &  results,
const point_type point,
element_type  radius,
const SortByDistance  sortByDistance = SortByDistance::No 
) const

指定した座標から指定した半径以内にある要素一覧を検索して取得します。

Parameters
results結果を格納する配列
point中心座標
radius半径
sortByDistance結果を中心座標から近い順にソートする場合 SortByDistance::Yes, それ以外の場合は SortByDistance::No

◆ radiusSearch() [2/2]

template<class DatasetAdapter >
Array<size_t> s3d::KDTree< DatasetAdapter >::radiusSearch ( const point_type point,
element_type  radius,
SortByDistance  sortByDistance = SortByDistance::No 
) const

指定した座標から指定した半径以内にある要素一覧を検索して返します。

Parameters
point中心座標
radius半径
sortByDistance結果を中心座標から近い順にソートする場合 SortByDistance::Yes, それ以外の場合は SortByDistance::No
Returns
指定した位置から指定した半径以内にある要素一覧

◆ rebuildIndex()

template<class DatasetAdapter >
void s3d::KDTree< DatasetAdapter >::rebuildIndex ( )

ツリーを再構築します。

◆ release()

template<class DatasetAdapter >
void s3d::KDTree< DatasetAdapter >::release ( )

kd-tree を消去し、メモリから解放します。

◆ usedMemory()

template<class DatasetAdapter >
size_t s3d::KDTree< DatasetAdapter >::usedMemory ( ) const

kd-tree が消費しているメモリのサイズ(バイト)を返します。

Returns
kd-tree が消費しているメモリのサイズ(バイト)

Member Data Documentation

◆ Dimensions

template<class DatasetAdapter >
constexpr int32 s3d::KDTree< DatasetAdapter >::Dimensions = adapter_type::Dimensions
staticconstexpr

The documentation for this class was generated from the following file: