728x90
반응형
728x90
반응형

--

플레이어에서 4개의 배열을 선언한다

반드시 원점으로 가야된다 

그리고 난후에 제자리로 돌아가게 해야한다 무조건

 

로컬좌표 - 각 객체의 좌표

월드좌표 - 월드세계의 좌표

 

 

m_vPoint[i] += m_tInfo.vPos 가 원점에서 각 객체에 다시 뿌려주는 코드

Look벡터로 방향을 조정하는구나 

 

시작점이 원점이었으면 vTemp -= 가 필요없다 

 

 

 

 

방향백터가 아니니까 Coord 를 사용

Coord 는 위치벡터 나머지는 싹다 Normal

 

***원점기준으로 변환이 이루어진다 ***

 

--

MFC - Microsoft Foundation Class

API와의 차이점은 c기반과 c++의 차이

 

단일문서 - visual studio같은거(뷰가 하나)

다중문서 - 포토샵의 형태(뷰가 여러개)

 

구글에 MFC구성이라고 치면 이미지 나옴

 

장점

계층구조

부모의 기능을 물려받음

 

단점

부피가 커짐

--

 

cWnd 핸들을 가지고 있다 

 

CallBack 함수는....................이벤트가 발생했을때 호출당하는 함수 (이벤트를 처리해주기 위함)

 

 

BEGIN_MESSAGE_MAP  ~  END_MESSAGE_MAP 가 이벤트 처리

 

 

dc를 쓰지않고 device를 쓴다 

 

장치를 사용하기 위해서는 장치에 대한 조사가 필요하다 그 후에 사용이 가능하다 

 

LPDIRECT3D9 장치 조사

LPDIRECT3DDEVICE9 장치를 사용할 수 있게 해준다 

 

m_p3D = 함수로 초기화 한다 (알아서 상황에 맞게 초기화 해준다)

 

-- 

 

E_FAIL

 

Afx는 MFC 전용함수들

 

D2D 에서는 자동으로 백버퍼를 제공해준다 오 좋다

 

무조건 모니터에서 제공하는 해상도의 사이즈로 설정해야 한다 !! 아니면 해상도가 어긋날 수 있다 .

 

멀티 샘플링 - 굴곡진 선을 부드러운 선으로 만들어줌 (속도가 느려서 안씀)

 

스텐실 버퍼 - 거울효과 같은걸  말한다.

 

Windowed = TRUE ( 창모드 하겠다)

 

스왑체인 - 그림을 뿌리는 방식 (우리는 전면 버퍼만 보게 된다. ) 

 

주사율 - 1초에 그리는 횟수 (우리는 보통 1초에 30정도를 볼 수 있다 )

 

싱글톤은 원래 생성자가 있고 클래스가 기본적으로 만드는 생성자가 3개다 

 

생성한 역순으로 지우자 !

 

 
728x90
반응형

'back-end > MFC' 카테고리의 다른 글

7. 회전,이동,크기 조절  (0) 2023.07.24
6. 삼각함수 법칙  (0) 2023.07.24
5. D3DXVec3Transform 세가지 함수  (0) 2023.07.24
4. D3DXVec3TransformCoord 함수  (0) 2023.07.24
3. d2d  (0) 2023.07.24
728x90
반응형

--

tagInfo에 pos와 Dir, Look (항상 0도를 바라보는 방향백터다) 추가

 

기본적으로 Look백터와 연산한다

 

내적을 할때는 항상 두 백터가 단위백터야 한다 .

 

 

ex)))

두 개의 백터를 내적한다고 치자 

 

v1 v2 cos세타 를 곱하면 

 

여기서 v1과 v2가 단위백터라면 v1 v2 cos세타를 연산하면 그 결과 자체가 cos세타가 나온다 

 

Look벡터를 (1, 0 , 0)으로 해 놓으면 그 자체가 단위백터가 된다는 뜻이다 

 

--

 

4 x 4 행렬을 사용하겠다 

행렬 왜쓰냐?

- 백터에서 표현할 수 있는게 위치 , 방향, 룩 백터 등이 있고

- 행렬로는 크기 ,  회전 , 이동 을 표현한다

 

백터로 플레이어로 이미 움직였는데 왜 행렬로 이동을 하느냐?

 - 행렬의 곱셈의 특성상 여러가지 상태를 하나의 행렬로 합칠 수 있다. 

 

 

--

 

월드행렬 =  스케일링 * 자전 * 이동 * 공전 * 부모

 

각 단어의 의미

스케일링은 크기를 의미

자전은 스스로 도는 것을 의미

이동은 말 그대로 위치 이동을 의미

공전을 어떤 축을 기준으로 그 축을 돈다

부모는 어떤 축을 기준으로 얼마나 떨어져있는지 의미(위치를 의미)

 

 

--

 

항등행렬은 0으로 값을 초기화 하면안된다 -> 왜냐면 각 자리마다 상태값을 가지고 있기 때문에 0으로 하면 상태가 사라짐

D3DXMatrixIdentitiy(&행렬)->항등행렬 초기화 하는 행렬

 

 

D3DXMatrixScaling(&matScale , x , y , x); 크기변환행렬-> 인자값이 비율로 들어온다 

