2012-03-14 3 views
4

저는 빌드하고자하는 라이브러리에 대한 노이즈 알고리즘을 연구했으며 Perlin 노이즈로 시작했습니다 (더 정확하게는 Simplex 노이즈, 임의의 치수로 작업하고 싶습니다. 최소 6). 읽기 Simplex noise demystified을 읽었지만 결국 구현을 살펴보면 perm이라는 큰 조회 테이블을 보았습니다.왜 Perlin 노이즈 알고리즘이 난수에 대한 찾아보기 테이블을 사용합니까?

코드 예제에서이 코드는 그라디언트 집합에 인덱스를 생성하는 데 사용되는 것으로 보이지만 방법이 이상하게 보입니다. 나는 테이블이 단지 1) 결정론과 2) 속도 향상을 제공한다고 가정한다.

제 질문은 perm 조회 테이블에 보조적인 의미 또는 목적이 있습니까? 아니면 위의 이유로 인해 있습니까? 또는 다른 방법으로, 성능 이외의 의사 난수 생성기가 이 아닌이 사용 된 특별한 이유가 있습니까?

+0

이것을 설명해주세요. 나는 또한 알고 싶습니다 - perm을 1에서 300 또는 1과 600 사이의 무작위로 생성 된 목록으로 바꾸는 것은 작동하지 않습니다. – Aquinas

+0

@Aquinas 불행히도 없습니다. 나는 아직도 나의 "속도 향상"이론을 가지고있다. 그것은 얼마 전 이었지만, 숫자가 특정 범위에 있어야한다고 생각합니다. – Aatch

+0

저는 여러분이 옳다고 생각합니다. 순열과 그라디언트 배열은 무작위 - 그래 그라디언트를 얻기 위해서입니다. 우리는 같은 지점을 나중에 방문 할 때 항상 동일한 그라디언트를 얻습니다. 중요한 것은 결정론, 무작위성이며 그라디언트는 단위 길이를 가지며 0,0 주위에 고르게 분포됩니다. –

답변

2

이것은 바이트 배열입니다. 범위는 0에서 255까지입니다. 원하는 경우 임의로 지정할 수 있습니다. 무작위로 씨앗을 뿌리기를 원할 것입니다.

0

최적화를 위해 perm 테이블 (및 grad 테이블)이 사용됩니다. 그것들은 미리 계산 된 값의 룩업 테이블 일뿐입니다. 당신은 1)과 2) 모두에 맞습니다.

성능 및 휴대 성 외에 PRN을 사용할 수없는 이유가 없습니다.

관련 문제