2013-08-24 3 views
1

저는 Perlin 노이즈와 방사형 그래디언트 조합을 사용하여 섬을 생성했습니다 - this awesome Reddit answer에 개략적으로 설명되어 있습니다. 그것은 꽤 잘 작동하지만 분명히 섬들은 모두 원형입니다. 그리고 나는 더 다양한 것을 원합니다.2D 기하학적 모양을위한 그래디언트

기하학적 도형의 방정식을 그래디언트의 방정식으로 변환하는 일반적인 방법이 있는지 궁금합니다. 예 : 유클리드 거리가 원에 해당하는 모양을 나타내는 수식입니다. 이것이 가능한가? 명백한가요?

답변

0

기하학적 도형에 대한 암시적인 서페이스 또는 Level Set (wiki)을 정의하는 것은 기본적으로 사용자가 요구하는 것입니다. 예컨대, 반지름 R 인 원의 내재적 표면

F (X, Y) = X^2 + y^2 - R은^2

참고 때 F (X, Y) = 0 , 그 원의 표면을 정의합니다.0이면 x^2 + y^2 < R^2 일 때 점 (x, y)은 원점을 중심으로하는 원 안에 있음을 의미합니다. 마지막으로 f (x, y)> 0은 점 (x, y)이 원 밖에 있음을 의미합니다. 이 이미지를 만들기 위해서는 모든 픽셀을 반복하고 f (x, y)를 계산하면서 최소값과 최대 값을 찾은 다음 전체 이미지의 범위를 0에서 1 사이의 범위로 조정해야합니다.

기술적으로는 거리를 제공하지 않습니다. 원은 특별한 경우입니다. (x^2 + y^2) 방정식 원점의 제곱 거리 함수이기 때문입니다. 이것은 당신이 당신의 문제를 찾을 가능성이 가장 큰 효과를 제공합니다 - 음의 내부, 양의 내부 (또는 그 반대로), 크기는 w. 주어진 점으로부터 표면까지의 거리.

기하학적 모양에 대한 모든 방정식을 얻으려면 f (x, y)를 만들기 위해 모든 조건을 한쪽에서 가져와야합니다. 예를 들어 x * y = log (x)를 취합니다. 그것은 x * y - log (x) = 0이 될 수 있으므로 f (x, y) = x * y - log (x)가 될 수 있습니다.

관련 문제