1. Coarse Collision Detection

웹/JS 물리엔진 | 2012. 7. 30. 17:12
Posted by 클라리넷

1. Bounding Volume

어떤 물체가 있으면, 그 물체를 완전히 포함하는

단위 부피로 감싼다(보통 구 또는 큐브를 사용한다고 한다).


그리고 주어진 알고리즘에 따라서

인근해 있는 두 개 이상의 부피를 완전히 포함하는

또다른 단위 부피로 감싼다.

(부피 안에 있는 물체를 포함하는 게 아니라

그 물체를 포함하는 부피 그 자체를 완전히 포함하는 것이다)


하위 두 개의 부피를 자식으로 하고,

두 부피를 감싸는 큰 부피를 부모로 하는

트리를 만든다.


이런 식으로 계속 부피들을 더 큰 부피로 감싸다 보면

최종적으로 한 개의 부피가 만들어질 것이고,

그 부피는 트리의 root일 것이다.

(알고리즘에 따라 다르다.  꼭 최종 한 개가 아닐수도 있다)


이 때, 실제 물체를 가지고 있는 부피는

잎사귀 노드들 밖에 없다.

(이 역시 알고리즘에 따라 다르지만,

트리 구성에 따른 유용한 공식들을 사용하려면 이 방법이 유리하다)


Fine collision detection을 수행할 때는, 트리의 꼭대기에서부터

아래로 내려온다.

자식 노드들 간에

단위 부피 형태에 따른 충돌 체크를 한다.

(단위 부피를 구나 큐브로 하는 이유가 여기에 있다.

최대한 트리 내에서의 충돌처리 비용을 줄이기 위해서)

만약 충돌을 하지 않는다면

그 노드들의 자식들 역시 절대로 충돌할 일이 없다는 뜻이 된다.

즉, 그 노드들의 자식들끼리는 절대 충돌체크를 할 일이 없다.


반대로 충돌을 한다면,

그 자식들 역시 충돌할 가능성이 있다는 뜻이다.

따라서, 충돌한 노드이 있으면

그 자식들끼리도 충돌체크를 한다.

마찬가지로, 충돌을 하지 않으면 앞으로 볼 일 없는 거고,

충돌을 하면 그 자식들끼리 또 체크를 한다(으아아아아아).



-Coarse Collision Detection 끝- 

' > JS 물리엔진' 카테고리의 다른 글

물리 엔진 현황  (0) 2012.05.15
 

Array와 Object, Enhanced for문과 그냥 for문

웹/Javascript | 2012. 7. 2. 12:08
Posted by 클라리넷

Array, Object가 하나씩 있고,

각각에 대해 원소들을 순서대로 접근하고 싶다면,


Array는 그냥 for문에다가 조건을 Array.length로 잡고,

 Object는 Enhanced for문을 쓰면 된다.


Array에서 Enhanced for문을 쓰면 Array 클래스에 내재된 함수까지 모조리 Enhanced에 걸린다.  그래서 결과가 이상하게 나오게 된다(isArray, copy, size 등등.  push, pop 같은 건 Array 객체에만 있는 거라서 나오지 않는다).


반대로, Object에서 Object.length를 쓰게 되면 length가 undefined로 나온다.  당연한 것이, Object는 배열이 아니기 때문에 원소의 개수를 셀 수 없다.  해쉬된 원소들을 셀 수 없냐고 하면 글쎄....  셀 수는 있을 거 같지만 위에서처럼 멤버 함수까지 모조리 세어지기 때문에 안 하지 않았을까 싶다.

' > Javascript' 카테고리의 다른 글

실수하면 디버깅이 안 되는 자바스크립트 실수  (0) 2011.12.18
 

물리 엔진 현황

웹/JS 물리엔진 | 2012. 5. 15. 13:38
Posted by 클라리넷

일단 이 물리엔진을 만들기 시작한 이유는

웜즈를 만들기 위해서이죠.

그래서 기본적인 물리엔진 기능 + 픽셀 충돌 처리가 가능한

물리 엔진을 목표로 하고 있습니다.


하지만 일단은 웜즈를 구현할 수 있는 정도로 만족하기로 했습니다.

