本文整理汇总了C++中UIntArray::add方法的典型用法代码示例。如果您正苦于以下问题:C++ UIntArray::add方法的具体用法?C++ UIntArray::add怎么用?C++ UIntArray::add使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UIntArray
的用法示例。
在下文中一共展示了UIntArray::add方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
TEST(ArrayTest, ExtractElementsFromIndexedArray)
{
/// source = {2.0, 5.5, 100.0}
/// perItemSourceIndices = { 0, 2, 1, 0, 2}
/// -> output = {2.0, 100.0, 5.5, 2.0, 100.0}
FloatArray source;
source.reserve(3);
source.add(2.0f);
source.add(5.5f);
source.add(100.0f);
UIntArray indices;
indices.reserve(5);
indices.add(0);
indices.add(2);
indices.add(1);
indices.add(0);
indices.add(2);
ref<FloatArray> arr = source.extractElements(indices);
ASSERT_EQ(5, arr->size());
EXPECT_FLOAT_EQ( 2.0, arr->get(0));
EXPECT_FLOAT_EQ(100.0, arr->get(1));
EXPECT_FLOAT_EQ( 5.5, arr->get(2));
EXPECT_FLOAT_EQ( 2.0, arr->get(3));
EXPECT_FLOAT_EQ(100.0, arr->get(4));
}
示例2: createPatch
//--------------------------------------------------------------------------------------------------
/// Create a 2D patch
///
/// \param origin The start point of the patch
/// \param uUnit Direction vector u. First point 'to the right of' origin is origin + uUnit.
/// \param vUnit Direction vector v. Coordinates of first point 'above' origin is origin + vunit.
/// \param uCellCount The number of cells/quads to generate along the uUnit dimension.
/// \param vCellCount The number of cells/quads to generate along the vUnit dimension.
/// \param builder Geometry builder to use when creating geometry
///
/// The figure below illustrates how the patch is constructed from the specified parameters.
///
/// <PRE>
/// v8-----v9----v10----v11 Parameters: Resulting vertices:
/// | | | | origin = (10,20,0) v0 = (10,20,0)
/// origin | | | | uUnit = (2,0,0) v1 = (12,20,0)
/// + vunit v4-----v5-----v6-----v7 |y vUnit = (0,1,0) v2 = (14,20,0)
/// | | | | | uCellCount = 3 v3 = (16,20,0)
/// | | | | | vCellCount = 2 v4 = (10,21,0)
/// v0-----v1-----v2-----v3 *----x v5 = (12,21,0)
/// origin origin :
/// + uUnit </PRE>
///
/// The following quad connectivities will be produced:\n
/// <TT> (v4,v0,v1,v5) (v5,v1,v2,v6) (v6,v2,v3,v5) ... (v10,v6,v7,v11)</TT>
//--------------------------------------------------------------------------------------------------
void GeometryUtils::createPatch(const Vec3f& origin, const Vec3f& uUnit, const Vec3f& vUnit, uint uCellCount, uint vCellCount, GeometryBuilder* builder)
{
CVF_ASSERT(uCellCount > 0);
CVF_ASSERT(vCellCount > 0);
uint numVertices = (uCellCount + 1)*(vCellCount + 1);
uint numQuads = uCellCount*vCellCount;
Vec3fArray vertices;
vertices.reserve(numVertices);
uint u, v;
for (v = 0; v <= vCellCount; v++)
{
for (u = 0; u <= uCellCount; u++)
{
vertices.add(origin + static_cast<float>(u)*uUnit + static_cast<float>(v)*vUnit);
}
}
uint baseNodeIdx = builder->addVertices(vertices);
UIntArray conn;
conn.reserve(4*numQuads);
for (v = 0; v < vCellCount; v++)
{
for (u = 0; u < uCellCount; u++)
{
conn.add(baseNodeIdx + u + (v + 1)*(uCellCount + 1));
conn.add(baseNodeIdx + u + v*(uCellCount + 1));
conn.add(baseNodeIdx + u + 1 + v*(uCellCount + 1));
conn.add(baseNodeIdx + u + 1 + (v + 1)*(uCellCount + 1));
}
}
builder->addQuads(conn);
}
示例3:
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
TEST(MeshEdgeExtractorTest, ThreeQuadsFromUIntArray)
{
// 3------4------5 9------8
// | | | | |
// | | | | |
// 0------1------2 6------7
MeshEdgeExtractor ee;
// Two connected quads
{
UIntArray q;
q.reserve(2*4);
// Observe different winding
q.add(0); q.add(1); q.add(4); q.add(3);
q.add(1); q.add(4); q.add(5); q.add(2);
ee.addPrimitives(4, q);
}
// Single loose quad
{
UIntArray q;
q.reserve(4);
q.add(6); q.add(7); q.add(8); q.add(9);
ee.addPrimitives(4, q);
}
ref<UIntArray> li = ee.lineIndices();
ASSERT_EQ(2*11, li->size());
EXPECT_EQ(0, li->get(0)); EXPECT_EQ(1, li->get(1));
EXPECT_EQ(0, li->get(2)); EXPECT_EQ(3, li->get(3));
EXPECT_EQ(1, li->get(4)); EXPECT_EQ(2, li->get(5));
EXPECT_EQ(1, li->get(6)); EXPECT_EQ(4, li->get(7));
EXPECT_EQ(2, li->get(8)); EXPECT_EQ(5, li->get(9));
EXPECT_EQ(3, li->get(10)); EXPECT_EQ(4, li->get(11));
EXPECT_EQ(4, li->get(12)); EXPECT_EQ(5, li->get(13));
EXPECT_EQ(6, li->get(14)); EXPECT_EQ(7, li->get(15));
EXPECT_EQ(6, li->get(16)); EXPECT_EQ(9, li->get(17));
EXPECT_EQ(7, li->get(18)); EXPECT_EQ(8, li->get(19));
EXPECT_EQ(8, li->get(20)); EXPECT_EQ(9, li->get(21));
}
示例4: ee
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
TEST(OutlineEdgeExtractorTest, PrimitiveMixFromFaceList)
{
ref<Vec3fArray> va = new Vec3fArray;
va->resize(13);
va->set( 0, Vec3f(0, 0, 0));
va->set( 1, Vec3f(1, 0, 0));
va->set( 2, Vec3f(2, 0, 0));
va->set( 3, Vec3f(3, 0, 0));
va->set( 4, Vec3f(4, 1, 0));
va->set( 5, Vec3f(3, 2, 0));
va->set( 6, Vec3f(2, 2, 0));
va->set( 7, Vec3f(1, 1, 0));
va->set( 8, Vec3f(0, 1, 0));
va->set( 9, Vec3f(5, 1, 0));
va->set(10, Vec3f(5, 0, 0));
va->set(11, Vec3f(6, 6, 0));
va->set(12, Vec3f(7, 7, 0));
//
// *11
// *12
// 8------7 4-----9
// | |\ |
// | | \ |
// 0------1--2 10
UIntArray fl;
fl.reserve(26);
fl.add(1); fl.add(11);
fl.add(1); fl.add(12);
fl.add(2); fl.add(4); fl.add(9);
fl.add(2); fl.add(10); fl.add(9);
fl.add(3); fl.add(1); fl.add(2); fl.add(7);
fl.add(4); fl.add(0); fl.add(1); fl.add(7); fl.add(8);
ASSERT_EQ(19, fl.size());
OutlineEdgeExtractor ee(0, *va);
ee.addFaceList(fl);
UIntArray li = *ee.lineIndices();
ASSERT_EQ(2*7, li.size());
EXPECT_TRUE( EdgeKey(0, 1) == EdgeKey(li[ 0], li[ 1]) );
EXPECT_TRUE( EdgeKey(0, 8) == EdgeKey(li[ 2], li[ 3]) );
EXPECT_TRUE( EdgeKey(1, 2) == EdgeKey(li[ 4], li[ 5]) );
EXPECT_TRUE( EdgeKey(2, 7) == EdgeKey(li[ 6], li[ 7]) );
EXPECT_TRUE( EdgeKey(4, 9) == EdgeKey(li[ 8], li[ 9]) );
EXPECT_TRUE( EdgeKey(7, 8) == EdgeKey(li[10], li[11]) );
EXPECT_TRUE( EdgeKey(9,10) == EdgeKey(li[12], li[13]) );
/*
// 6----5
// / \ *11
// / \ *12
// 8------7 4-----9
// | |\ / |
// | | \ / |
// 0------1--2----3 10
fl.add(1); fl.add(11);
fl.add(1); fl.add(12);
fl.add(2); fl.add(4); fl.add(9);
fl.add(2); fl.add(10); fl.add(9);
fl.add(3); fl.add(1); fl.add(2); fl.add(7);
fl.add(4); fl.add(0); fl.add(1); fl.add(7); fl.add(8);
fl.add(6); fl.add(2); fl.add(3); fl.add(4); fl.add(5); fl.add(6); fl.add(7);
ASSERT_EQ(26, fl.size());
OutlineEdgeExtractor ee(0, *va);
ee.addFaceList(fl);
UIntArray li = *ee.lineIndices();
ASSERT_EQ(2*11, li.size());
EXPECT_TRUE( EdgeKey(0, 1) == EdgeKey(li[ 0], li[ 1]) );
EXPECT_TRUE( EdgeKey(0, 8) == EdgeKey(li[ 2], li[ 3]) );
EXPECT_TRUE( EdgeKey(1, 2) == EdgeKey(li[ 4], li[ 5]) );
EXPECT_TRUE( EdgeKey(2, 3) == EdgeKey(li[ 6], li[ 7]) );
EXPECT_TRUE( EdgeKey(3, 4) == EdgeKey(li[ 8], li[ 9]) );
EXPECT_TRUE( EdgeKey(4, 5) == EdgeKey(li[10], li[11]) );
EXPECT_TRUE( EdgeKey(4, 9) == EdgeKey(li[12], li[13]) );
EXPECT_TRUE( EdgeKey(5, 6) == EdgeKey(li[14], li[15]) );
EXPECT_TRUE( EdgeKey(6, 7) == EdgeKey(li[16], li[17]) );
EXPECT_TRUE( EdgeKey(7, 8) == EdgeKey(li[18], li[19]) );
EXPECT_TRUE( EdgeKey(9,10) == EdgeKey(li[20], li[21]) );
*/
}