本文整理汇总了C++中PointBuffer::getPackedPoint方法的典型用法代码示例。如果您正苦于以下问题:C++ PointBuffer::getPackedPoint方法的具体用法?C++ PointBuffer::getPackedPoint怎么用?C++ PointBuffer::getPackedPoint使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PointBuffer
的用法示例。
在下文中一共展示了PointBuffer::getPackedPoint方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: readPoint
/// Read a point's data packed into a buffer.
/// \param[in] pb Point buffer to read from.
/// \param[in] idx Index of point to read.
/// \param[in] outbuf Buffer to write to.
/// \return Number of bytes written to buffer.
size_t DbWriter::readPoint(const PointBuffer& pb, PointId idx, char *outbuf)
{
pb.getPackedPoint(m_dimTypes, idx, outbuf);
auto iconvert = [](const XForm& xform, const char *inpos, char *outpos)
{
double d;
int32_t i;
memcpy(&d, inpos, sizeof(double));
d = (d - xform.m_offset) / xform.m_scale;
i = boost::numeric_cast<int32_t>(lround(d));
memcpy(outpos, &i, sizeof(int32_t));
};
if (m_locationScaling)
{
int outOffset;
if (m_xPackedOffset >= 0)
outOffset = m_xPackedOffset;
else if (m_yPackedOffset >= 0)
outOffset = m_yPackedOffset;
else if (m_zPackedOffset >= 0)
outOffset = m_zPackedOffset;
else
outOffset = m_packedPointSize; //So we return the proper size.
if (m_xPackedOffset >= 0)
{
iconvert(m_xXform, outbuf + m_xPackedOffset, outbuf + outOffset);
outOffset += sizeof(int);
}
if (m_yPackedOffset >= 0)
{
iconvert(m_yXform, outbuf + m_yPackedOffset, outbuf + outOffset);
outOffset += sizeof(int);
}
if (m_zPackedOffset >= 0)
{
iconvert(m_zXform, outbuf + m_zPackedOffset, outbuf + outOffset);
outOffset += sizeof(int);
}
return outOffset;
}
else
return m_packedPointSize;
}