OctreeNodePlyReaderDelegate-inl.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_OCTREENODEPLYREADERDELEGATE_INL_H
#define SURGSIM_DATASTRUCTURES_OCTREENODEPLYREADERDELEGATE_INL_H
namespace SurgSim
{
namespace DataStructures
{
template <typename Data>
OctreeNodePlyReaderDelegate<Data>::OctreeNodePlyReaderDelegate() :
m_octree(std::make_shared<OctreeNode<Data>>())
{
static_assert(std::is_default_constructible<Data>::value, "OctreeNode Data needs default constructor.");
}
template <typename Data>
OctreeNodePlyReaderDelegate<Data>::OctreeNodePlyReaderDelegate(std::shared_ptr<OctreeNode<Data>> octree) :
m_octree(octree)
{
static_assert(std::is_default_constructible<Data>::value, "OctreeNode Data needs default constructor");
SURGSIM_ASSERT(!m_octree->hasChildren()) << "Can't process an octree that already has children in it.";
}
template <typename Data>
OctreeNodePlyReaderDelegate<Data>::~OctreeNodePlyReaderDelegate()
{
}
template <typename Data>
std::shared_ptr<OctreeNode<Data>> OctreeNodePlyReaderDelegate<Data>::getOctree()
{
return m_octree;
}
template <typename Data>
void OctreeNodePlyReaderDelegate<Data>::processVoxel(const std::string& elementName)
{
SurgSim::Math::Vector3d position;
position[0] = m_voxel.x;
position[1] = m_voxel.y;
position[2] = m_voxel.z;
m_octree->addData(position, m_numLevels);
}
template <typename Data>
void OctreeNodePlyReaderDelegate<Data>::initializeOctree()
{
m_octree->m_boundingBox = m_boundingBox;
}
}
}
#endif
SurgSim
Definition: CompoundShapeToGraphics.cpp:29
SurgSim::DataStructures::OctreeNodePlyReaderDelegateBase::VoxelData::y
double y
Definition: OctreeNodePlyReaderDelegate.h:114
SurgSim::DataStructures::OctreeNodePlyReaderDelegate::processVoxel
void processVoxel(const std::string &elementName) override
Callback function to process one voxel.
Definition: OctreeNodePlyReaderDelegate-inl.h:52
SurgSim::DataStructures::OctreeNodePlyReaderDelegateBase::m_boundingBox
Eigen::AlignedBox< double, 3 > m_boundingBox
Bounding box, will be initialized from the file.
Definition: OctreeNodePlyReaderDelegate.h:92
std
STL namespace.
SURGSIM_ASSERT
#define SURGSIM_ASSERT(condition)
Assert that condition is true.
Definition: Assert.h:77
SurgSim::DataStructures::OctreeNodePlyReaderDelegateBase::VoxelData::z
double z
Definition: OctreeNodePlyReaderDelegate.h:115
SurgSim::DataStructures::OctreeNodePlyReaderDelegate::~OctreeNodePlyReaderDelegate
virtual ~OctreeNodePlyReaderDelegate()
Destructor.
Definition: OctreeNodePlyReaderDelegate-inl.h:40
SurgSim::DataStructures::OctreeNodePlyReaderDelegate::m_octree
std::shared_ptr< OctreeNode< Data > > m_octree
The octree that will be filled with the data from the file.
Definition: OctreeNodePlyReaderDelegate.h:158
SurgSim::DataStructures::OctreeNodePlyReaderDelegateBase::VoxelData::x
double x
Definition: OctreeNodePlyReaderDelegate.h:113
SurgSim::DataStructures::OctreeNodePlyReaderDelegate::initializeOctree
void initializeOctree() override
Set up the octree, this is left up to the derived classes.
Definition: OctreeNodePlyReaderDelegate-inl.h:62
SurgSim::DataStructures::OctreeNodePlyReaderDelegateBase::m_voxel
struct SurgSim::DataStructures::OctreeNodePlyReaderDelegateBase::VoxelData m_voxel
SurgSim::DataStructures::OctreeNodePlyReaderDelegate::OctreeNodePlyReaderDelegate
OctreeNodePlyReaderDelegate()
Constructor.
Definition: OctreeNodePlyReaderDelegate-inl.h:25
SurgSim::DataStructures::OctreeNodePlyReaderDelegate::getOctree
std::shared_ptr< OctreeNode< Data > > getOctree()
Definition: OctreeNodePlyReaderDelegate-inl.h:46
SurgSim::DataStructures::OctreeNodePlyReaderDelegateBase::m_numLevels
int m_numLevels
Calculated number of levels for the octree.
Definition: OctreeNodePlyReaderDelegate.h:119
SurgSim::Math::Vector3d
Eigen::Matrix< double, 3, 1 > Vector3d
A 3D vector of doubles.
Definition: Vector.h:57
SurgSim::DataStructures::OctreeNode
Octree data structure.
Definition: OctreeNode.h:131