Rosetta
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
protocols::match::VoxelSetIterator Class Reference

Helper class for the OccupiedSpaceHasher which manages the logic for how to iterate across the 64 voxels that each 6-D point covers. More...

#include <VoxelSetIterator.hh>

Public Types

typedef core::Size Size
 
typedef core::Real Real
 
typedef core::Vector Vector
 
typedef numeric::geometry::BoundingBox< VectorBoundingBox
 
typedef numeric::geometry::hashing::Real3 Real3
 
typedef numeric::geometry::hashing::Size6 Size6
 
typedef numeric::geometry::hashing::Bin6D Bin6D
 

Public Member Functions

 VoxelSetIterator (BoundingBox const &bb, Size3 const &n_xyz_bins, Size3 const &n_euler_bins, Real3 const &xyz_bin_widths, Real3 const &euler_bin_widths, Real3 const &xyz_bin_halfwidths, Real3 const &euler_bin_halfwidths, Real6 const &point)
 
void operator++ ()
 
bool at_end () const
 
void get_bin_and_pos (Size6 &bin, core::Size &pos) const
 

Private Member Functions

void calc_bin_and_pos ()
 

Private Attributes

BoundingBox bb_
 
Size3 n_xyz_bins_
 
Size3 n_euler_bins_
 
Real3 xyz_bin_widths_
 
Real3 euler_bin_widths_
 
Real3 xyz_bin_halfwidths_
 
Real3 euler_bin_halfwidths_
 
Real6 point_
 
Bin6D basebin_
 
Bin6D basehalfbin_
 
bool theta_near_0_
 
bool theta_near_180_
 
utility::fixedsizearray1< core::Size, 2 > wrapped_phipsi_bins_
 
utility::fixedsizearray1< core::Size, 2 > wrapped_phipsi_halfbins_
 
utility::FixedSizeLexicographicalIterator< 6 > iter64_
 
Size6 curr_bin_
 
core::Size curr_pos_
 

Detailed Description

Helper class for the OccupiedSpaceHasher which manages the logic for how to iterate across the 64 voxels that each 6-D point covers.

This class ensures that the bounding box for the hash is not walked outside of, that the phi and psi are wrapped at 360, and that when theta is near a gimbal-lock angle of 180 or 0, that phi and psi are appropriately wrapped to the negative rotation. This class may be rapidly allocated and deallocated on the stack – no calls to new are made anywhere.

Member Typedef Documentation

◆ Bin6D

typedef numeric::geometry::hashing::Bin6D protocols::match::VoxelSetIterator::Bin6D

◆ BoundingBox

typedef numeric::geometry::BoundingBox< Vector > protocols::match::VoxelSetIterator::BoundingBox

◆ Real

◆ Real3

typedef numeric::geometry::hashing::Real3 protocols::match::VoxelSetIterator::Real3

◆ Size

◆ Size6

typedef numeric::geometry::hashing::Size6 protocols::match::VoxelSetIterator::Size6

◆ Vector

Constructor & Destructor Documentation

◆ VoxelSetIterator()

protocols::match::VoxelSetIterator::VoxelSetIterator ( BoundingBox const &  bb,
Size3 const &  n_xyz_bins,
Size3 const &  n_euler_bins,
Real3 const &  xyz_bin_widths,
Real3 const &  euler_bin_widths,
Real3 const &  xyz_bin_halfwidths,
Real3 const &  euler_bin_halfwidths,
Real6 const &  point 
)

Initalize the iterator with both the bounding volume and discritezation data from the OccupiedSpaceHasher, and also with the coordinates of the 6-d point that this instance will be responsible for. One point per VoxelSetIterator.

References basebin_, basehalfbin_, bb_, calc_bin_and_pos(), euler_bin_halfwidths_, euler_bin_widths_, iter64_, n_euler_bins_, n_xyz_bins_, point_, theta_near_0_, theta_near_180_, wrapped_phipsi_bins_, wrapped_phipsi_halfbins_, xyz_bin_halfwidths_, and xyz_bin_widths_.

Member Function Documentation

◆ at_end()

bool protocols::match::VoxelSetIterator::at_end ( ) const

◆ calc_bin_and_pos()

void protocols::match::VoxelSetIterator::calc_bin_and_pos ( )
private

◆ get_bin_and_pos()

void protocols::match::VoxelSetIterator::get_bin_and_pos ( Size6 bin,
core::Size pos 
) const

◆ operator++()

void protocols::match::VoxelSetIterator::operator++ ( )

Member Data Documentation

◆ basebin_

Bin6D protocols::match::VoxelSetIterator::basebin_
private

◆ basehalfbin_

Bin6D protocols::match::VoxelSetIterator::basehalfbin_
private

◆ bb_

BoundingBox protocols::match::VoxelSetIterator::bb_
private

Referenced by VoxelSetIterator().

◆ curr_bin_

Size6 protocols::match::VoxelSetIterator::curr_bin_
private

◆ curr_pos_

core::Size protocols::match::VoxelSetIterator::curr_pos_
private

◆ euler_bin_halfwidths_

Real3 protocols::match::VoxelSetIterator::euler_bin_halfwidths_
private

Referenced by VoxelSetIterator().

◆ euler_bin_widths_

Real3 protocols::match::VoxelSetIterator::euler_bin_widths_
private

Referenced by VoxelSetIterator().

◆ iter64_

utility::FixedSizeLexicographicalIterator< 6 > protocols::match::VoxelSetIterator::iter64_
private

◆ n_euler_bins_

Size3 protocols::match::VoxelSetIterator::n_euler_bins_
private

◆ n_xyz_bins_

Size3 protocols::match::VoxelSetIterator::n_xyz_bins_
private

Referenced by operator++(), and VoxelSetIterator().

◆ point_

Real6 protocols::match::VoxelSetIterator::point_
private

Referenced by VoxelSetIterator().

◆ theta_near_0_

bool protocols::match::VoxelSetIterator::theta_near_0_
private

◆ theta_near_180_

bool protocols::match::VoxelSetIterator::theta_near_180_
private

◆ wrapped_phipsi_bins_

utility::fixedsizearray1< core::Size, 2 > protocols::match::VoxelSetIterator::wrapped_phipsi_bins_
private

◆ wrapped_phipsi_halfbins_

utility::fixedsizearray1< core::Size, 2 > protocols::match::VoxelSetIterator::wrapped_phipsi_halfbins_
private

◆ xyz_bin_halfwidths_

Real3 protocols::match::VoxelSetIterator::xyz_bin_halfwidths_
private

Referenced by VoxelSetIterator().

◆ xyz_bin_widths_

Real3 protocols::match::VoxelSetIterator::xyz_bin_widths_
private

Referenced by VoxelSetIterator().


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