Open3D (C++ API)  0.19.0
Loading...
Searching...
No Matches
NeighborSearchAllocator.h
Go to the documentation of this file.
1// ----------------------------------------------------------------------------
2// - Open3D: www.open3d.org -
3// ----------------------------------------------------------------------------
4// Copyright (c) 2018-2024 www.open3d.org
5// SPDX-License-Identifier: MIT
6// ----------------------------------------------------------------------------
7
8#pragma once
9
10#include "open3d/core/Device.h"
11#include "open3d/core/Dtype.h"
12#include "open3d/core/Tensor.h"
13
14namespace open3d {
15namespace core {
16namespace nns {
17
18template <class T, class TIndex = int32_t>
20public:
21 NeighborSearchAllocator(Device device) : device_(device) {}
22
23 void AllocIndices(TIndex** ptr, size_t num) {
24 indices_ = Tensor::Empty({int64_t(num)}, Dtype::FromType<TIndex>(),
25 device_);
26 *ptr = indices_.GetDataPtr<TIndex>();
27 }
28
29 void AllocIndices(TIndex** ptr, size_t num, TIndex value) {
30 indices_ = Tensor::Full({int64_t(num)}, value,
31 Dtype::FromType<TIndex>(), device_);
32 *ptr = indices_.GetDataPtr<TIndex>();
33 }
34
35 void AllocDistances(T** ptr, size_t num) {
36 distances_ =
37 Tensor::Empty({int64_t(num)}, Dtype::FromType<T>(), device_);
38 *ptr = distances_.GetDataPtr<T>();
39 }
40
41 void AllocDistances(T** ptr, size_t num, T value) {
42 distances_ = Tensor::Full({int64_t(num)}, value, Dtype::FromType<T>(),
43 device_);
44 *ptr = distances_.GetDataPtr<T>();
45 }
46
47 void AllocCounts(TIndex** ptr, size_t num) {
48 counts_ = Tensor::Empty({int64_t(num)}, Dtype::FromType<TIndex>(),
49 device_);
50 *ptr = counts_.GetDataPtr<TIndex>();
51 }
52
53 void AllocCounts(TIndex** ptr, size_t num, TIndex value) {
54 counts_ = Tensor::Full({int64_t(num)}, value, Dtype::FromType<TIndex>(),
55 device_);
56 *ptr = counts_.GetDataPtr<TIndex>();
57 }
58
59 const TIndex* IndicesPtr() const { return indices_.GetDataPtr<TIndex>(); }
60
61 const T* DistancesPtr() const { return distances_.GetDataPtr<T>(); }
62
63 const TIndex* CountsPtr() const { return counts_.GetDataPtr<TIndex>(); }
64
65 const Tensor& NeighborsIndex() const { return indices_; }
66 Tensor& NeighborsIndex_() { return indices_; }
67 const Tensor& NeighborsDistance() const { return distances_; }
68 Tensor& NeighborsDistance_() { return distances_; }
69 const Tensor& NeighborsCount() const { return counts_; }
70
71private:
72 Tensor indices_;
73 Tensor distances_;
74 Tensor counts_;
75 Device device_;
76};
77
78} // namespace nns
79} // namespace core
80} // namespace open3d
Definition Device.h:18
static const Dtype FromType()
Definition Dtype.h:54
Definition Tensor.h:32
static Tensor Empty(const SizeVector &shape, Dtype dtype, const Device &device=Device("CPU:0"))
Create a tensor with uninitialized values.
Definition Tensor.cpp:368
T * GetDataPtr()
Definition Tensor.h:1143
static Tensor Full(const SizeVector &shape, T fill_value, Dtype dtype, const Device &device=Device("CPU:0"))
Create a tensor fill with specified value.
Definition Tensor.h:252
Definition NeighborSearchAllocator.h:19
void AllocCounts(TIndex **ptr, size_t num, TIndex value)
Definition NeighborSearchAllocator.h:53
void AllocDistances(T **ptr, size_t num)
Definition NeighborSearchAllocator.h:35
const TIndex * IndicesPtr() const
Definition NeighborSearchAllocator.h:59
const Tensor & NeighborsCount() const
Definition NeighborSearchAllocator.h:69
void AllocDistances(T **ptr, size_t num, T value)
Definition NeighborSearchAllocator.h:41
Tensor & NeighborsDistance_()
Definition NeighborSearchAllocator.h:68
void AllocIndices(TIndex **ptr, size_t num)
Definition NeighborSearchAllocator.h:23
Tensor & NeighborsIndex_()
Definition NeighborSearchAllocator.h:66
const Tensor & NeighborsDistance() const
Definition NeighborSearchAllocator.h:67
void AllocCounts(TIndex **ptr, size_t num)
Definition NeighborSearchAllocator.h:47
const T * DistancesPtr() const
Definition NeighborSearchAllocator.h:61
NeighborSearchAllocator(Device device)
Definition NeighborSearchAllocator.h:21
const Tensor & NeighborsIndex() const
Definition NeighborSearchAllocator.h:65
void AllocIndices(TIndex **ptr, size_t num, TIndex value)
Definition NeighborSearchAllocator.h:29
const TIndex * CountsPtr() const
Definition NeighborSearchAllocator.h:63
Definition PinholeCameraIntrinsic.cpp:16