다양한 공간 채우기 곡선의 차이점은 무엇입니까?


14

공간 채우기 곡선은 공간적 위치를 노출시키는 데 도움이되므로 많은 그래픽 응용 프로그램에서 중요합니다. 우리는 종종 Z- 곡선, Morton 코드, Hilbert 곡선 등을 사용하는 다른 알고리즘에 대해 듣습니다. 이러한 여러 곡선의 차이점과 여러 응용 분야에 어떻게 적용됩니까?



Samet의 다차원 및 메트릭 데이터 구조 기초 2.1.1.2 단원도 참조하십시오 .
lhf

답변:


13

차이점은 매핑이 위치를 얼마나 잘 보존하고 키를 인코딩 / 디코딩하는 것이 얼마나 쉬운 지입니다. HV Jagadish의 "여러 속성을 가진 객체의 선형 클러스터링"이라는 논문은 다음과 같이 말합니다. "대수 분석을 통해 컴퓨터 시뮬레이션을 통해 Hilbert 매핑이 대부분의 환경에서 제안 된 최상의 대안 매핑보다 우수하거나 더 우수함을 보여주었습니다. 문학 ". 반면에 z-order는 사용이 조금 더 간단합니다. 예를 들어 z-order의 Bit Twiddling Hacks 와 Hilbert-order의 Wikipedia 에 나열된 다양한 방법을 비교하십시오 .

응용 프로그램과 관련하여 공간 채우기 곡선을 사용할 때의 주요 이점은 더 높은 차원의 공간에서 낮은 차원의 공간으로 점을 매핑한다는 것입니다. 예를 들어, 기존 B- 트리 데이터베이스 인덱스를 사용하여 포인트를 쿼리 할 수 ​​있습니다. 다시 말하지만, 단점은 나중에 매핑을 "크기 조정"하기가 어렵 기 때문에 입력의 경계를 미리 알아야한다는 것입니다.

PS : "Z- 곡선"은 "Morton 코드"와 동일합니다.

PPS : 추가 매핑에는 Peano 곡선이 포함 되며 응용 프로그램의 경우 Geohash 도 참조하십시오 .


9

이러한 공간 채우기 곡선을 사용하면 곡선을 따라 선형으로 "걸을"때 여러 차원의 위치를 ​​유지할 수 있습니다.

내가 본 것에서 Z-Order (Morton 코드라고도 함)는 곡선의 모든 지점에 직접 액세스하기 위해 일정하고 저렴한 계산 비용으로 인해 가장 많이 사용됩니다. (주소 와이어를 "그냥 스위칭"하기 때문에 0 사이클 페널티가있는 하드웨어에서 쉽게 구현할 수 있습니다).

Z-Order 곡선의 구체적인 예는 텍스쳐 스위 즐링 (texture swizzling)인데, 이는 기본적으로 GPU에서 텍스쳐 읽기에 대한 캐시 적중률을 증가시킵니다. (Z-Curve https://en.wikipedia.org/wiki/Z-order_curve 관련 기사의 이미지를 참조 하십시오. )

텍스처가 단순히 선형으로 저장되면 텍스처 만 2D 이미지로 렌더링하면 최대 캐시 적중률을 얻지 만 화면에서 90도 회전하면 최악의 시나리오가 발생합니다 (읽을 때마다 캐시 누락) .

결과적으로 최상의 시나리오를 약간 낮추고 대부분의 패턴에서 캐시 적중률을 높이는 것이 좋습니다.

개인적으로, 내가 본 바에 따르면, 다른 곡선은 계산을 위해 재귀 단계가 필요할 수 있으며 지역 일관성 측면에서 최소 이득으로 Z- 커브보다 더 큰 비용을 초래할 수 있습니다. 따라서 수학 또는 창의적 / 재미있는 렌더링의 연구 주제를 제외하고는 실용적으로 사용 된 곡선에 대해 들어 보지 못했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.