블로그 이미지
자신의 단점을 메꾸는 것을 단(鍛)이라 하고 자신의 강점을 갈고 닦는 것을 련(鍊)이라 하여, 두가지를 합친 것을 단련이라고 부른다. 붕대마음

카테고리

전체목록 (665)
참고사이트 (8)
Goal (4)
Travel (10)
My Life (104)
Game (35)
Game Review (7)
Game Plan (0)
Books (5)
English (1)
Optimizing (12)
Study (217)
유용한 것들_etc (44)
유용한 것들_func (20)
Unity (48)
Unreal (87)
작업장 (54)
RenderMonkey (6)
정리요망 (1)
따라잡기 시리즈 (0)
링크용 (0)
Total341,593
Today114
Yesterday125

'vector'에 해당되는 글 2건

  1. 2013.01.31 lambert (3)
  2. 2012.02.10 벡터

lambert

RenderMonkey / 2013.01.31 16:11

렘버트 또는 람베르트의 기본 공식은 dot(L,N).
http://mgun.tistory.com/1306
위 링크에서 엄청나게 마니 언급되었던 기본 조명모델이다.
이걸 렌더몽키에서 표현하는것도 무척 쉽다.

공식대로 계산을 하기 위해 Light Vector가 우선 필요하다.





사진으로 보니 더욱 명확하다.
램버트에 대한 내용이나 코사인 각도가 무었을 의미하는지 등은 언급한 링크에서 읽어보면 될 것 같고..
내가 말하고자 하는 것은 벡터의 방향이다.

이 부분에 대한 링크 : http://kblog.popekim.com/2011/01/blog-post_4153.html

첫번째 사진이나 두번째 사진이나 결국은 같은 거라고 생각한다.
내적의 특성상 두번째 사진의 개념은 부호를 한번 뒤집어서 벡터의 방향을 바꿔야 하긴 하지만
개인적인 생각으로는 두번째 사진이 "내가 보기에는" 이해하기가 쉽다.
옆 노멀벡터는 점이 속한 평면에서 수직인 벡터인데 결국 점을 기준으로 방향을 잡기 때문에
광원벡터 역시 광원에서 빛을 쏘는 방향이라고 일관성 있게 이해하고 싶다.


벡터에 대한 정리는 이 링크를 참고하세요. http://mgun.tistory.com/1143

무튼 라이트 위치를 추가해 주자


대략 오른쪽 위에, 모니터의 반대방향쪽에 위치시켰다.


오옷~! 빛의 위치는 바로 저기~!.. 2d 이미지라서 z위치는 식별하기 어렵지만..대략 저기임....

자~ 이제 노말은 어쩔거임? 노말은 이미 시멘틱이 존재한다.
그래서 걍 코딩으로 추가해 주면 된다.
struct VS_INPUT
{
   float4 mPosition : POSITION0;
   float3 mNormal : NORMAL;
};

이제 빛의 위치로 부터 빛의 방향벡터도 가져와야 겠지.
float3 lightDir = Output.mPosition.xyz - gWorldLightPosition;
lightDir = normalize(lightDir);
대부분 알고있겠지만 Position - LightPosition과 LightPosition - Position의 차이는 명백하다.
사실 무었을 하든 상관없다. 이 감산연산의 결과만 제대로 이해하고 있다면.
첫번째 식인 정점의 위치 P에서 광원의 위치 LP를 빼면 LP 에서 P로 향하는 벡터가 만들어 진다.
반대로 LP - P라면 정점 P에서 광원 LP로 향하는 벡터가 만들어 진다.
벡터는 크기와 방향을 가지기 때문에 이 방향을 제대로 아는 것이 상당히 중요하다.

