OBBs have position (x, y), speed (x, y), and orientation (matrix). With periodic updates, the OBBs should collide with each other, returning the portion of the move that was deemed successful.
I looked at the Polygon test on the GPWiki - http://gpwiki.org/index.php/Polygon_Collision - but it does not take into account moving objects or an object that is completely in the OBB.
Real-time collision detection covers the 3D OBB in Chapter 4: Merging volumes, but the test method in three dimensions is noticeably more complex than in 2D.
, (SAT). SAT 2 . . 3D.
EDIT:
, . , .
, , normal , .
, , , , . , .
, , , , . , 2 4 . 4- , , , , , .
4 , , .
( , , ):
, - 4 # 1 # 2, , - 4 # 2 # 1. :
, # 1, , v, 4 # 2 - v1... v4. 5 №2. ( u M, u M-: M ^ T u, , ). 2- , # 2 ', - , v'.
- # 1- # 2 - stop, . - .
(, ? , , , 3 ?), gazillions , , .
, , , - " " . ( ). , : , /.
(edit:) , .
(.. ) (, , "" ), :
: ( , ) :
...test for intersections between the OBB edges... if any intersections are found{ ...run code for when OBBs are partially overlapping... }else{ P = line segment whose endpoints are the OBB centers; ...test for intersections between P and OBB edges... if P intersects edges of both OBBs{ ...run code for when OBBs are not touching... }else{ ...run code for when one OBB is completely inside the other... } }
2d, 3d . , . 2D, , . , , , , (3 ). 3d . . , . , , .
, , . , , . , , , , , , , , - .
You should probably implement quadtree (see wikipedia ) to track all objects on a plane. Unfortunately, I never implemented it to detect conflicts, but it seems that other people were able to create similar scenarios for you using ATVs.