2017-03-21 3 views
-1

그러나 이것은 매우 간단한 질문 일 수 있습니다. 그러나이 코드를 8 시간 이상 작성하여 두뇌가 약간 두꺼워졌습니다. 기본적으로, 나는 다음과 같은 프레임을 가지고 있습니다. (http://imgur.com/a/DFSI5)JFrame에서 주어진 각도/창 크기를 조정하는 좌표

만약 당신이 내 조잡한 그림을 변명한다면, 나는 수학에 대해 궁금해하고 있습니다. 각도 Θ를 감안할 때, 내가하고 싶은 것은 특정 점 객체가 주어진 총알이 될 것입니다. 주어진 각도를 따라 움직이기 위해 x/y 좌표를 병렬로 조정하는 방법은 무엇입니까? JFrame에는 700x500의 창 크기가 있습니다. 나는 필요한 경우 pastebin에 코드를 게시 하겠지만이 질문은 순수한 산술 (sin/cos/tan)과 관련이 있다고 느꼈다.

는 기본적으로 나는이있다 :

 if(pinballAngle > 90){ 
      pinballCoordinate.x+=(pinballAngle/3); 
      pinballCoordinate.y-=20; 
     } 
     else if(pinballAngle < 90){ 
      pinballCoordinate.x+=(pinballAngle/3); 
      pinballCoordinate.y-=20; 
     } 
     else{ 
      pinballCoordinate.y-=20; 
     } 

그래서 pinballCoordinate 내가 세타의 각도 주어진 조정하기 위해 노력하고 포인트 객체입니다, 즉 핀볼을 쏘는 '총'입니다. 'pinballAngle'변수는 총의 각도입니다.

+0

당신은 자바에 사인과 코사인을 해결하는 방법을 요구하는지? –

+0

그래서 문제는 문제 다음의 선형 경로로 이어질 수 있습니다. 즉, 출발점이 있고 각도가 있고 출발점에서 멀리 떨어진 경로를 따라 가려고합니다. 여기에서 원점을 계산하여 목표 지점을 생성 한 다음 그 점들 사이의 직선을 따라갈 필요가 있습니다. P - 아마도 약간 뒤얽힌 것일 수 있지만, 내가 알고있는 것들로 돌아갑니다. 이와 같은 문제를 제시 할 때 해결하십시오.) – MadProgrammer

+0

인용 된 예제 [here] (http://stackoverflow.com/a/4550667/230513)를 참조하십시오. – trashgod

답변

0

첫째, 당신은 라디안

당신은 아마이 필요한 일부 -=로 교체, X 또는 Y의 반대를 사용해야합니다
int speed = 20; // the speed of the bullet 

double rad = pinballAngle * 2 * Math.PI/360; 
pinballCoordinate.x += (int) (Math.cos(rad)*speed); 
pinballCoordinate.y += (int) (Math.sin(rad)*speed); 

에 각도가 필요합니다.

수학 문서 : 그래서 https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html

+0

사인과 코사인은 이미 올바른 양수/음수 값을 생성하므로'- ='는 필요하지 않습니다. – GameGibu

+0

'y'에는'- ='이 필요하지만'x'에는'+ ='가 필요할 것입니다. –

+0

@DavidWallace 대부분의 레이아웃/그리기 유틸리티에서 사용하는 거꾸로 된 y 축을 수정하는 경우에 해당됩니다. 이 경우 지오메트리는 회전이 반대 방향으로 표시되도록 수직으로 대칭 이동됩니다. – GameGibu

관련 문제