2012-11-06 2 views
1

나는 (Point Begin, Point End, Color c) 매개 변수가있는 타원 개체 목록이 있습니다. 이제 저는 타원형을 치면 어딘가를 클릭 할 때를 보장하고 싶습니다. '마우스 클릭 didn를하면 나는 타격과 거짓이있는 경우 I 만 부울 True를 반환하려면이 방법목록에서 타원 개체를 클릭하는 방법은 무엇입니까?

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

: 이미 작동하고 다음과 같이 보입니다 나는 또한 사각형이 작업을 수행

t는 무언가를 때렸다.

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

하지만이 작동하지 않습니다

이제 타원 나는 이미이 있습니다. 당신이 코드의 일부를 댓글을 달았 그것은 목적에 귀하의 방정식은 괜찮

+0

<1을 넣어 가지고 있습니까? – Pedryk

답변

0

, 당신은 단지 (당신이 타원에 지점을 포함 할 경우 또는 <=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); 
+0

나는 그것을 시도했지만 작동하지 않는 것 같습니다. –

+0

float 또는 double 대신 정수를 사용 했으므로 정수 나누기를 사용하고있었습니다. 모든 것이 double로 변환되면 코드를 사용해보십시오. 편집 된 코드를 사용해보십시오. –

+0

작동합니다! : D thx for you help –

관련 문제