회전이 너무 어려워서....  허허.

그래서 일단은 사각형 + 픽셀 + 원에 대한 것만 처리하고

무회전으로 구현하기로 했습니다.

' > JS 물리엔진' 카테고리의 다른 글

1. Coarse Collision Detection  (0) 2012.07.30
 

CSS 사소한 실수들

웹/CSS | 2011. 12. 20. 15:09
Posted by 클라리넷
1. pseudo class에서 콜론 사이에 띄어쓰기 넣기
ex) a:hover는 되고 a : hover는 안 된다

2. //는 주석처리가 안 된다
css에서의 주석처리는 오로지 /* */ 만 된다.
//가 되는 것처럼 느껴질 수 있는데,
그 이유는 css를 읽을 때 문법 에러가 나서
//뒤의 논리적 line 한 줄을 무시하기 때문이다.

ex)

background-color : #FFFFFF;//가짜 주석
background-image : url('/img/booooo.png');
color : #000000;

이럴 경우  background-image : url('/img/booooo.png'); 까지 무시가 된다.
color : #000000; 부터는 제대로 동작한다. 

' > CSS' 카테고리의 다른 글

CSS에서 danlging div  (2) 2011.07.11
 

디버깅 환경은 크롬!


undefined 상태인 변수를 비교 연산하기 OR undefined 상태인 변수에 대입하기

대입하기와 비교하기에서 undefined 값인 변수명을 사용할 경우
그냥 undefined값과 비교하는 것이 되기 때문에
아무런 에러가 뜨지 않는다. 

이 실수는 주로 오타(i.e. javascript <-> javacsript)로 인해 생긴다

' > Javascript' 카테고리의 다른 글

Array와 Object, Enhanced for문과 그냥 for문  (0) 2012.07.02
 

CSS에서 danlging div

웹/CSS | 2011. 7. 11. 01:33
Posted by 클라리넷
웹페이지를 만들자면 기본적으로 div를 쓰게 되죠.
div는 재미난 특성이 많은 상자지만,
개발하는 입장에서는 이 특성들을 제대로 잡아주지 않으면
귀찮은 일이 생길 수도 있죠.

그 중 하나가 제목에 써 있는 '떠다니는 div.'
div 상자의 위치를 잡아주지 않으면 브라우저 창의 크기를 조절할 때
div 상자의 위치가 이상하게 변할 수 있는 것입니다!

그래서 아래의 실험을 해봤습니다.


1. div 상자 두 개가 있다.
둘 다 display : inline-block 속성을 지정해줬다.

2. div 상자 두 개가 있다.
둘 다 display : inline-block 속성을 지정해주고
전체 상자를 또다른 div로 감싸줬다.
div에다가 width 속성은 지정하지 않는다.

3. div 상자 두 개가 있다.
둘 다 display : inline-block 속성을 지정해주고
전체 상자를 또다른 div로 감싸줬다.
그리고 전체 div에다가 width 속성을 지정해줬다.
이 때 width 속성의 크기는 안에 들어 있는
div 상자 2개의 크기를 합친 것보다 크게 한다.

안에 들어있는 div 상자 2개는 width, height이 모두 지정되어 있습니다.
그리고 결과를 알아보기 쉽게 하기 위해서 테두리를 만들어주었습니다.
이제 실험 시작!

 
브라우저 창 크기를 줄일 경우
1,2번의 경우에는 오른쪽에 있는 div 상자가
왼쪽 것의 아래로 내려갑니다.

반면에 3번의 경우에는
브라우저 크기를 줄이건 말건 오른쪽 div 상자가
가만히 있습니다.


전체를 감싸는 div에 width 속성을 빼고 height 속성을 주고 테스트해봤는데
1,2번과 똑같은 결과가 나오더군요. 

결론 : width를 잘 씁시다.  

' > CSS' 카테고리의 다른 글

CSS 사소한 실수들  (0) 2011.12.20
 

블로그 이미지

클라리넷

카테고리

Vie (12)
(6)
C++ (2)
게임 개발 (1)
게임하기 (0)
엔진 (0)
전자기기 (3)
Deep Learning (0)