X-Git-Url: https://git.ucc.asn.au/?p=ipdf%2Fcode.git;a=blobdiff_plain;f=src%2Fquadtree.cpp;h=2aace7acc912dd8d723241ed9252e5f7ae2f9bf4;hp=04630b7cf34862850e518e2cb0b86b911289c686;hb=e35bf651e7ebfe4932e877780bb00397c41a7ec2;hpb=9636515f1137c2d9765b7ccaa253b28ba84963b5;ds=sidebyside diff --git a/src/quadtree.cpp b/src/quadtree.cpp index 04630b7..2aace7a 100644 --- a/src/quadtree.cpp +++ b/src/quadtree.cpp @@ -24,10 +24,6 @@ Rect TransformToQuadChild(const Rect& src, QuadTreeNodeChildren child_type) Rect TransformFromQuadChild(const Rect& src, QuadTreeNodeChildren child_type) { Rect dst = src; - dst.x *= 0.5; - dst.y *= 0.5; - dst.w *= 0.5; - dst.h *= 0.5; if (child_type == QTC_BOTTOM_LEFT || child_type == QTC_BOTTOM_RIGHT) { dst.y += 1; @@ -36,10 +32,14 @@ Rect TransformFromQuadChild(const Rect& src, QuadTreeNodeChildren child_type) { dst.x += 1; } + dst.x *= 0.5; + dst.y *= 0.5; + dst.w *= 0.5; + dst.h *= 0.5; return dst; } -bool ContainedInQuadChild(const Rect& src, QuadTreeNodeChildren child_type) +bool IntersectsQuadChild(const Rect& src, QuadTreeNodeChildren child_type) { Rect std = {0,0,1,1}; Rect dst = TransformFromQuadChild(std, child_type); @@ -47,6 +47,19 @@ bool ContainedInQuadChild(const Rect& src, QuadTreeNodeChildren child_type) if (src.y + src.h < dst.y) return false; if (src.x > dst.x + dst.w) return false; if (src.y > dst.y + dst.h) return false; + Debug("%s is contained in %s\n", src.Str().c_str(), dst.Str().c_str()); + return true; +} + +bool ContainedInQuadChild(const Rect& src, QuadTreeNodeChildren child_type) +{ + Rect std = {0,0,1,1}; + Rect dst = TransformFromQuadChild(std, child_type); + if (src.x < dst.x) return false; + if (src.y < dst.y) return false; + if (src.x + src.w > dst.x + dst.w) return false; + if (src.y + src.h > dst.y + dst.h) return false; + Debug("%s is contained in %s... \n", src.Str().c_str(), dst.Str().c_str()); return true; }