inflearn logo
강의

講義

知識共有

イ・ドウの必ず学ばなければならないゲームアルゴリズム

6強クワッドツリーの最適化

depth 구할 때 floor로 처리하면 -1이 사라지는 과정이 잘 모르겠어요.

解決済みの質問

391

themoon007

投稿した質問数 98

-1

결국엔 log(2, x) -1 = floor ( log(2,x) ) 라는 것 같아 보이는데.. 이 수식이 잘 이해가 안 가는 것 같아요....

unity 알고리즘

回答 1

0

ideugu

질문 감사합니다.
오랜만에 강의 내용을 다시 보았는데, 우선 한정된 슬라이드에서 수식을 넣다보니 효과적으로 전달을 못했네요.
두 식이 동일하다는 의미는 아니고, 정수 값만 가지는 depth값만 보았을 때 두 식은 같은 결과를 산출한다는 의미로 봐주시면 감사하겠습니다.
그런데 제가 다시 보면서 중요한 점을 발견했는데, 수식이 잘못되었네요.
예를 들어 16보다 작고 8보다 큰 반지름 10이 들어온다고 가정 했을 때, 이의 목표 깊이 값은 1이 되어야 합니다. 하지만 위 수식으로 진행하면 2가 나오므로 잘못된 수식으로 보여집니다.
잘못된 자료로 인해 불편을 드려 죄송합니다.

해당 슬라이드 내용은 우선 글로 다시 설명드리겠습니다.


image

L(depth)는 느슨한 트리가 사용하는 해당 뎁스에서의 영역의 크기입니다. 이는 k에 의해 결정되는데 통상 2의 값을 사용합니다. 따라서 루트노드에서는 전체 사각형 변의 두 배인 2W, 첫 번째 뎁스에서는 W의 크기를 가집니다. 이를 통해 해당 뎁스에서 허용가능한 최대 반지름 값 Rmax(depth)가 다음과 같이 결정됩니다.

 

image

그리고 주어진 반지름 R에 대한 최적의 깊이 값을 찾아주는 함수를 depth(R)로 정의하겠습니다.
R과 depth(R), Rmax(depth)사이에는 다음과 같은 규칙이 주어집니다.

 

image두 번째 식에 대입하면 결과는 다음과 같습니다.

imageimage로그를 취해주면 다음과 같이 정리됩니다.

image이 값은 정수만 가지므로 다음과 같이 계산할 수 있습니다.

image

예제의 LQuadtree.cs 의 GetTargetDepth 함수도 수정해야 될 것으로 보여집니다.

[기존 코드]

int targetDepth = Mathf.FloorToInt(Mathf.Log(width / maxHalfValue, 2.0f));

 

[수정해야 할 코드]

int targetDepth = Mathf.FloorToInt(Mathf.Log(width / maxHalfValue, 2.0f) - 1);

해당 영상은 차후에 수정하겠습니다.

감사합니다!

싱글턴패턴

0

3

1

수강평 이벤트

0

16

2

코드 관련 질문

0

21

2

섹션7 수업자료 업로드 부탁드립니다.

0

22

2

part8 Notion 링크

0

23

1

Dictionary Key를 int에서 string으로 변경한 이유에 대한 문의

0

19

1

잠겨버린 사물함 시간초과 관련 질문입니다.

0

25

1

UI 기능 관련 질문이 있습니다!

0

37

2

03-01 (16. CharacterController)

0

31

2

TLS 질문드립니다.

0

43

2

Task 구현 28:36 Equals 에서 잘 모르는 부분이 있습니다.

0

27

2

SpinLock과 컨텍스트스위칭에 대해 질문 남겨요.

0

46

2

코딩테스트 처음인데 이런 공부방법이어도 괜찮을까요

0

57

2

강의에서 나온 알고리즘 외에 추천 하시는 알고리즘이 있을까요?

0

69

2

쿼드트리 옥트리가 활용되는 예시에 대하여 더 여쭤보고싶습니다.

0

213

1

쿼드트리 구현 강의자료에 포함된 LQNode의 GetQuads함수에 궁금한 점이 있습니다.

0

468

2

A* 알고리즘에 대해 질문있습니다!

0

351

1

움직이는 물체에 대한 쿼드, KD트리 효율 질문

0

489

1

BSP트리를 활용한 렌더링 순서 관련 질문

0

409

1

쿼드트리 삽입 프로그램 실행 예시 질문

0

329

1

알고리즘 확인(?) 질문

0

439

2

우선순위큐로 구현시

0

354

1

19:35 리스트와 이진힙의 구조비교

0

230

1

GetQuads가 out of area를 체크 할 수 있는건가요??

0

328

1