(1, 1, 1)로 들어오면 크기가 그대로 유지 ( 2 , 2 , 2)로 들어오면 2배의 크기가 된다.

따라서 이미지가 한장만 있어도 다 표현이 가능하다

 

D3DXMatrixTranslation(&matTrans , x , y , x) 이동행렬 -> 백터에서 취기와 크기 방향을 표현하지만

연산의 간편화를 위해서 사용한다. 객체에 대한 모든 변화을 수행한 후에 행렬에 담아 사용한다. 

x,y,z는 백터의 x, 백터의 y , 백터의 z가 들어간다 .(백터에서 미리 이동을 모조리 끝내고 적용만 하는것이다 )

 

 

 

--

 

Z축 회전 행렬

 

(xcos세타 - ysin세타  xsin세타 + ycos세타)

 

 

--

 

백터와 행렬의 곱셈

 

 

백터는 (x,y,z) 인데 우리가 쓰는 행렬은 4x4의 행렬이다

숫자가 맞지않기 때문에 

임의로 백터를 (x,y,z,w)로 맞춰 4x4와 곱셈이 가능하도록 변경

이 임의에 w에 1이 들어갈때와 0이 들어갈때는 값이 다르다 

 

TransformCoord(에는 위치이동행렬에 사용 w가 1이 들어갈때) 위치 적용

 

TransformNormal(에는 0이 들어간다) 위치 미적용 - Normal을 좀 많이씀 - 단위백터화 시키는 함수다 (헤더 추가해야됨)

 

--

 

MoveTo로 사각형을 그리고

포신을 돌리자

w a s d 로 몸체를 돌리자

 

회전행렬 공식 이용 ( z축 회전공식 )

 

--

728x90
반응형

'back-end > MFC' 카테고리의 다른 글

8. 종합 mfc  (0) 2023.07.24
6. 삼각함수 법칙  (0) 2023.07.24
5. D3DXVec3Transform 세가지 함수  (0) 2023.07.24
4. D3DXVec3TransformCoord 함수  (0) 2023.07.24
3. d2d  (0) 2023.07.24
728x90
반응형

API와 차이점은 좌표를 사용하는것이 벡터와 행렬을 사용한다.

앞으로 사용할 2.5D ~ 3D에서 사용할 좌표를 공부한다. 

잘 기억해 두기를 바래

 

기본이 되는 백터와 행렬 !!

 

///////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

백터는 크기와 방향을 가진다. 

3D에서 가장 기본이 되는 단위 float형 3개가 들어가있다

'위치'는 백터의 성분이 아니다 

 

그렇지만 위치는 프로그래밍적으로 표현을 한다

각성분의 제곱 해서 더하면 -> 백터의 크기

 

참고 - 크기 = 힘 = 길이 = 스칼라

 

백터 상등 - 서로 다른 위치에 있는 같은 크기의 백터는 같다. 

 

백터의 차는 교환법칙 성립x - (방향이 달라질 수 있다.)

 

백터의 정규화( 단위 백터 ) - 따라가거나 바라보는 방향을 알고자 할때

 

 

m_vPos가 위치백터

m_vDir가 방향백터

 

 

///////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

백터의 외적    안쓴다

 

두개의 백터의 수직인 백터를 구하기 위해 외적을 사용

곱하는 순서 : 위 아래 순으로 곱하면 왼쪽으로 수직인 백터

   중 요      아래 위 순으로 곱하면 오른쪽으로 수직인 백터 왼손법칙 사용

 

 

 

***백터의 내적***

 

두 백터의 사잇각

 

x * x + y * y + z + z = x * x * y * y * cos세타

 

제 1코사인 법칙 - 한각의 크기가 90도를 넘지 않는 삼각형이고 b의 길이와 c의 길이를 알고 있을때 a의 길이를 구하는 공식

 

a = x + y

x = b * cosC

y = c * cosB

 

제 1코사인 법칙 (위에 3줄은 a 변에 대한 과정 )

 

a = b * cosC + c * cosB

b = c * cosA + a * cosC

c = a * cosB + b * cosA

 

제 2코사인 법칙 - 두 변과 끼인각을 알고 있을 때

 

a * a = b * b + c * c - 2bccosA

b * b = a * a + c * c - 2accosA

c * c = a * a + b * b - 2abcosA

 

///////////////////////////////////////////////////////////////////////////////////////////////////////////////

D3DXVec3Length(&방향백터) - 백터의 길이를 구함

D3DXVec3Normalize(&결과백터 , &방향백터) - 단위 백터화 

D3DXVec3Dot(&백터 , &백터) - 내적 

D3DXVec3Cross(&결과백터 , &백터 , &백터) - 외적

 

///////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

728x90
반응형

'back-end > MFC' 카테고리의 다른 글

8. 종합 mfc  (0) 2023.07.24
7. 회전,이동,크기 조절  (0) 2023.07.24
5. D3DXVec3Transform 세가지 함수  (0) 2023.07.24
4. D3DXVec3TransformCoord 함수  (0) 2023.07.24
3. d2d  (0) 2023.07.24

+ Recent posts

728x90
반응형