2013-08-25 2 views
1

저는 간단한 물 시뮬레이션을 구현하려고합니다. 이론은 GPU Gems 1 chapter 1입니다. 파장 (W)부분 도함수를 통한 탄젠트 및 비트 탄젠트 벡터 계산

heightfield function

여기서는 (Y는 임의의 지점에서의 높이를 나타내는와 XZ 평면에서 평면) 차원 평면을 생각한다면

높이 필드 함수로 주어진다 : 세계 공간에서 파 사이의 볏이에서 볏까지의 거리.

진폭 (A) : 수면에서 파고까지의 높이.

속도 (S) : 크레스트가 초당 앞으로 이동하는 거리입니다.

방향 (D) : 볏이 이동하는 파면에 수직 인 수평 벡터.

이것은 구현하기 쉽습니다.

GPUGems의 도움말에는 높이에 z 방향이 사용되지만 그래픽에는 표준이 아닙니다 (일반적으로 x는 너비, y는 높이, z는 깊이). 따라서 평면/수평 평면 방향을 의미하는 xz 방향을 참조하겠습니다.

그래서 주어진 점에서 높이 (y) 값을 계산하면 조명 방정식에 필요한 법선 벡터를 계산할 수 있도록 그 점에 대한 접선 및 접선 벡터를 계산해야합니다.

비트 및 접선 벡터는 x 및 z 방향으로 편미분됩니다 (y는 높이 필드 값임).

내 질문은 높이 필드 함수에 대해 x 및 z 방향에서 부분 미분을 어떻게 취할 수 있습니까?

기사는 x 방향에 대한 편미분이

partial derivative in the x direction

내가 편미분 from this video:을 복용의 개념을 이해

partial derivative in the x direction2

에 의해 제공되는 것을 말한다, 그러나 나는 방법을 모른다 내 고지 함수의 편미분을 취하는 것.

누군가가 설명 할 수 있습니까 (예 : 5 점) - 수학에 대한 나의 이해는 좋지 않습니다! 확장 된 내적으로 위의 공식이다

W(x) = A * sin(w * (D.x * x + D.y * z) + t * phi) 
    = A * sin(w * D.x * x + w * D.y * z + t * phi) 

:

답변

2

당신은 다음 식을 유도하고자합니다. 우리는 x와 관련하여 도함수를 찾고자하므로 다른 모든 변수 (x 제외)는 상수로 간주됩니다.

c1 = A 
c2 = w * D.x 
c3 = w * D.y * z + t * phi 
W(x) = c1 * sin(c2 * x + c3) 

유도체이다 : 우리는 상수 대체 할 대체 되돌리기

W'(x) = c1 * c2 * cos(c2 * x + c3) 

을 우리 얻을 : 소정의 접선의 y 성분을 설명

W'(x) = A * w * D.x * cos(w * D.x * x + w * D.y * z + t * phi) 

위치.

tangent = (1, W'(x), 0) 
      = (1, A * w * D.x * cos(w * D.x * x + w * D.y * z + t * phi), 0) 
bitangent = (0, W'(z), 1) 
      = (0, A * w * D.y * cos(w * D.y * z + w * D.x * x + t * phi), 1) 
+0

감사 광범위한 답변 너무 :) :

마찬가지로 bitangent (Z에 대하여 유도체) 따라서

W'(z) = A * w * D.y * cos(w * D.y * z + w * D.x * x + t * phi) 

의해 설명 될 수 있습니다 – fishfood

관련 문제