我怎么检查ather里面是否有一个椭圆形?

时间:2015-06-19 14:10:55

标签: java

我有一个功能,但效果不佳

有椭圆

    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;
}

我有一个功能很好,谢谢你,祝你有个美好的一天! ! !

1 个答案:

答案 0 :(得分:1)

打开我的心灵感应模块。

AFAIR fillOval / isCollision获取左上角,高度和椭圆形边框的坐标。而你的tasklist获得了圈子的中心和半径。

您应该将一个转换为另一个。记住centerX = topLeftX + width / 2。