Loading...
Searching...
No Matches
Coord Class Reference

Signed (i, j, k) 32-bit integer coordinate class, similar to openvdb::math::Coord. More...

`#include <nanovdb/NanoVDB.h>`

## Public Types

using | ValueType = int32_t
using | IndexType = uint32_t

## Public Member Functions

| Coord ()
| Initialize all coordinates to zero.
| Coord (ValueType n)
| Initializes all coordinates to the given signed integer.
| Coord (ValueType i, ValueType j, ValueType k)
| Initializes coordinate to the given signed integers.
| Coord (ValueType *ptr)
int32_t | x () const
int32_t | y () const
int32_t | z () const
int32_t & | x ()
int32_t & | y ()
int32_t & | z ()
const ValueType & | operator[] (IndexType i) const
| Return a const reference to the given Coord component.
ValueType & | operator[] (IndexType i)
| Return a non-const reference to the given Coord component.
template<typename CoordT >
Coord & | operator= (const CoordT &other)
| Assignment operator that works with openvdb::Coord.
Coord | operator& (IndexType n) const
| Return a new instance with coordinates masked by the given unsigned integer.
Coord | operator<< (IndexType n) const
Coord | operator>> (IndexType n) const
bool | operator< (const Coord &rhs) const
| Return true if this Coord is lexicographically less than the given Coord.
bool | operator<= (const Coord &rhs) const
| Return true if this Coord is lexicographically less or equal to the given Coord.
bool | operator== (const Coord &rhs) const
bool | operator!= (const Coord &rhs) const
Coord & | operator&= (int n)
Coord & | operator<<= (uint32_t n)
Coord & | operator>>= (uint32_t n)
Coord & | operator+= (int n)
Coord | operator+ (const Coord &rhs) const
Coord | operator- (const Coord &rhs) const
Coord | operator- () const
Coord & | operator+= (const Coord &rhs)
Coord & | operator-= (const Coord &rhs)
Coord & | minComponent (const Coord &other)
| Perform a component-wise minimum with the other Coord.
Coord & | maxComponent (const Coord &other)
| Perform a component-wise maximum with the other Coord.
Coord | offsetBy (ValueType dx, ValueType dy, ValueType dz) const
Coord | offsetBy (ValueType n) const
template<int Log2N = 3 + 4 + 5>
uint32_t | hash () const
| Return a hash key derived from the existing coordinates.
uint8_t | octant () const
| Return the octant of this Coord.
Vec3< float > | asVec3s () const
| Return a single precision floating-point vector of this coordinate.
Vec3< double > | asVec3d () const
| Return a double precision floating-point vector of this coordinate.
Coord | round () const

## Static Public Member Functions

static Coord | max ()
static Coord | min ()
static size_t | memUsage ()
static bool | lessThan (const Coord &a, const Coord &b)
template<typename Vec3T >
static Coord | Floor (const Vec3T &xyz)
| Return the largest integer coordinates that are not greater than xyz (node centered conversion).

## Detailed Description

Signed (i, j, k) 32-bit integer coordinate class, similar to openvdb::math::Coord.

## Member Typedef Documentation

## IndexType

using IndexType = uint32_t

## ValueType

using ValueType = int32_t

## Constructor & Destructor Documentation

## Coord() [1/4]

Coord | ( |  | ) |

inline

Initialize all coordinates to zero.

## Coord() [2/4]

Coord | ( | ValueType | n | ) |

inlineexplicit

Initializes all coordinates to the given signed integer.

## Coord() [3/4]

Coord | ( | ValueType | i,
|  | ValueType | j,
|  | ValueType | k
| ) |  |

inline

Initializes coordinate to the given signed integers.

## Coord() [4/4]

Coord | ( | ValueType * | ptr | ) |

inline

## Member Function Documentation

## asVec3d()

Vec3d asVec3d | ( |  | ) | const

inline

Return a double precision floating-point vector of this coordinate.

## asVec3s()

Vec3f asVec3s | ( |  | ) | const

inline

Return a single precision floating-point vector of this coordinate.

## Floor()

template<typename Vec3T >

static Coord Floor | ( | const Vec3T & | xyz | ) |

inlinestatic