float3 lightDir = Output.mPosition.xyz - gWorldLightPosition;
lightDir = normalize(lightDir);
이 식대로 계산하면 LP에서 P로 향하는 Light Vector을 만들 수 있다.
L(빛의방향 벡터)와 N을 내적해야 하는데 그러기 위해서는 두 벡터의 밑동이 서로 만나야 한다.
하지만 현재 L은 방향이 반대다. 즉 밑동이 광원의 위치이고 머리가 정점의 위치다.

Output.mDiffuse = dot(-lightDir, worldNormal);
그래서 이렇게 내적시 -을 곱해주어 방향을 바꾼다.

그리고 가끔 빼먹는 저 normalize !!.
욘석은 은근히 많은 사람들이 "그냥 올바른 값을 만들기 위한 초기화"정도로 이해하고 있는사람이 많지만
사실 내적의 공식을 들여다보면 반드시 필요한 "정리"다.
내적공식인 dot(A,B) = Cos각도 * A의 길이 * B의 길이로 정리할 수 있는데 두 벡터인 A와 B의 길이를 1로 만들어 주면
dot(A,B) = Cos 각도가 되서 단지 A벡터와 B의 벡터의 내적만으로 간단히 cos의 각도를 구할수 있다는 것이 핵심!
저 normalize가 바로 벡터의 길이를 1로 만들어 주는 정규화를 해 주는 녀석이다.
벡터의 길이가 1인 벡터를 단위벡터라고 말하는데 단위벡터를 직접 구하는건 그다지 어렵지 않다.
단위벡터 = 벡터 / 벡터의 길이.
즉 (1,2,3)의 벡터가 있다면 이 벡터의 길이는 sqrt(1*1 + 2*2 + 3*3) 가 되고
단위벡터는 (1,2,3) / sqrt(14) 가 된다.
사실 여기까진 몰라도 된다. 다만 내가 내가 무의식적으로 적어주는, 또는 빼 먹는 저 normalize가
결코 가볍지 않은 일을 한다는 것을 말하고 싶었다.

추가적으로...
 

half lambert
Output.mDiffuse = pow(dot(-lightDir, worldNormal) * 0.5 + 0.5, 4);


wrapped diffuse

float magicNmuber = 0.5; 
Output.mDiffuse = (dot(-lightDir, worldNormal) + magicNmuber) / (magicNmuber+1);

energy conserving wrapped diffuse
float magicNmuber = 0.5;  
float NdotN = dot(-lightDir,worldNormal);
Diffuse = saturate( (NdotN+magicNmuber) / ((magicNmuber+1)*(magicNmuber+1))); 


렌더몽키 파일 : 


 

'RenderMonkey' 카테고리의 다른 글

Shadow Mapping  (0) 2014.01.11
fresnel  (0) 2013.10.22
normal mapping (법선 매핑)  (2) 2013.02.07
기본적인 반사 벡터  (0) 2013.02.02
lambert  (3) 2013.01.31
흐음...렌더몽키라..  (0) 2013.01.29
Posted by 붕대마음

댓글을 달아 주세요

  1. 2013.02.13 11:49 김성준  댓글주소  수정/삭제  댓글쓰기

    자세한 설명 감사합니다~^^ 한가지 어리석은 질문을 드리겠습니다. 포프님의 책에서도 LightVector를 구하기위해 정점의위치(VP) - 라이트위치(LP) 로 해주고, 나중에 내적을 구할때 -Lightvector 이런식으로 "-"를 붙이는데, 이런식으로 하지않고, LP - VP 로하고 dot(LightVector, worldNormal) 이런식으로 하면 안되는것일까요?

    • 2013.02.13 16:19 신고 붕대마음  댓글주소  수정/삭제

      상관없습니다. 나중에 내적연산할 때만 제대로 설정해 주면 됩니다.
      벡터는 점A - 점B 라고 하면 이 벡터의 방향은 점B에서 점A로 향하는 벡터가 됩니다. 내적연산할 때 인자로 넣어주는 벡터가 어느방향인지만 알고 제대로 넣어준다면 상관없습니다. 벡터 내적시 벡터의 방향이
      왜 중요한지는 내적공식을 보면 알 수 있습니다.
      참고로 렌더몽키나 UDK가 깔려있으시다면 한번 테스트 해 보세요.
      렌더몽키 파일은 올려두었습니다.

  2. 2013.02.13 17:40 김성준  댓글주소  수정/삭제  댓글쓰기

    아~ 그렇군요 감사합니다~^^

