본문 바로가기

분류 전체보기117

사각형 말고 원형 충돌검사 게임상에서 가장 기본적인 충돌검사는 사각, 원, 선 검사라고 생각한다 왜냐하면 이 세가지의 개념을 조합하면 좀더 정밀한 다각형, 픽셀 검사를 할수 있기 때문이다 여기서는 단순하게 원형끼리의 검사를 살펴보겠다 원은 한점에서 일정거리 만큼의 영역을 가지는 도형이다 그래서 두 원의 영역이 겹치는 조건은 중심점끼리의 거리로 판단한다. 위와 같이 중심점 사이의 거리가 두 반지름의 합보다 크면 서로 떨어져 있는 것이다. 두점 사이의 거리는 중3때 배우는 공식을 사용하면 된다 (http://mathbang.net/138) 반대의 경우로 중심점 거리가 반지름의 합보다 작아지면 겹치게 된다. 즉, 이때가 충돌한 것이다. 충돌이긴 한데.. 완전히 겹치는, 다시 말해 한 원에 완전히 포함되는 경우는 반지름의 차로 계산한다... 2016. 1. 25.
알기 쉬운 안드로이드의 방위각 게임에서 케릭터를 이동시킬때 방위각이 필요하다. 이때 각도를 라디안으로 계산하면 편리하다. 시작점에서 끝점 방향으로 이동할때의 방위각을 구해보자. public float getRadian(float startx, float starty, float endx, float endy) { float x = endx - startx; float y = endy - starty; return (float)Math.atan2(y, x); } 거꾸로 방위각에서 방향벡터를 구해보자. public float[] getNormal(float radian) { return new float[] {(float)Math.cos(radian), (float)Math.sin(radian)}; } 케릭터 이미지를 방향별로 회전해야 .. 2015. 12. 28.
Bitmap 이미지를 byte로 바로 보낸다고? 그것도 소켓으로? 군대를 막 전역했을때 다시 완벽한 민간인이 되기 위해 책한권을 샀었다 바로 "TCP/IP 소켓 프로그래밍" 이었다 이때 처음 접한 네크워크 코딩술로 간단한 원도우용 채팅프로그램을 만들었고 졸업후에는 PC와 스마트폰간의 연결앱인 "키보드에디터"를 출시하였다. 물론 쫄닥 망했다ㅎㅎ 어쨌든 그후에도 가끔씩 소켓기반의 앱을 만들면서 자연스럽게 이미지 전송도 하게되었다 여기서는 비트맵이미지를 파일형태가 아닌 Byte단위의 원본으로 바로 보내는 것을 다뤄보겠다. 파일도 결국은 Byte로 보내는것이지만... 외부파일이 아닌 내부이미지를 불러와 바로 전송할때 유용할것이다~ -서버 public class Server implements Runnable { @Override public void run() { try { .. 2015. 11. 30.
이미지를 싹뚝 자를때 꼭 알아야 할 비밀 이미지를 전체가 아닌 일부분만 출력하고 싶을때 사용하는 기법이 Image Clipping 이다. 게임을 만들때는 없어서는 안되는 아주 고마운 녀석이다. 보통 Clipper 객체를 만들어 사용하는데... 어렸을때는 왜 굳이 객체까지 만들어서 이미지를 자르나.. 그냥 자르면 되지.. 라며 쓸데 없는것이라고 생각했었다. 하지만 어른이 되고 개발을 업으로 살다보니 조상님들의 지혜에 감탄하듯 그 이유를 깨닫게 되었다ㅎㅎ 아주 단순하고 지극히 당연하지만... 그래서 간과하기 쉬운 클리핑의 원리! 비밀 아닌 비밀같은 클리핑을 알아보자~ 위 그림처럼 클리핑은 이미지 원본크기와 출력크기가 다르다는 것이 문제이다. 또 원본좌표는 (0, 0)에서 시작되지만 출력좌료는 스크린좌표가 더해진다. 이것을 같은 크기와 좌표로 작업할.. 2015. 10. 26.
DialogFragment에 DismissListener를 쉽게 사용하는 방법 DialogFragment를 종료한 후 결과를 받아서 처리해야 할때가 있다. 당연히 이때는 DismissListener를 사용하면 된다. 하지만 그냥 사용하는것보다 약간의 튜닝을 하면 더 편하다. public abstract class DialogDismissListener implements DialogInterface.OnDismissListener { private HashMap mStrMap; private HashMap mIntMap; private HashMap mBoolMap; public void setValue(String key, String value) { if(mStrMap == null) mStrMap = new HashMap(); mStrMap.put(key, value); } .. 2015. 9. 21.
함수의 옵션을 블럭처럼 조합해서 사용해보자~ 소스를 짜다 보면 함수에 옵션을 넣어야 할 경우가 종종 있다 function(value1, value2, OPTION); 이런식으로 말이다. 그런데 비트연산자로 조합해서 쓰면 더 유용하다 function(value1, value2, OPTION1|OPTION2); 그렇다면 이 비트연산자 조합은 어떤식으로 적용되는 것일까? 먼저 "|"는 or로 두개중 하나만 참이면 참이 된다 예를 들면, 0 | 0 = 0 1 | 0 = 1 1 | 1 = 1 이것을 이용하면 두개의 조합이 가능하다 OPTION1 OPTION2 000 000 | 000 000 = 000 000 001 000 | 000 010 = 001 010 010 000 | 000 111 = 010 111 위와 같이 각각 한쪽을 000으로 비워두고 or을 .. 2015. 8. 24.
마음의 여유가 있는곳.. 길상사 가끔은 아무 생각없이 멍하니 있고 싶을때가 있죠.. 그래서 길상사란 곳에 침묵의 방이 있다고해서 가보았어요~ 길상사 안으로 들어와 보니 자그만한 다리가 있었어요.. 그 다리 근처에서 "명상수행터"라는 푯말이 눈에 들어왔죠.. 그래서 건넜습니다.. 짠~ 침묵하며 명상하는 공간이에요! 10분 정도 침묵을 하다가 옆의 사람들이 너무 떠들어서 그냥 나왔습니다ㅎㅎ 길상사 창건때 절터를 기부했다는 길상화 보살을 모셔둔 곳이에요.. 법정스님의 "무소유"를 읽고 감명받아서 기부했다고 해요 명상수행터에서 가까운곳이 있었어요 길이에요.. 너무 평화로워 보여서 찍어봤습니다ㅎㅎ 참선중... 스님들이 침묵수행을 하는 곳도 있네요.. 이곳 길상사에 와서 알았는데.. 법정스님이 이 절에 모셔져 있었어요 여기가 법정스님을 모셔둔 집.. 2015. 7. 25.
Fragment에서 startActivityForResult() 호출시 onActivityResult() requestCode 문제 Fragment에서 startActivityForResult()를 호출했을때 onActivityResult()의 requestCode가 잘못 올 때가 있다. 즉, 분명 requestCode를 100으로 호출했는데 65640와 같은 이상한 값이 나오는 경우이다. 해결방법은 간단하다. startActivityForResult()를 getActivity().startActivityForResult()로 바꾸면 된다. 아마도 Fragment에서 직접 호출하면 부모액티비티로 값이 전달되지 않는듯 하다. 도움이 되셨다면~ 정성으로 빚은 저희 앱! 많은 이용 바래요:) https://meorimal.com/index.html?tab=spaceship 우주선 - 방치형 인공지능 투자 체험기 미리 맛보는 인공지능 투자!.. 2015. 6. 22.
독립의 왜곡.. 다시 보는 독립문 독립문은 개화기 시절... 청나라와의 사대관계를 상징하던 영은문을 헐고 독립의지를 위해 다시 세운 문이죠 이것이 우리가 국사 시간에 배운 독립문의 내용이기도 해요.. 처음엔 이런 내용만 생각하고 갔다 왔는데... 알고보니 독립문에 대한 여러가지 논란이 있다는 사실을 알게 되었습니다... 독립문은 이렇게 도로 옆에 우뚝 서있었어요. 독립문의 앞모습이에요 한글로 독립문이라 써져 있고 그 앞에는 헐린 영은문의 초석이 상징적으로 남아있어요.. 독립문 안쪽의 정상으로 올라가는 돌층계 출입문과 천장의 모습이에요.. 독립문 뒷모습이에요. 한자로 독립문이라 써져 있어요.. 이 글씨를 이완용이 썼다고 전해지죠.. 당시 이완용은 나라를 팔아먹기 전, 독립문을 세우는데 일조했었다고 해요 아이러니한 역사죠.. 또한 독립문은 .. 2015. 5. 24.
버튼 누름 효과를 만드는 2가지 방법 버튼이면 당연히 있어야할 누름효과! 눌렸을때와 누르지않았을때가 같다면 과연 버튼일까? 당연하지만 그래서 잃혀지기 쉬운 기능 버튼의 누름효과!! 안드로이드에서 기본적인 버튼은 누름효과가 있다. 하지만 나만의 예쁜 버튼을 만들려고 이미지를 넣으면 이런 효과는 사라진다. 이때 누름효과가 생기도록 하는 2가지 방법이 있다. 첫번째는 xml의 selector를 이용하는 것이다. res의 drawable 폴더에 button_selector.xml 파일을 만든다. 여기서 버튼의 일반이미지, 누름이미지를 다음과 같이 설정한다. 그리고 layout의 버튼에 selector를 적용한다. 두번째는 자바코드로 넣는 것이다. Button button = (Button)findViewById(R.id.Button); button.. 2015. 4. 19.