Return the largest integer coordinates that are not greater than xyz (node centered conversion).

## hash()

template<int Log2N = 3 + 4 + 5>

uint32_t hash | ( |  | ) | const

inline

Return a hash key derived from the existing coordinates.

The hash function is originally taken from the SIGGRAPH paper: "VDB: High-resolution sparse volumes with dynamic topology" and the prime numbers are modified based on the ACM Transactions on Graphics paper: "Real-time 3D reconstruction at scale using voxel hashing" (the second number had a typo!)

## lessThan()

static bool lessThan | ( | const Coord & | a,
|  | const Coord & | b
| ) |  |

inlinestatic

Return true if any of the components of a are smaller than the corresponding components of b.

## max()

static Coord max | ( |  | ) |

inlinestatic

## maxComponent()

Coord & maxComponent | ( | const Coord & | other | ) |

inline

Perform a component-wise maximum with the other Coord.

## memUsage()

static size_t memUsage | ( |  | ) |

inlinestatic

## min()

static Coord min | ( |  | ) |

inlinestatic

## minComponent()

Coord & minComponent | ( | const Coord & | other | ) |

inline

Perform a component-wise minimum with the other Coord.

## octant()

uint8_t octant | ( |  | ) | const

inline

Return the octant of this Coord.

## offsetBy() [1/2]

Coord offsetBy | ( | ValueType | dx,
|  | ValueType | dy,
|  | ValueType | dz
| ) |  | const

inline

## offsetBy() [2/2]

Coord offsetBy | ( | ValueType | n | ) | const

inline

## operator!=()

bool operator!= | ( | const Coord & | rhs | ) | const

inline

## operator&()

Coord operator& | ( | IndexType | n | ) | const

inline

Return a new instance with coordinates masked by the given unsigned integer.

## operator&=()

Coord & operator&= | ( | int | n | ) |

inline

## operator+()

Coord operator+ | ( | const Coord & | rhs | ) | const

inline

## operator+=() [1/2]

Coord & operator+= | ( | const Coord & | rhs | ) |

inline

## operator+=() [2/2]

Coord & operator+= | ( | int | n | ) |

inline

## operator-() [1/2]

Coord operator- | ( |  | ) | const

inline

## operator-() [2/2]

Coord operator- | ( | const Coord & | rhs | ) | const

inline

## operator-=()

Coord & operator-= | ( | const Coord & | rhs | ) |

inline

## operator<()

bool operator< | ( | const Coord & | rhs | ) | const

inline

Return true if this Coord is lexicographically less than the given Coord.

## operator<<()

Coord operator<< | ( | IndexType | n | ) | const

inline

## operator<<=()

Coord & operator<<= | ( | uint32_t | n | ) |

inline

## operator<=()

bool operator<= | ( | const Coord & | rhs | ) | const

inline

Return true if this Coord is lexicographically less or equal to the given Coord.

## operator=()

template<typename CoordT >

Coord & operator= | ( | const CoordT & | other | ) |

inline

Assignment operator that works with openvdb::Coord.

## operator==()

bool operator== | ( | const Coord & | rhs | ) | const

inline

## operator>>()

Coord operator>> | ( | IndexType | n | ) | const

inline

## operator>>=()

Coord & operator>>= | ( | uint32_t | n | ) |

inline

## operator[]() [1/2]

ValueType & operator[] | ( | IndexType | i | ) |

inline

Return a non-const reference to the given Coord component.

Warning
  The argument is assumed to be 0, 1, or 2.

## operator[]() [2/2]

const ValueType & operator[] | ( | IndexType | i | ) | const

inline

Return a const reference to the given Coord component.

Warning
  The argument is assumed to be 0, 1, or 2.

## round()

Coord round | ( |  | ) | const

inline

## x() [1/2]

int32_t & x | ( |  | ) |

inline

## x() [2/2]

int32_t x | ( |  | ) | const

inline

## y() [1/2]

int32_t & y | ( |  | ) |

inline

## y() [2/2]

int32_t y | ( |  | ) | const

inline

## z() [1/2]

int32_t & z | ( |  | ) |

inline

## z() [2/2]

int32_t z | ( |  | ) | const

inline