Search Results for 'Normal'

ATOM Icon

1 POSTS

  1. 2005/12/17 HeightMap 빠른 노말 계산 by chungki

HeightMap 빠른 노말 계산

출처 : http://myevan.net/phpBB/viewtopic.php?t=1482
내용은 GPG3에도 나오고 여기저기 있지만, 글 자체는 빗자루님 홈페이지에 퍼왔다.


한 버텍스(x, y, z)의 주변 버텍스는

코드:
v
1(x+1, y, h1)
v2(x, y+1, h2)
v3(x-1, y, h3)
v4(x, y-1, h4)


로 표현할수 있다.

내적공식

코드:
CrossProduct(v1, v2)=
(
v1.y*v2.z-v1.z*v2.y,
v1.z*v2.x-v1.x*v2.z,
v1.x*v2.y-v1.y*v2.x
)


을 사용해서

이 중심버텍스의 주변의 페이스 노말을 구하면

코드:
v1=(x+a, y+b, c)
v2=(x+d, y+e, f)

CrossProduct(v1, v2)
=(v1.y*v2.z-v1.z*v2.y, v1.z*v2.x-v1.x*v2.z, v1.x*v2.y-v1.y*v2.x)
=((y+b)*f-c*(y+e), c*(x+d)-(x+a)*f, (x+a)*(y+e)-(y+b)*(x+d))
=(yf+fb-yc-ce, cx+cd-fx-af, xy+xe+ay+ae-xy-dy-bx-bd)
=((f-c)y+fb-ce, (c-f)x+cd-af, (e-b)x+(a-d)y+ae-bd)


을 이용해 정리하면

코드:

v1=(x+1, y, h1) a=1, b=0, c=h1
v2=(x, y+1, h2) d=0, e=1, f=h2
n1=CrossProduct(v1, v2)=((h2-h1)y-h1, (h1-h2)x-h2, x+y+1)

v2=(x, y+1, h2) a=0, b=1, c=h2
v3=(x-1, y, h3) d=-1, e=0, f=h3
n2=CrossProduct(v2, v3)=((h3-h2)y+h3, (h2-h3)x-h2, -x+y+1)


v3=(x-1, y, h3) a=-1, b=0, c=h3
v4=(x, y-1, h4) d=0, e=-1, f=h4
n3=CrossProduct(v3, v4)=((h4-h3)y+h3, (h3-h4)x+h4, -x-y+1)

v4=(x, y-1, h4) a=0, b=-1, c=h4
v1=(x+1, y, h1) d=1, e=0, f=h1
n4=CrossProduct(v4, v1)=((h1-h4)y-h1, (h4-h1)x+h4, x-y+1)



페이스노말벡터들의 합을 구하면


코드:

n1((h2-h1)y-h1, (h1-h2)x-h2, x+y+1) +n2((h3-h2)y+h3, (h2-h3)x-h2, -x+y+1) +n3((h4-h3)y+h3, (h3-h4)x+h4, -x-y+1) +n4((h1-h4)y-h1, (h4-h1)x+h4, x-y+1) = ((h2-h1+h3-h2+h4-h3+h1-h4)y-h1+h3+h3-h1, (h1-h2+h2-h3+h3-h4+h4-h1)x-h2-h2+h4+h4, (1-1-1+1)x+(1+1-1-1)y+(1+1+1+1)) =(2(h3-h1), 2(h4-h2), 4) =2(h3-h1, h4-h2, 2)



4개의 페이스노말벡터의 합이므로 4로 나누면


코드:

(n1+n2+n3+n4)/4=2(h3-h1, h4-h2, 2)/4=(h3-h1, h4-h2, 2)/2


가 된다. 이 값을 Normalize해서 사용한다.

Posted by chungki

2005/12/17 01:48 2005/12/17 01:48
,
Response
No Trackback , No Comment
RSS :
http://www.chungki.net/tc/rss/response/188


블로그 이미지

Nice !!!!!!!!

- chungki

Notices

Archives

Authors

  1. chungki

Calendar

«   2012/05   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Site Stats

Total hits:
73375
Today:
6
Yesterday:
20