Professional Documents
Culture Documents
B 2 AABB
B 2 AABB
package Box2D.Collision{
import Box2D.Collision.*;
import Box2D.Collision.Shapes.b2Shape;
import Box2D.Common.b2Settings;
import Box2D.Common.Math.*;
import Box2D.Common.b2internal;
use namespace b2internal;
/**
* An axis aligned bounding box.
*/
public class b2AABB
{
/**
* Verify that the bounds are sorted.
*/
public function IsValid():Boolean{
//b2Vec2 d = upperBound - lowerBound;;
var dX:Number = upperBound.x - lowerBound.x;
var dY:Number = upperBound.y - lowerBound.y;
var valid:Boolean = dX >= 0.0 && dY >= 0.0;
valid = valid && lowerBound.IsValid() && upperBound.IsValid();
return valid;
}
var inv_d:Number;
var t1:Number;
var t2:Number;
var t3:Number;
var s:Number;
//x
{
if (absDX < Number.MIN_VALUE)
{
// Parallel.
if (pX < lowerBound.x || upperBound.x < pX)
return false;
}
else
{
inv_d = 1.0 / dX;
t1 = (lowerBound.x - pX) * inv_d;
t2 = (upperBound.x - pX) * inv_d;
/**
* Tests if another AABB overlaps this one.
*/
public function TestOverlap(other:b2AABB):Boolean
{
var d1X:Number = other.lowerBound.x - upperBound.x;
var d1Y:Number = other.lowerBound.y - upperBound.y;
var d2X:Number = lowerBound.x - other.upperBound.x;
var d2Y:Number = lowerBound.y - other.upperBound.y;
return true;
}