Exemplo n.º 1
0
TEST_F(Vector2Test, dot_product_with_perp_vector_is_zero)
{
    auto perp_vec = perp_vector(random_vector);

    EXPECT_EQ(0.0, dot_product(random_vector, perp_vec));
    EXPECT_EQ(0.0, dot_product(perp_vec, random_vector));
}
Exemplo n.º 2
0
TEST_F(Vector2Test, perpendicular_vector_is_zero_vector_for_zero_vector)
{
    const Math::Vec2d vector;
    auto perp_vec = perp_vector(vector);

    EXPECT_EQ(0.0, perp_vec[0]);
    EXPECT_EQ(0.0, perp_vec[1]);
}
Exemplo n.º 3
0
/*--
Cat lbxgl;Entity;Query
Form
	int LBXGL_Entity_QueryLine(LBXGL_Entity *ents, \
	LBXGL_Entity **array, int max, \
	double *start, double *end);
Description
	Query entities which intersect with the line defined by start and end.

	array is used to hold the query results, and max is the maximal \
	number of entities that can be placed in array (at least max+1 \
	entries should exist within array to handle the trailing NULL).

	This returns the number of entities placed in array.
--*/
int LBXGL_Entity_QueryLine(LBXGL_Entity *ents,
                           LBXGL_Entity **array, int max,
                           double *start, double *end)
{
    LBXGL_Entity *cur;
    int i, j;
    double *corg, *cmins, *cmaxs;
    double crad, dx, dy, dz, dl, de;
    double dir[3], px[3], py[3];
    double rorg[3];

    for(i=0; i<3; i++)dir[i]=end[i]-start[i];
    vecnorm(dir);
    perp_vector(dir, px);
    veccross(dir, px, py);

    for(i=0; i<3; i++)rorg[i]=end[i]-start[i];
    de=vecdot(rorg, dir);

    cur=ents;
    i=0;
    while(cur && (i<max))
    {
        corg=LBXGL_Entity_GetProperty(cur, "origin");
        if(!corg)
        {
            cur=cur->next;
            continue;
        }

        for(j=0; j<3; j++)rorg[j]=corg[j]-start[j];
        dx=vecdot(rorg, px);
        dy=vecdot(rorg, py);
        dz=vecdot(rorg, dir);
        dl=sqrt((dx*dx)+(dy*dy));

        crad=LBXGL_Entity_GetRadius(cur);
        if((dl<=crad) && (dz>=0) && (dz<=de))
        {
            array[i++]=cur;
            array[i]=NULL;
        }

        cur=cur->next;
    }
    return(i);
}
Exemplo n.º 4
0
TEST_F(Vector2Test, perpendicular_vector_of_non_zero_vector_is_non_zero)
{
    auto perp_vec = perp_vector(random_vector);

    EXPECT_TRUE(perp_vec[0] != 0.0 || perp_vec[1] != 0.0);
}
Exemplo n.º 5
0
typename quan::meta::binary_op<quan::two_d::vect<T>, quan::meta::times, float>::type
 operator() (quan::two_d::vect<T> const & in) const
 {
    return  in * m_cos_theta + perp_vector(in) * m_sin_theta;
 }