목록Season 1 (107)
Graphics Programming
1. 왼쪽 위의 텍스트 필드에 1~40 사이의 숫자를 입력하고 엔터를 누르면 시스템을 다시 구축한다. 2. 각 원은 조건을 나타낸다. 한 조건을 누르면 그 조건이 참이기 위한 전제 조건들을 쭉 연결한다. 인공지능 개론 책에서 규칙기반 전문가 시스템을 봤는데 개론에 걸맞게 프로그램 예제 하나 없이 이론만 설명해서 (...) 시각적으로 만들어봤다. 처음부터 끝까지 그런 식이라 아무래도 각 장을 읽을 때마다 플래시로 구현하게 될 듯하다. 참고 자료 - 2장. 규칙기반 전문가 시스템
rotateToAvoid - wonderfl build flash online 유닛들을 u1, u2, ... , uN이라 하자. 이런 식으로 이중 for문을 돌린다. for(i=0 ; i
ab = abcos90˚ = ab * 0 = 0 이건 원래 알고 있던 방법이고 내가 구상한 AABB 충돌 감지를 써서 간단한 물리 엔진을 만들려고 하는데 물체가 세 개 이상 겹쳐서 벽에 붙으면 무한루프에 빠지는 것 때문에 고생하고 있다. 도움이 될까 싶어서 고전이라는 글(http://chrishecker.com/Rigid_Body_Dynamics)을 읽다가 각운동 부분을 보는 중 벡터의 성분을 이용한 다른 방법이 생각났다. a = (a0, a1) 에 수직인 벡터 b는 회전 행렬을 써서 돌려보면 b = k(a1, -a0) (k ≠ 0) 따라서 ab = k(a0a1 - a1a0) = 0 은 2차원에서 해본 거고 3차원 이상은 모르겠다. 그리고 저 글 다 읽었는데 문제 해결에는 도움이 안 되었다.
머리 싸매고 고안한 건데 이미 있는 알고리즘이다 -_- 을 읽다보니 거의 똑같은 알고리즘이 나오는데 Ron Levine이 만들었다고 한다. 파란 상자와 빨간 상자가 이렇게 휙 움직인다면 hitTestObject() 같은 걸로 충돌 검사를 해도 도중에 충돌하는 걸 감지할 수 없다. 그래서 목적은 도중에 충돌하는 순간을 구해서 나타내는 것이다. 상황 설정 1. 물체는 AABB(안 돌린 직사각형)이다. 2. 물체는 한 프레임 동안 등속직선운동을 한다. 목적 설정 물체의 속도를 v, 한 프레임 동안의 경과 시간을 t라고 하면 물체는 v * t 만큼 움직인다. 경과 시간을 기반으로 물체가 움직인다면 t의 단위가 밀리초겠지만, 지금은 초기 위치와 나중 위치를 설정하고 두 위치 사이의 차이를 v로 삼을 것이기 때문에..
원문: http://pogopixels.com/blog/2d-polygon-collision-detection/ 2D 다각형 충돌 검사 이 글에서는 움직이는 두 다각형간 충돌을 검사하는 방법을 설명한다. 이 글이 이 화제에 대한 최초의 튜토리얼은 아니지만, 인터넷에 퍼진 튜토리얼들은 쉬운 문제를 복잡하게 해결한다. 소스 코드마다 너무 축약해놔서 알아먹을 수가 없고 C 최적화 때문에 이리저리 꼬였다. 그래서 나는 코드를 단순하게 놔뒀다. 나무늘보 움직이는 속도가 느껴지는 픽셀 비교 충돌 검사를 쓸 바에야 이 기법을 써라. Download the .NET / C# source code Download the .NET demo 배경 지식 두 다각형이 교차하는지 축 분리 정리(separating axis the..
* 고등학교 미적분을 알아야 합니다.* 고등학생일 때 쓴 거라 이제 가물가물합니다. 물어봐도 대답 못 해요... 시컨트 적분 사실 이 방법은 결과를 거꾸로 밟아서 대충 짜맞추는 것이다. 아래는 좀 더 단계적인 접근이다. (적분 기호는 생략) 시컨트 제곱 적분 자명하다. 시컨트 세제곱 적분 시컨트 네제곱 적분 세제곱 적분할 때와 비슷한 기법을 썼다. 시컨트에서 시컨트 네제곱까지 결과만 써보면 이렇다. 그럼 시컨트 n제곱을 적분하면 뭐가 나올까? 네제곱 적분까지 봐도 시컨트와 탄젠트로만 구성되었다는 것 빼곤 규칙이 전혀 보이지 않는다. 일반항이 있을까? 여기서 세제곱과 네제곱을 적분하는 과정을 다시 살펴보면, 시컨트 제곱을 분리해서 시컨트 제곱을 탄젠트의 도함수로 바꾸고 다음 공식을 사용했다. 이것에 착안하..
간단한 건데 자꾸 까먹네 ㅡㅡ clone(), toString() 메서드를 재정의한다. class CustomEvent { public function CustomEvent(type:String, bubbles:Boolean, cancelable:Boolean, 추가매개변수1, 추가매개변수2) { super(type, bubbles, cancelable) // bubbles랑 canceable이 필요 없으면 매개변수로 받지 말고 그냥 false나 넘겨버리자 // 추가 조작 } public override function clone( ):Event { return new CustomEvent(type, bubbles, cancelable, 추가매개변수1, 추가매개변수2) } public override f..