AabbTreeIntersectionVisitor.h
Go to the documentation of this file.
// This file is a part of the OpenSurgSim project.
// Copyright 2013, SimQuest Solutions Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef SURGSIM_DATASTRUCTURES_AABBTREEINTERSECTIONVISITOR_H
#define SURGSIM_DATASTRUCTURES_AABBTREEINTERSECTIONVISITOR_H
#include "SurgSim/DataStructures/TreeVisitor.h"
#include "SurgSim/Math/Aabb.h"
#include <list>
namespace SurgSim
{
namespace DataStructures
{
class AabbTreeIntersectionVisitor : public TreeVisitor
{
public:
AabbTreeIntersectionVisitor();
explicit AabbTreeIntersectionVisitor(const SurgSim::Math::Aabbd& aabb);
virtual ~AabbTreeIntersectionVisitor();
bool handle(TreeNode* node) override;
bool handle(AabbTreeNode* node) override;
bool hasIntersections() const;
void reset();
SurgSim::Math::Aabbd getAabb() const;
void setAabb(const SurgSim::Math::Aabbd& aabb);
const std::list<size_t>& getIntersections() const;
private:
std::list<size_t> m_intersections;
SurgSim::Math::Aabbd m_aabb;
};
}
}
#endif
SurgSim
Definition: CompoundShapeToGraphics.cpp:29
SurgSim::DataStructures::AabbTreeIntersectionVisitor::reset
void reset()
Resets the data in the tree.
Definition: AabbTreeIntersectionVisitor.cpp:67
Aabb.h
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::TreeNode
Basic tree node structure.
Definition: TreeNode.h:36
SurgSim::DataStructures::AabbTreeIntersectionVisitor::setAabb
void setAabb(const SurgSim::Math::Aabbd &aabb)
Sets a new bounding box, will also call reset()
Definition: AabbTreeIntersectionVisitor.cpp:78
SurgSim::DataStructures::AabbTreeIntersectionVisitor::getAabb
SurgSim::Math::Aabbd getAabb() const
Definition: AabbTreeIntersectionVisitor.cpp:72
SurgSim::Math::Aabbd
Eigen::AlignedBox< double, 3 > Aabbd
Wrapper around the Eigen type.
Definition: Aabb.h:30
SurgSim::DataStructures::AabbTreeIntersectionVisitor::m_aabb
SurgSim::Math::Aabbd m_aabb
Bounding box used for intersection test.
Definition: AabbTreeIntersectionVisitor.h:70
SurgSim::DataStructures::AabbTreeIntersectionVisitor::AabbTreeIntersectionVisitor
AabbTreeIntersectionVisitor()
Constructor.
Definition: AabbTreeIntersectionVisitor.cpp:26
SurgSim::DataStructures::AabbTreeIntersectionVisitor::hasIntersections
bool hasIntersections() const
Definition: AabbTreeIntersectionVisitor.cpp:90
SurgSim::DataStructures::AabbTreeIntersectionVisitor::getIntersections
const std::list< size_t > & getIntersections() const
Definition: AabbTreeIntersectionVisitor.cpp:85
SurgSim::DataStructures::AabbTreeIntersectionVisitor
Visitor class to collect the items that intersect with a given bounding box.
Definition: AabbTreeIntersectionVisitor.h:30
SurgSim::DataStructures::AabbTreeIntersectionVisitor::m_intersections
std::list< size_t > m_intersections
List of ids found for intersections.
Definition: AabbTreeIntersectionVisitor.h:67
SurgSim::DataStructures::AabbTreeIntersectionVisitor::handle
bool handle(TreeNode *node) override
Handle TreeNode basic type.
Definition: AabbTreeIntersectionVisitor.cpp:42
SurgSim::DataStructures::AabbTreeIntersectionVisitor::~AabbTreeIntersectionVisitor
virtual ~AabbTreeIntersectionVisitor()
Destructor.
Definition: AabbTreeIntersectionVisitor.cpp:37
TreeVisitor.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