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

원안에있는 좌표구분 하는 방법 질문드려요

0 추천

레이아웃이 사각형이라

레이아웃안에 원의 범위를 구하는 식을 구하고싶습니다..

일단 원은 wrap-content로 레이아웃에 꽉차게해놧기때문에

 

레이아웃크기/2 하면 반지름을 구할수있을거같아요

중심점의 좌표도 레이아웃width /2 , height/2 하면 중심점구할수있을거같고요

 

원안의 좌표인지아닌지 판단하려하는데 수학에 너무 잼병이라 도저히 모르겟네요..ㅠ

 

http://www.masterqna.com/android/41273/%EC%9B%90%ED%98%95%EC%9D%98-%EA%B7%B8%EB%A6%BC-%EC%A2%8C%ED%91%9C-%EB%AC%B8%EC%A0%9C?show=41273#q41273

 

여기소스를 참고해봤는데

if( (x1-x2)^2 + (y1-y2)^2 < a^2) {

좌표찍는거 코딩..

}

else {

아무작업도 안함..

}

 

if( (x1-x2)^2 + (y1-y2)^2 < a^2) 이렇게하니깐 정작 ^오퍼레이터는 숫자값을 받을수없다나오네요..

예림이그코드좀바바 (2,470 포인트) 님이 2015년 3월 6일 질문

1개의 답변

+2 추천
 
채택된 답변
^2 를 제곱이라고 생각하고 사용하셨으면 안됩니다.

^연산자는 XOR비트 연산자에요

 

제곱을 원하시면 같은 값을 *으로 두번 곱해주시던가

Math 클래스의 함수를 이용해서 하시면 될겁니다.
이라슈 (8,770 포인트) 님이 2015년 3월 6일 답변
예림이그코드좀바바님이 2015년 3월 6일 채택됨
아 링크 답변자분은 제곱을 말씀하셧던거군요;;
수학정말못해서 이해못하고 왜 XOR연산자를했던거지했었네요.
Math클래스함수에는 제곱해주는게있나보군요.
Math.pow 가 제곱관련 함수입니다.
감사합니다 ㅎㅎ
원안의 좌표범위 구하는공식 링크글보고 정리해봤는데
if(센터좌표x - 터치좌표x)*제곱 + (센터좌표y - 터치좌표y)*제곱 < 반지름*제곱 {
       맞으면 터치가능
}
이게 맞을까요?
두 점사이의 거리 공식에 의해 나온 값이 반지름값보다 작은 조건을 찾기 위한 것이에요
두점사의 거리 공식이
(x1 - x2) ^2 + (y1 - y2)^2 = 점사이거리^2
이거거든요

두점은 센터 좌표와 터치 좌표이니까

if(Math.pow((센터좌표x - 터치좌표x),2) + Math.pow((센터좌표y - 터치좌표y),2) < Math.pow(반지름,2)) {
       맞으면 터치가능
}
이정도겠죠
답변감사드립니다
해보니 절반만 인식되네요
무언가 제가잘못쓴듯하네요
계속 삽질하면서 해봐야겠네요

해결했네요.. 터치점을 터치점이랑 같이노는 이미지 가운데로 줫었는데
원반경계산은 무조건 그냥 순수 터치점으로 줘야하네요.
사족을 달자면, 원의 반경 계산은 피타고라스 정리를 바탕으로 합니다.
직각삼각형에서, 밑변제곱+높이제곱=빗변의제곱 이 되는원리죠.
원의중심점의 x좌표, 터치된곳의 x좌표를 뺄셈하여 제곱, 마찬가지로 y좌표도 뺄셈
하여 제곱후 더한값이 원의반지름의 제곱보다 작으면 원안에 있는겁니다.
...