2013-03-07 3 views
2

선형 보간법을 사용하여 커서를 이동하려고합니다. 내 문제는 x가 변경된다는 사실에도 불구하고 y0 + (y1 - y0) * ((x - x0)/(x1 - x0))의 값이 절대로 변경되지 않는다는 것입니다. 나는 내가 무엇을 잃어버린 것인지 알 수 없다.식의 값이 변경되지 않습니다.

public void MoveCursor(int x1, int y1) 
    { 
     int y, y0, x, x0; 

     y0 = Cursor.Position.Y; 
     x0 = Cursor.Position.X; 

     for (x = x0; x > x1; x--) 
     { 
      y = y0 + (y1 - y0) * ((x - x0)/(x1 - x0)); 

      this.Cursor = new Cursor(Cursor.Current.Handle); 
      Cursor.Position = new Point(x,y); 
      Cursor.Clip = new Rectangle(this.Location, this.Size); 

      Console.Out.WriteLine("X:{0} Y:{1}", x, y); 

      System.Threading.Thread.Sleep(100); 

     } 
    } 
+1

당신이 그 방법을 디버깅하려고 했습니까? – MarcinJuraszek

+14

'/'는 피연산자가 정수인 경우 실수 나누기가 아닌 부동 소수점 나누기입니까? –

+0

에릭 : 정확히 고마워요. 이제 작동합니다. –

답변

0

시도하여 수레 :

y = (int)(y0 + (float)(y1 - y0) * (x - x0)/(x1 - x0)); 
+0

분모에 플로트를 사용하는 것도 중요합니다. – ja72

+0

작업 * 및 /가 순서대로 실행됩니다. 'float'과'int' 사이에 연산이 이루어 지자 마자'int'가 먼저'float'으로 변환 될 것입니다. –

관련 문제