벡터

Study/M's Lecture / 2012.02.10 12:33
참고 : 2005.02.21.noerror.벡터와행렬 kasa study에서 noerror님이 발표하신 내용.

vector_and_matrix.pdf



원래 웹상에서 내적관련 검색하다가 나온 스터디 자료인데 아주 오래전 것인듯..무려 7년전이다~!!!.
별생각 없이 보다가 4번째 장에 벡터 의미 라는 제목으로 space : direction, postion 이라는 단락이 있는데
이게 아무리 생각해 봐도 이해가 안되더라능...

이게 무슨 말일까....
벡터는 그냥 크기와 방향인데....위치?? 위치는 점이 가지는 특성이고....
벡터 의미에 방향은 왜 들어가 있는 거지? 하면서 vector space에 그러한 문구가 있었던가?
생각하다 보니 그냥 처음부터 천천히 정리해보자는 심정으로 다시 정리중.....
2005년도에도 참여해서 스터디 들었으면 좋았을 텐데.ㅜㅜ. 슬프군...


카테시안 좌표계(cartesian coordinates)
http://chanmi101.blog.me/120123706418
 

2차원 카테시안 좌표계 (x,y)
 

2차원 극 좌표계 (r,θ )
x = rcosθ y = rsinθ

 



왼손 좌표계와 오른손 좌표계 개념에 대한 혼재가 나타나는 이유는?
http://dwha.blogspot.com/2009/05/%EC%99%BC%EC%86%90-vs-%EC%98%A4%EB%A5%B8%EC%86%90-%EC%A2%8C%ED%91%9C%EA%B3%84-%ED%96%89%EC%9A%B0%EC%84%A0-vs-%EC%97%B4%EC%9A%B0%EC%84%A0-%ED%91%9C%ED%98%84%EB%B2%95.html

위 링크를 보면 조심스레 두가지 추측을 하는데 묘하게 설득력 있다.
두가지 추측 내용은 아래와 같다.
1. 왼손 좌표계를 쓰는 사람과 오른손 좌표계를 쓰는 사람들이 서로 다른 좌표계를 쓰는 것에 대한
   타당한(합당한) 이유를 찾고자 하기 때문.
2. 행우선과 열우선 방식이 왼손이나 오른손 좌표계와 연관이 있다고 오해 하는 것.
   즉 왼손좌표계를 따르는 DirectX오른손 좌표계를 따르는 OpenGl이 각각 

   행우선(vector * matrix)열우선(matrix * vector) 방식 이라서 이러한 오해가 일어났을 듯 하다.

벡터의 의미는?
1. 좋은 게임을 만드는 핵심 원리 : 크기와 방향을 나타내는 수학적인 도구.
2. dx9 셰이더 프로그래밍 : 방향과 크기를 가지는 것.       
3. 해골책 : 가속도나 속도처럼 크기와 방향을 동시에 표현해야만 정확히 표현할 수 있는 수치.  
4. 게임&인터랙티브 애플리케이션을 위한 수학 : 기하학적인 벡터 v는 크기(또는 길이)와 방향을 가지는 요소이고
                                                 그래픽적으로 끝이 화살표인 선분으로 표현된다.

결론
벡터를 표현하는데 있어 핵심적인 단어는 크기와 방향이다. 
여기서 방향을 뺀, 크기만을 나타내는 것을 스칼라 라고 한다. (ex : 음료수의 양, 생수통 500ml 등)

