Пример #1
0
NODE_IMPLEMENTATION(transpose_mXX, Pointer)
{
    FixedArray*  Aarray = NODE_ARG_OBJECT(0, FixedArray);
    const Class* mtype  = static_cast<const Class*>(Aarray->type());
    FixedArray*  Carray = static_cast<FixedArray*>(ClassInstance::allocate(mtype));

    EigenMatXf A(Aarray->data<float>(), Aarray->size(0), Aarray->size(1));
    EigenMatXf C(Carray->data<float>(), Aarray->size(0), Aarray->size(1));

    C = A.transpose();
    NODE_RETURN(Carray);
}
Пример #2
0
TEST(Containers, ArrayBool)
{
	FixedArray<20, bool> array;
	FixedArray<20, bool> &cref = array;

	EXPECT_TRUE(array.empty());
	EXPECT_TRUE(cref.empty());
	EXPECT_EQ(array.size(), 0);
	EXPECT_EQ(cref.size(), 0);

	EXPECT_TRUE(array.push_back(true));
	EXPECT_FALSE(array.empty());
	EXPECT_FALSE(cref.empty());
	EXPECT_EQ(array.front(), true);
	EXPECT_EQ(cref.front(), true);
	EXPECT_TRUE(array.pop_back());
	EXPECT_FALSE(array.pop_back());
	EXPECT_TRUE(array.empty());
	EXPECT_TRUE(cref.empty());

	EXPECT_TRUE(array.push_back(false));
	EXPECT_TRUE(array.push_back(true));
	EXPECT_EQ(array.front(), false);
	EXPECT_EQ(cref.front(), false);
	EXPECT_EQ(array.back(), true);
	EXPECT_EQ(cref.back(), true);
	EXPECT_EQ(array.size(), 2);
	EXPECT_EQ(cref.size(), 2);

	array.clear();
	EXPECT_EQ(array.size(), 0);
	EXPECT_TRUE(array.empty());

	for(unsigned i=0; i< array.capacity(); i++)
		EXPECT_TRUE(array.push_back(i & 1));
	EXPECT_FALSE(array.push_back(-1));

	for(unsigned i=0; i < array.capacity(); i++)
	{
		EXPECT_EQ(array[i], int(i & 1));
		EXPECT_EQ(cref[i], int(i & 1));
	}

	for(unsigned i=0; i < array.capacity(); i++)
	{
		EXPECT_EQ(array.back(), int(array.capacity() - 1 - i) & 1);
		EXPECT_EQ(cref.back(), int(cref.capacity() - 1 - i) & 1);
		EXPECT_TRUE(array.pop_back());
	}
}
Пример #3
0
TEST(Containers, Array)
{
	FixedArray<20, int> array;
	FixedArray<20, int> &cref = array;

	EXPECT_TRUE(array.empty());
	EXPECT_TRUE(cref.empty());
	EXPECT_EQ(array.size(), 0);
	EXPECT_EQ(cref.size(), 0);

	EXPECT_TRUE(array.push_back(100));
	EXPECT_FALSE(array.empty());
	EXPECT_FALSE(cref.empty());
	EXPECT_EQ(array.front(), 100);
	EXPECT_EQ(cref.front(), 100);
	EXPECT_TRUE(array.pop_back());
	EXPECT_FALSE(array.pop_back());
	EXPECT_TRUE(array.empty());
	EXPECT_TRUE(cref.empty());

	EXPECT_TRUE(array.push_back(200));
	EXPECT_TRUE(array.push_back(300));
	EXPECT_EQ(array.front(), 200);
	EXPECT_EQ(cref.front(), 200);
	EXPECT_EQ(array.back(), 300);
	EXPECT_EQ(cref.back(), 300);
	EXPECT_EQ(array.size(), 2);
	EXPECT_EQ(cref.size(), 2);

	array.clear();
	EXPECT_EQ(array.size(), 0);
	EXPECT_TRUE(array.empty());

	for(unsigned i=0; i< array.capacity(); i++)
		EXPECT_TRUE(array.push_back(i));
	EXPECT_FALSE(array.push_back(-1));

	for(unsigned i=0; i < array.capacity(); i++)
	{
		EXPECT_EQ(array[i], int(i));
		EXPECT_EQ(cref[i], int(i));
	}

	for(unsigned i=0; i < array.capacity(); i++)
	{
		EXPECT_EQ(array.back(), int(array.capacity() - 1 - i));
		EXPECT_EQ(cref.back(), int(cref.capacity() - 1 - i));
		EXPECT_TRUE(array.pop_back());
	}
}
Пример #4
0
Rect BoundingBox::project2D(const Matrix4x4& projection) const
{
    Vector3 projMin = min;
    Vector3 projMax = max;
    
    //     2+------+3
    //     /|     /|
    //    / |    / |
    //   / 0+---/--+1
    // 6+------+7 /
    //  | /    | /
    //  |/     |/
    // 4+------+5

    FixedArray<Vector4, 8> corners;
    corners[0] = Vector4(projMin, 1.0);
    corners[1] = Vector4(projMax.x, projMin.y, projMin.z, 1.0);
    corners[2] = Vector4(projMin.x, projMax.y, projMin.z, 1.0);
    corners[3] = Vector4(projMax.x, projMax.y, projMin.z, 1.0);
    corners[4] = Vector4(projMin.x, projMin.y, projMax.z, 1.0);
    corners[5] = Vector4(projMax.x, projMin.y, projMax.z, 1.0);
    corners[6] = Vector4(projMin.x, projMax.y, projMax.z, 1.0);
    corners[7] = Vector4(projMax, 1.0);
   
    Rect rect;
    for(unsigned int i = 0; i < corners.size(); ++i)
    {
        Vector4 projected = projection * corners[i];
        rect.mergePoint(Vector2(projected.x / projected.w, projected.y / projected.w));
    }

    return rect;
}