2017-11-01 25 views
1

삼각형 모양의 점 int[][]의 배열이 주어지면 모든 3 점이 삼각형을 나타내므로 각 삼각형에 대해 한 점만 표시 (식별)하여 개별 삼각형 하나 이상의 포인트가 표시되어 있습니다.Delaunay 삼각 측량에서 각 삼각형 하나의 꼭지점을 표시하는 방법

각 삼각형의 높이가 1 점이고 다른 점의 Z- 값이 0이되도록 각 점에 z 값을 추가하려고합니다. 평면 삼각형을 원하지 않는 이유는 다음과 같습니다. 때문에 정상적인 각도는 항상 빛을 마주하기 때문에 내 광원은 삼각형에 거의 영향을 미치지 않을 것이기 때문입니다.

다음은 동영상입니다. 마우스 커서는 위의 광원을 나타냅니다 (마우스가 조명에 영향을주지 않는 시작 부분 무시). 당신은 모든 포인트가 0

https://streamable.com/w5spi

난 그냥 삼각형의 중심에 점을 추가 해봤과의 Z 값이 있기 때문에 삼각형의 일부는 그들에게 일정한 색상을 알 수 있습니다 세 개의 새로운 삼각형을 만들지 만, 삼각형 간격의 균일 성이 엉망입니다.

답변

2

Delaunay는 깊이를 생성하는 간단한 수단을 제공하지 않으므로 Simplex noise 함수와 Delaunay 삼각형 점을 조합하여 사용하는 것이 좋습니다.

두 가지를 서로 "맵핑"하여 Simplex 노이즈 함수에서 정규화 된 델라 네이 삼각형 포인트 아래의 값을 추출하고 Z/고도에 사용합니다.

Illustration
원리 : 정규화 삼각형 점 들로네로부터 상기 SN 함수를 통해 추출 Z는 정규화 된 X/Y의 위치를 ​​사용.

자바 스크립트에는 많은 Simplex Noise implementations가 있습니다. 특허에 설명 된 기술을 사용하는 경우 3D 버전patent attached입니다. 3D가 필요한 경우 대체하려면 OpenSimplex noise을 참조하십시오. npm -이 경우 2D 버전만으로도 충분합니다.

+1

감사합니다. 단방향 노이즈를 사용하면 포인트에 임의의 정수를 할당하는 것보다 자연스러운 z 값을 생성하는 것처럼 보입니다. 나는 [open-simplex-noise] (https://www.npmjs.com/package/open-simplex-noise)를 사용하여 끝내었다. – getmicah