Collision Detection probelm (intersection with plane)

Posted by Demi on Stack Overflow See other posts from Stack Overflow or by Demi
Published on 2010-04-30T16:34:23Z Indexed on 2010/04/30 16:37 UTC
Read the original article Hit count: 201

Filed under:
|

I'm doing a scene using openGL (a house). I want to do some collision detection, mainly with the walls in the house. I have tried the following code:

// a plane is represented with a normal and a position in space
Vector planeNor(0,0,1);
Vector position(0,0,-10);
Plane p(planeNor,position);

Vector vel(0,0,-1);

double lamda; // this is the intersection point
Vector pNormal; // the normal of the intersection

// this method is from Nehe's Lesson 30
coll= p.TestIntersionPlane(vel,Z,lamda,pNormal); 

glPushMatrix();
glBegin(GL_QUADS);
if(coll)
glColor3f(1,0,0);
else
glColor3f(1,1,1);
glVertex3d(0,0,-10);
glVertex3d(3,0,-10);
glVertex3d(3,3,-10);
glVertex3d(0,3,-10);
glEnd();
glPopMatrix();

Nehe's method:

#define EPSILON 1.0e-8

#define ZERO EPSILON
bool Plane::TestIntersionPlane(const Vector3 & position,const Vector3 & direction, double& lamda, Vector3 & pNormal)
{
    double DotProduct=direction.scalarProduct(normal);          // Dot Product Between Plane Normal And Ray Direction
    double l2;

    // Determine If Ray Parallel To Plane
    if ((DotProduct<ZERO)&&(DotProduct>-ZERO))
        return false;

    l2=(normal.scalarProduct(position))/DotProduct; // Find Distance To Collision Point

    if (l2<-ZERO)                           // Test If Collision Behind Start
        return false;

    pNormal= normal;
    lamda=l2;
    return true;
}

Z is initially (0,0,0) and every time I move the camera towards the plane, I reduce its z component by 0.1 (i.e. Z.z-=0.1 ). I know that the problem is with the vel vector, but I can't figure out what the right value should be. Can anyone please help me?

© Stack Overflow or respective owner

Related posts about opengl

Related posts about collision-detection