我怎么知道两个矩形相交的位置?
How can I know where two rectangles intersected?
我的 android 项目中有 2 个矩形交集(一个比另一个大)有问题。我使用了 Rect.intersects(rect1,rect2) 方法,它工作正常但我应该知道它相交的地方。比如rect1.right和rect2.left相交等等,有什么办法可以解决这个问题吗?Example
我写过类似的东西来检测顶部或底部。但它给了我 2 或 5 个像素的错误。
if (Rect.intersects(rect2,rect1)){
//rect1 is smaller one
if (rect1.exactCenterY()<rect2.exactCenterY() - rect2.height()/2||
rect1.exactCenterY()>rect.exactCenterY() + rect2.height()/2){
//It is top or bottom
doSomething();
}else{
doSomething();
}
}
希望大家多多指教或者其他解决方法
如果您使用的是矩形 class:
int x = (int) rect1.intersection(rect2).getX();
int y = (int) rect1.intersection(rect2).getY();
方法交集returns交集矩形。读出那个矩形。希望这有帮助。
找到了!感谢您的建议。但重要的是你还应该处理矩形角的交集。
if(rect2.setIntersects(rect2,rect1)){
if(rect2.left!=rect1.left){
//do something
}else if(rect2.right!=rect1.right){
//do something
}// and so on
}
我的 android 项目中有 2 个矩形交集(一个比另一个大)有问题。我使用了 Rect.intersects(rect1,rect2) 方法,它工作正常但我应该知道它相交的地方。比如rect1.right和rect2.left相交等等,有什么办法可以解决这个问题吗?Example
我写过类似的东西来检测顶部或底部。但它给了我 2 或 5 个像素的错误。
if (Rect.intersects(rect2,rect1)){
//rect1 is smaller one
if (rect1.exactCenterY()<rect2.exactCenterY() - rect2.height()/2||
rect1.exactCenterY()>rect.exactCenterY() + rect2.height()/2){
//It is top or bottom
doSomething();
}else{
doSomething();
}
}
希望大家多多指教或者其他解决方法
如果您使用的是矩形 class:
int x = (int) rect1.intersection(rect2).getX();
int y = (int) rect1.intersection(rect2).getY();
方法交集returns交集矩形。读出那个矩形。希望这有帮助。
找到了!感谢您的建议。但重要的是你还应该处理矩形角的交集。
if(rect2.setIntersects(rect2,rect1)){
if(rect2.left!=rect1.left){
//do something
}else if(rect2.right!=rect1.right){
//do something
}// and so on
}