벡터공간은 머냐?
우선 벡터공간을 왜 알아야 할까?
벡터의 개념들을 캡슐화할 수 있는 형식적인 수단을 제공하고 벡터를 기호로 표현할 수 있도록 해준다.
기본 성분들이 실수집합의 원소이기 때문에 실벡터 공간이라고 불리는 벡터공간의 부분집합에 대해서 살펴보자.
일반적으로 이러한 경우 V가 R위에 존재한다고 말하고 이 경우에 R의 원소는 스칼라라고 한다.
실수란 0, 모든 정수 집합 Z, 모든 유리수의 집합(분수),  그리고 π 와 e 같이 분수로 표현할수 없는 무리수를 포함한다.
실벡터 공간의 예를 들어 보자.
1. 단순한 실수 집합 R.
2. 실수의 모든 순서쌍의 집합 R2.
    이를 수식으로 나타내면 R2 = {(x,y) | x,y ∈ R) 
    수식을 풀어 말하면 "모든 가능한 순서쌍 (x,y)의 집합이 있고 x,y는 실수집합의 원소이다".
3. R3도 위와 마찬가지 이다.
    수식으로 적으면 R3 = {(x,y,z) | x,y,z ∈ R) 
4. R4를 수식으로 적으면 R4 = {(x,y,z,w) | x,y,z,w ∈ R) 

결국은 Rn = {(x0, x1, ..., xn-1) | x0, x1, ..., xn-1 ∈ R}

위의 1~4까지의 예를 보면 이것들이 적합한 벡터공간일 수도 있고 단순한 숫자들의 열거일 수도 있다.
그래서 대수학적인 법칙을 따르는 두가지 연산자를 정의해야 하며 이는 벡터의 덧셈과 스칼라 곱셈이다.
1. V안에 임의의 u, 그리고 v에 대해서 u+v가 V안에 있다.
2. 실수집합 R 안에 a, 그리고 V안에 v에 대해서 av가 V안에 있다.

닫혀있다의 의미
http://mgun.tistory.com/1143

결론 
덧셈과 스칼라 곱셈 각각의 연산에 대해 닫혀있고 다음과 같은 성질을 만족하는 실수집합 R 위에 존재하는 집합 V.
V안의 모든 u,v,w,0 그리고 R안의 모든 a,b에 대해서 살펴 보면.
1. v + w = w + v     교환법칙
2. u + (v + w) = (u + v) + w      결합법칙
3. v + 0 = v 식을 만족시키는 원소 0이 존재    덧셈의 항등원
4. 모든 v에 대해서 v + (-v) = 0의 식을 만족시키는 -v원소가 존재      덧셈의 역원
5. (ab)v = a(bv)      결합법칙
6. (a + b)v = av + bv      분배법칙
7. a(v + w) = av + aw      분배법칙
8. 1 * v = v     곱셈의 항등원

부동 소수점
http://winapi.co.kr/clec/cpp2/18-1-4.htm

항등원과 역원에 대한 이야기
http://blog.naver.com/at3650/40118590797
항등원 : 자기자신이 나오게 하는 수
역원 : 항등원값이 나오게 하는 수

벡터 공간
http://srkhs123.egloos.com/184436

실벡터 공간, 표준 좌표계, 기저벡터, 선형결합, 선형독립적, 선형종속적
http://glog.springnote.com/pages/9437380?print=1
선형 결합 : S={v0,...vn-1}인 n개의 벡터들의 집합 s.
                a0,...an-1이 임의의 실수일 때 새로운 벡터 v를 생성하기 위해 벡터들을 결합.
                v = a0v0 + a1v1 + ... + an-1vn-1.
생성 : 선형 결합에 의해 생성되는 벡터들의 집합 T는 S의 생성. 집합 S가 T를 생성한다.
선형 종속적 : S안에 하나의 벡터 vi가 다른 원소들의 선형 결합과 동일하다 가정하고 vi가 존재한다.
                   vi = a0v0 + a1v1 + ... + an-1vn-1.
