求交集算法:我觉得首先要进行碰撞检测(看是否有交集)
如果有,就取到他们相交的矩形。
class R
{
int x,y,width,height;
public R(int X,int Y,int Width,int Height)
{
x=X;
y=Y;
width=Width;
height=Height;
}
}
public class test
{
R fun(R r1,R r2)
{
R temp;
if((r1.x+width>=r2.x)&&(r1.y+height>=r2.y)&&(r2.x+r2.width>=r1.x)&&(r2.y+r2.height>=y))//判断相交否
{
temp.x=r1.x;
temp.y=max(r1.y,r2.y);
temp.width=min(r1.x+width,r2.x+width)-r1.x;
temp.height=min(r1.y+height,r2.y+height)-max(r1.y,r2.y);
}
else
System.out.println("不相交!");
return temp;
}
public static void main(String[] args)
{
R rr1=new R10,39,40,34);
R rr2=new R(32,23,32,43);
if(rr1.x<rr2.y)
fun(rr1,rr2);
else
fun(rr2,rr1);
}
}
如果有,就取到他们相交的矩形。
class R
{
int x,y,width,height;
public R(int X,int Y,int Width,int Height)
{
x=X;
y=Y;
width=Width;
height=Height;
}
}
public class test
{
R fun(R r1,R r2)
{
R temp;
if((r1.x+width>=r2.x)&&(r1.y+height>=r2.y)&&(r2.x+r2.width>=r1.x)&&(r2.y+r2.height>=y))//判断相交否
{
temp.x=r1.x;
temp.y=max(r1.y,r2.y);
temp.width=min(r1.x+width,r2.x+width)-r1.x;
temp.height=min(r1.y+height,r2.y+height)-max(r1.y,r2.y);
}
else
System.out.println("不相交!");
return temp;
}
public static void main(String[] args)
{
R rr1=new R10,39,40,34);
R rr2=new R(32,23,32,43);
if(rr1.x<rr2.y)
fun(rr1,rr2);
else
fun(rr2,rr1);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货