2012-09-02 4 views
1

나는 4 개의 벽과 각각의 10 개의 공에서 충돌을 테스트하는 간단한 자바 애플리케이션을 가지고있다. 나는 벽을 알아 냈지만 원을 그리는 원은 나를 위해 작동하지 않는다. 이 프로그램을 나머지 프로그램과 함께 실행할 때 나는 매우 불안정한 10 개의 서클 (그 자체가 충돌하는 것처럼 보임)을 얻었으며 전혀 움직이지 않는다. 이 세그먼트를 꺼내면 10 개의 원이 부드럽게 움직이며 4 개의 벽에서 충돌합니다. 누군가가 문제의 원인을 알 수 있습니까? 감사이 원 - 투 - 원 충돌에 문제가 있습니까?

for (int j = 0; j < ballnum; ++j) { 
    for (int k = 0; k < ballnum; ++k) { 
     if (Math.sqrt((Math.pow(balls[j].givebackpoint().x - balls[k].givebackpoint().x, 2)) 
      + (Math.sqrt(Math.pow(balls[j].givebackpoint().y - balls[k].givebackpoint().y, 2)))) <= 2 * RADIUS) { 
      if (balls[j].givebackangle() >= 180) { 
       balls[j].setangle(balls[j].givebackangle()-180); 
             } 
      else{ 
       balls[j].setangle(360-balls[j].givebackangle()); 
       } 
      } 
     } 
    } 

답변

2

각 공을 자체 점검하고 있습니다.

if (j == k) 
    continue; 
+0

아직 그것을 해결하지 않는 것 :

당신은 j는 == 루프에 대한 내부의 상단과 같은 라인 케이 때 테스트를 실행 생략해야합니다. 나는 네가하는 말을 이해한다. 나는 그걸로 계속 놀고 나중에 다시 게시 할 것입니다 ... – jmendegan

+0

각도 수정 코드가 맞습니까? 나는 그것을 알아낼 수 없다. ... – Raceimaztion

+0

나는 완전히 확신하지 못한다. 그것은 그것이 나에게 맞을 것 같았다. 하지만 어떻게 할 건데? 그냥 호기심이 – jmendegan

2

내가 누락하지 않는 한, 당신은 어디 j == k 건너 뛰는 것처럼 보이지 않는다. 그래서 당신들은 그들이 자신들과 충돌하고 있다는 것입니다.