선형 독립적 : vi가 존재하지 않는다면 벡터들 v0,...,vn-1은 선형 독립적.
기저 벡터 : 주어진 벡터공간 V에서 V를 생성하는 V안의 n개의 선형 독립 벡터의 집합 β를 찾을 수 있다고 가정하자. 
                β를V의 기저라고 하고 β의각 원소들을 기저 벡터라고 한다.
차원 : 일반적으로 벡터공간의 차원은 그 공간을 생성하는 데 필요한 기저 벡터들의 숫자와 동일하다고 정의.

"게임&인터랙티브 어플리케이션을 위한 수학"의 벡터, 벡터공간에 대한 내용을
처음 읽었을 때는 "무슨 개솔" 하다가 두번쨰 읽었을때는 "그럴듯 한데?" 였다가
세번째 읽었을 때는 "흐음 그렇군" 이었는데 네번째 읽었더니~!!!! "그냥 외워졌다.ㅡㅡ; "....시밤..
나처럼 머리가 잘 안돌아간다면 그냥 외우는 것도 맘편할 듯...헐헐...젠장.

벡터공간에서 기저와 차원이 의미하는 것.
http://mgun.tistory.com/4
http://blog.naver.com/hellow1002/68274995

기저 벡터
http://www.gpgstudy.com/forum/viewtopic.php?t=2728
http://klaizard.tistory.com/entry/%EA%B8%B0%EC%A0%80-%EB%B2%A1%ED%84%B0basis-vector
http://hoholife.egloos.com/1379622

그렇다면 이런 벡터공간, 기저벡터, 선형 독립적, 차원 등의 것들을 왜 알아야 하는가?
그것은 수학적 또는 기하학적 벡터를 대수적으로 표현하기 위한 문제를 해결하기 위해서 이다.
벡터공간을 정의함으로써 벡터를 기호로 표시할 수 있고 이는 컴퓨터에 단위로 저장해서 계산하는데 도움이 된다.

affine space은 원점이 어딘지 모르는 벡터공간이다
http://spaurh.egloos.com/4019460

affine space에 관한 강좌 (수학 공부하시는 분인듯. 쉽게 잘 설명해줌)
https://www.youtube.com/watch?v=w_jOKawgNuA&feature=player_embedded    (유튜브 링크)

벡터가 위치를 다루지 않기 때문에 점을 벡터공간에 추가하여 위치를 표시.
점과 벡터의 덧셈이 가능해지므로 affine space에서는 점과 벡터의 덧셈에 의해 어떤 점을 표기할 수 있다.
http://blog.naver.com/laster40/94418794

affine transformation : 한 벡터 공간을 다른 벡터공간으로 대응시키는 변환.
http://ko.wikipedia.org/wiki/%EC%95%84%ED%95%80%EB%B3%80%ED%99%98

서울대 이구철 명예교수님의 Affine 변환 강좌.
http://phya.snu.ac.kr/~kclee/lects/lect11/lect11.htm
http://phya.snu.ac.kr/~kclee/lects/lect12/lect12.htm

affine translation
http://mathya.com.ne.kr/lecture_flash/the%20advanced%20course%20of%20flash/advanced%20I%20lecture/lecture_8/lecture8-affine%20translation-.htm


affine matrix
http://kant0105.egloos.com/4179216

벡터 합 :
u = v + w 를 그리고자 한다면 v의 시작(꼬리부분)과 w의 화살표부분(머리부분)을 연결하면 된다.

벡터 빼기 :
u = v - w 를 그리고자 한다면 w(두번쨰 벡터)의 머리에서 v(첫번째 벡터)의 머리로 연결하면 된다.

벡터 길이 :
벡터의 크기, |V|으로 표시, Norm이라고도 하며 피타고라스의 정의를 이용하여 얻을 수 있다.
Length = sqrt(x*x + y*y + z*z);

