1

パラメータ(Point Begin、Point End、Color c)を持つ楕円オブジェクトのリストがあります。ここで、楕円に当たった場合にどこかをクリックしたときに確認したいと思います。

私はまた、すでに機能し、次のような長方形でこれを行います:

 case 3: // Rectanglefill
        return p.X >= Begin.X && p.X <= End.X && p.Y >= Begin.Y && p.Y <= End.Y;

このメソッドでは、ヒットした場合はブール値 True を返し、マウス クリックがヒットしなかった場合は False のみを返します。

楕円の場合、私はすでにこれを持っています:

case 4: // Ellipsfill
/*  int radiusx = Math.Abs(End.X - Begin.X) / 2;
    int radiusy = Math.Abs(End.Y - Begin.Y) / 2;
    int midpointx = (Begin.X + End.X) / 2;
    int midpointy = (Begin.Y + End.Y) / 2;

return ((Math.Pow((p.X -midpointx) / radiusx, 2) + Math.Pow((p.Y - midpointy) / radiusy, 2)) > 1);

しかし、これはうまくいきません。

4

1 に答える 1

0

あなたの方程式はOKです。代わりに<1(または<=1楕円上の点を含めたい場合は)>1

case 4: // Ellipsfill
    double radiusx = Math.Abs((double)End.X - (double)Begin.X) / 2.0;
    double radiusy = Math.Abs((double)End.Y - (double)Begin.Y) / 2.0;
    double midpointx = ((double)Begin.X + (double)End.X) / 2.0;
    double midpointy = ((double)Begin.Y + (double)End.Y) / 2.0;

return ((Math.Pow((p.X -midpointx) / radiusx, 2) + Math.Pow((p.Y - midpointy) / radiusy, 2)) < 1.0);
于 2012-11-06T22:13:26.560 に答える