Java-Gaming.org Hi !
 Featured games (90) games approved by the League of Dukes Games in Showcase (777) Games in Android Showcase (231) games submitted by our members Games in WIP (856) games currently in development
 News: Read the Java Gaming Resources, or peek at the official Java tutorials
Pages: [1]
 ignore  |  Print
 exact ray box intersection  (Read 3922 times) 0 Members and 1 Guest are viewing this topic.
emzic

Senior Devvie

 « Posted 2007-02-06 14:19:46 »

hello, i just implemented ray box intersection like described here:

http://www.gamasutra.com/features/19991018/Gomez_6.htm

now this just returns me true or false, but i would need the exact intersection point(s) of the ray and the box?

is there an easy way to do it or will i have to test each of the 6 sides and then check if the results are part of the box?

thanks!
t_larkworthy

Senior Devvie

Medals: 1
Projects: 1

 « Reply #1 - Posted 2007-02-06 16:44:25 »

I am not sure it is directly possible from that code (especially given the possabiliity of multiple intersections), but I would not worry. The important thing is to reject no collision cases as fast as possible (which that code does really well). Actual collisions are much rarer and you can afford a bit more time on them.

Runesketch: an Online CCG built on Google App Engine where players draw their cards and trade. Fight, draw or trade yourself to success.
gideon

Senior Newbie

 « Reply #2 - Posted 2007-02-16 19:13:49 »

I don't know if you're still reading this but I might have some more to add. The separating axes theorem (which holds for any convex poly) in principle only gives you the distance between two convex polygons but it's not that hard to extend the algorithm. I'm currently working on that myself for convex polygons, so if you want a full algorithm, just ask.

For box line collisions you could have a look at the phys2d library (http://code.google.com/p/phys2d/), specifically the LineBoxCollider (http://phys2d.googlecode.com/svn/trunk/phys2d/src/net/phys2d/raw/collide/LineBoxCollider.java).