단위 벡터 :
방향만을 나타내는 벡터로 벡터의 성질인 크기와 방향에서 크기를 1로 하는 벡터이다.
정규화(normalize)라고 하며 벡터를 자신의 크기로 나누어 줌으로써 얻을 수 있다.
vector(x/Length, y/Length, z/Length);

벡터의 내적의 의미는?
내적의 결과값이 스칼라이므로 스칼라곱(scalar product) 또는 점곱(dot product)라고 불린다.
벡터의 방향 관계를 얻는 도구로 사용된다.
벡터의 내적공식 ->   AB=AxBx + AyBy
수학적 정의 ->         A∙B= |A| |B| cosθ

 

 

벡터 B의 크기에 cosθ를 곱하면
밑변의 길이가 나온다.
 

벡터 A의 크기에 cosθ를 곱하면
직각삼각형의 밑변이 나온다.


두번째 그림으로 내적인 |A| |B| cosθ을 설명하면  벡터A에 투영된 B의 길이에 A의 길이를 곱한 스칼라값이라고 할 수 있다.
세번째 그림으로 보면 벡터 B에 투영된 A의 길이를 곱한 스칼라 값이라고도 할 수 있다.

세번째 그림을 기준으로 B벡터에 투영된 A벡터를 구해보자.
A∙B= |A||B| cosθ 이므로 cosθ = (A∙B) / (|A||B|) 이렇게 된다.
그러므로  |A|cosθ = |A| * ( (A∙B) / (|A||B|) ) 요렇게 표현가능 하며 분모분자 정리로 |A|를 날리면
|A|cosθ =(A∙B) / |B| 이렇게 된다.
이 값은 A를 B에 투영한 크기라 하며 B방향의 단위 벡터를 곱해주면 B에 투영한 A의 분해벡터를 구할 수 있다.
B방향의 단위벡터는 Bunit = B / |B| 로 표시하며
A투영B = |A|cosθBunit =  ( (A∙B) / |B| )  *  (B / |B|) 가 되며 이를 좀 정리해주면
A투영B = |A|cosθBunit =  ( (A∙B) / |B| )  *  (B / |B|) = (A∙B / |B|2 )*B 이 된다.
또는 A∙A는 같은 벡터를 내적하는 것이므로 θ는 0이 되고 결국 cosθ는 1이므로
A∙A = |A||A|cosθ = |A||A|*1의 성질을 이용해 위의 식을 한번 더 정리하면
A투영B = |A|cosθBunit =  ( (A∙B) / |B| )  *  (B / |B|) = (A∙B / (B∙B)  )*B 이 된다.

다시 세번째 그림에서 B벡터와 A벡터를 점선으로 잇는 벡터를 구해보자.
위에서 언급했던 벡터의 뺼셈을 생각해 보자.
"벡터 빼기는 u = v - w 를 그리고자 한다면 w(두번쨰 벡터)의 머리에서 v(첫번째 벡터)의 머리로 연결하면 된다"
라고 위에서 언급하였다.
즉, 세번째 그림을 기준으로 한다면

여기서 두번쨰 벡터의 머리는 |A|cosθ가 되고 첫번쨰 벡터의 머리는 A가 되므로

u = v - w = A - |A|cosθ 이 되고 이 식에서 A투영값은 위의 빨간글씨대로 치환하면
A - |A|cosθ = A - (A∙B / (B∙B)  )*B 이 된다.


AB = 0이면 A⊥B          A와 B의 내적이 0이면 A와 B는 직교한다.
AB < 0이면 θ>90°        A와 B의 내적이 0보다 작으면 두 벡터가 이루는 각도는 90도 보다 크다
AB > 0이면 θ<90°        A와 B의 내적이 0보다 크다면 두 벡터가 이루는 각도는 90도 보다 자다

