我有一个功能,但效果不佳
有椭圆
g.setColor(Color.BLACK);
g.fillOval(irx, iry, 10, 10);
g.setColor(raco);
g.fillOval(irx+1, iry+1, 8, 8);
g.setColor(Color.black);
g.drawOval(myX, myY, w, h);
g.setColor(setco);
g.fillOval(myX+1, myY+1, w-1, w-1);
有功能
eated = isCollision( myX, myY, w, irx,iry,10);
private static boolean isCollision(double a1, double b1, float r1, double a2, double b2, float r2)
{
/*double x1, y1, x2, y2;
x1 = a1 + r1/2;
y1 = b1 - r1/2;
x2 = a2 + r2/2;
y2 = b2 - r2/2;*/
float a,dx, dy;
a = (r1+r2) * (r1+r2);
dx = (float) (a1 - a2);
dy = (float) (b1 - b2);
if (a > (dx*dx) + (dy*dy))
{
return true;
}
return false;
}
我有一个功能很好,谢谢你,祝你有个美好的一天! ! !
答案 0 :(得分:1)
打开我的心灵感应模块。
AFAIR fillOval
/ isCollision
获取左上角,高度和椭圆形边框的坐标。而你的tasklist
获得了圈子的中心和半径。
您应该将一个转换为另一个。记住centerX = topLeftX + width / 2。