Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

Possibly a dumb question, but do planes stretch on to infinity? I can't define a spanning area for it, and would have to do some sort of check for collisions like if(x intersects BoundingBox and Plane?

Edit: I'm trying to do wall collision and would like to take into account diagonal walls, which would be impossible for bounding boxes as they are axis aligned.

share|improve this question
2  
It might help if you said what you are actually trying to do here, as there may be other solutions that work better. –  Darth Satan Mar 17 '13 at 9:48

2 Answers 2

A plane is only defined by a normal vector and a position. The position is the 'center' of the plan and the normal vector is where 'up' is. Other than that a plane has no bounds, it is indeed infinite. If you would just like a square piece of ground (or wall or whatever) you should just use BoundingBox since they have a position and bounds so they should suit your needs.

share|improve this answer

It sounds like you already conceived of using planes to define arbitrarily shaped regions. It's not necessarily the most efficient method, but you can use them for collision detection. The planes can represent half-spaces, informally meaning that one half of space is on one side of the plane.

An axis-aligned bounding box is a specific case of using six halfspaces, two for each axis with opposite directions. If a point is on the positive side of all six planes, it is within the bounding box. If a point is on the wrong side of any plane, you immediately know it does not intersect the box, and you can skip further checks.

The same method can be used for an oriented bounding box (different plane normals) or for shapes other than rectangular prisms. Wikipedia calls them convex polytopes.

convex polytope

So for your purposes, you could use planes to define your diagonal walls. Planes are purple, your player is red.

diagonal wall sketch

If your player's position, projected onto the plane's normal vector (dot product), is less than the plane's distance from the origin in the direction of its normal (accounting for some radius of size of the player), then that player has not collided with the wall. If it exceeds that check value, then you know the distance and direction to push your player back out of collision.

Unforuntely, you don't get the early-exit benefit because you aren't using convex shapes, but you can still accomplish what you want.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.