마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

로직에 대해 물어보고 싶습니다.

0 추천
 double deg = Math.atan2(moveX-spX,moveY-spY)*180/Math.PI-90;
	        	
	            int r=130; // 원반지름
	        	
	        	if(deg < 0)deg+=360;
	        	
	        	if(Math.pow(spX-moveX,2)+Math.pow(spY-moveY, 2)<=Math.pow(r,2)){
	        		
	        	moveY = y;
	                moveX = x;
	         
	              
	        	}else {
	        	   
	                moveX = this.moveX ;
	                moveY = this.moveY ;
	                
	             	                
	                if(Math.pow(spX-x,2)+Math.pow(spY-y, 2)<=Math.pow(r,2)){
	                	bMove = true;
	                	moveY = y;
	                        moveX = x;
	                }
	}
	                
	            

원을 X2제곱 + Y2제곱 = r2제곱으로 원을 구하여 원 안에 영역에서는 좌표가 움직이게 하고 원의 영역을 벗어나면 좌표의 값이 고정 되어있는 구조 입니다 ,

저는 여기서 영역의 밖에서 움직였을때 그원 안의 영역에서 그쪽의 좌표로 가도록 구하고 싶은데 로직이 생각이 잘 안남니다.

여러가지 로직 이나 팁을 좀 주세요. 부탁드립니다.

P.S 아날로그 pad 처럼 오락 조이스틱을 구현하는 중이였습니다. 

구운란 (540 포인트) 님이 2013년 7월 16일 질문

1개의 답변

0 추천
 
채택된 답변
저도 해당 처리를 한 적이 있는데요.

전 좀 접근을 달리했습니다.

그니까 일단 중점에서 부터의 거리를 구했습니다.

sqrt를 이용해서 구했죠.

그리고 중점에서 부터의 각도를 구했습니다.

이러면 답은 나오죠.

거리가 만약 최대치보다 크다면 최대치 값으로 거리를 설정해서

해당 각도의 가로 세로 변화량을 적용 시켰습니다.

그럼 원하는 처리가 됩니다. 코드로의 구현은 스스로 해결하시면 좋겠네요~!
Godwish (2,460 포인트) 님이 2013년 7월 17일 답변
구운란님이 2013년 10월 31일 채택됨
답변 감사합니다.
저랑 다른 로직이군요 ㅎ
...