이 정의는 cos(x)로 얻어지는 것과 관련이 있다.
아래 원 그림을 보자.

 

 


BA를 보면 B랑 A는 90도 이고 삼각함수에서 cos90°은 0이다.
공식상(|A| |B| cosθ) 벡터 A와 벡터 B의 크기를 곱하더라도 cos90°가 0이기 때문에 결과값은 스칼라 0이 된다.
DA는 90도 이하이므로 0보다 큰 양수가 되고 CA는 90도 이상이지만 90°~180° 값이며 이 cos 값은 음수이다.
그래서 벡터의 크기인 양수와 곱하더라도 0보다 작은 음수의 값이 나오게 된다.
결론적으로 |A|와 |B|는 항상 양수이므로 cosθ에 의해 부호가 결정된다.

내적의 활용?
내적의 활용은 사실 공식 자체에 이미 나와있다.

짜잔~!. 각도를 구할수있다..빠밤...
내적은 한 벡터에 다른 벡터의 투영을 계산할 수 있기 때문에 사용되는 곳이 많다.
ex) 가시성 판단 : 삼각평면에 수직한 벡터와 카메라의 방향 벡터간의 내적으로 그 삼각평면이 보일지 결정.

구현 예)
float Vector::Dot(const Vector& other)
{
   return (x*other.x + y*other.y + z*other.z);
}

벡터 외적의 의미는?
내적도 했으니 당연히 외적도 해야 겠지?
벡터의 곱셈에는 두가지 방법이 있는데 하나는 위에서 소개한 결과값이 스칼라가 되는 내적이고
하나는 결과값이 벡터가 되는 외적이다.
벡터의 내적이 두 벡터간의 사잇각 관계를 나타낸다면 외적은 두 벡터에 모두 수직인 벡터를 결과로 얻는다.

벡터의 외적 공식 : A×B= a2b3−a3b2 , a3b1−a1b3 ,(a1b2−a2b1)
수학적 정의 : AxB = (|A||B|sinθ)E
여기서 E는 AxB방향의 단위벡터
외적의 결과 벡터의 방향은 오른손의 법칙을 사용하는데 외적은 교환법칙이 성립하지 않으므로
A와B의 순서에 신경을 써 줘야 한다.

그렇다면 외적은 어디에서 많이 사용되는가?
표면의 법선을 만들때 많이 사용된다.

위 그림을 보면 평면위의 세점에서 두벡터를 만들고 그 두벡터를 직교하는 법선벡터를 만들 수 있는데
외적의 수학적 의미 중 하나는 외적으로 나온 벡터의 크기는 두 벡터로 만들어진 평행사변형의 면적이라는 것이다.


외적의 구현 예)
Vector::Cross(const Vector& u, const Vector& v)
{
  x = u.y*v.z -u.z*v.y;
  y = u.z*v.x -u.x*v.z;
  z = u.x*v.y -u.y*v.x;
}

이렇게 해서 얼추 벡터에 대한 정리가 끝났다...
아..힘들었어..ㅜㅜ..

결론은... 처음 벡터 관련 정리 동기를 부여한 의문점은 안풀렸다는 거.ㅜㅜ..


Reference Link

- 포프TV, 왼손/오른손 좌표

- Max좌표계를 OpenGL에 사용하기

-




'Study > M's Lecture' 카테고리의 다른 글

3. 왜 물은 물처럼 보이는 걸까?  (0) 2013.01.17
2. 왜 물은 물처럼 보이는 걸까?  (0) 2012.12.14
1. 왜 물은 물처럼 보이는 걸까?  (0) 2012.12.14
감마 보정 (gamma correction)  (0) 2012.02.27
벡터  (0) 2012.02.10
가우스 필터  (0) 2012.01.31
Posted by 붕대마음

댓글을 달아 주세요

최근에 달린 댓글

최근에 받은 트랙백

글 보관함