AabbTreeIntersectionVisitor.h
Go to the documentation of this file.
1 // This file is a part of the OpenSurgSim project.
2 // Copyright 2013, SimQuest Solutions Inc.
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 
16 #ifndef SURGSIM_DATASTRUCTURES_AABBTREEINTERSECTIONVISITOR_H
17 #define SURGSIM_DATASTRUCTURES_AABBTREEINTERSECTIONVISITOR_H
18 
20 #include "SurgSim/Math/Aabb.h"
21 
22 #include <list>
23 
24 namespace SurgSim
25 {
26 namespace DataStructures
27 {
28 
31 {
32 public:
33 
36 
40 
43 
44  bool handle(TreeNode* node) override;
45 
46  bool handle(AabbTreeNode* node) override;
47 
49  bool hasIntersections() const;
50 
52  void reset();
53 
56 
59  void setAabb(const SurgSim::Math::Aabbd& aabb);
60 
62  const std::list<size_t>& getIntersections() const;
63 
64 private:
65 
67  std::list<size_t> m_intersections;
68 
71 };
72 
73 }
74 }
75 
76 #endif
TreeVisitor.h
SurgSim::DataStructures::AabbTreeIntersectionVisitor::getAabb
SurgSim::Math::Aabbd getAabb() const
Definition: AabbTreeIntersectionVisitor.cpp:72
SurgSim::DataStructures::AabbTreeIntersectionVisitor::~AabbTreeIntersectionVisitor
virtual ~AabbTreeIntersectionVisitor()
Destructor.
Definition: AabbTreeIntersectionVisitor.cpp:37
SurgSim::DataStructures::AabbTreeIntersectionVisitor::m_aabb
SurgSim::Math::Aabbd m_aabb
Bounding box used for intersection test.
Definition: AabbTreeIntersectionVisitor.h:70
SurgSim
Definition: CompoundShapeToGraphics.cpp:29
SurgSim::DataStructures::AabbTreeIntersectionVisitor::handle
bool handle(TreeNode *node) override
Handle TreeNode basic type.
Definition: AabbTreeIntersectionVisitor.cpp:42
SurgSim::DataStructures::AabbTreeIntersectionVisitor::getIntersections
const std::list< size_t > & getIntersections() const
Definition: AabbTreeIntersectionVisitor.cpp:85
SurgSim::Math::Aabbd
Eigen::AlignedBox< double, 3 > Aabbd
Wrapper around the Eigen type.
Definition: Aabb.h:30
SurgSim::DataStructures::AabbTreeIntersectionVisitor::AabbTreeIntersectionVisitor
AabbTreeIntersectionVisitor()
Constructor.
Definition: AabbTreeIntersectionVisitor.cpp:26
SurgSim::DataStructures::AabbTreeIntersectionVisitor::hasIntersections
bool hasIntersections() const
Definition: AabbTreeIntersectionVisitor.cpp:90
SurgSim::DataStructures::TreeNode
Basic tree node structure.
Definition: TreeNode.h:36
SurgSim::DataStructures::AabbTreeIntersectionVisitor
Visitor class to collect the items that intersect with a given bounding box.
Definition: AabbTreeIntersectionVisitor.h:30
SurgSim::DataStructures::AabbTreeIntersectionVisitor::setAabb
void setAabb(const SurgSim::Math::Aabbd &aabb)
Sets a new bounding box, will also call reset()
Definition: AabbTreeIntersectionVisitor.cpp:78
Aabb.h
SurgSim::DataStructures::AabbTreeNode
Node class for the AabbTree, this handles groups of items and subdivision if the number of items gets...
Definition: AabbTreeNode.h:30
SurgSim::DataStructures::TreeVisitor
Abstract Class for visitors, this needs to be extended for other tree nodes when necessary return fal...
Definition: TreeVisitor.h:31
SurgSim::DataStructures::AabbTreeIntersectionVisitor::m_intersections
std::list< size_t > m_intersections
List of ids found for intersections.
Definition: AabbTreeIntersectionVisitor.h:67
SurgSim::DataStructures::AabbTreeIntersectionVisitor::reset
void reset()
Resets the data in the tree.
Definition: AabbTreeIntersectionVisitor.cpp:67