Public(86)
-
행렬의 전치
행렬의 전치(transpose) , 즉 전치행렬은 주어진 행렬의 행들과 열들을 맞바꾼 것을 말한다. 다라서 m x n 행렬의 전치는 n x m 행렬이다. 행렬 M의 전치행렬을 로 표기한다. 다음 세 행렬의 전치행렬을 각각 구해 보자. 위에서 말했듯이, 주어진 행렬의 행들과 열들을 맞바꾸면 된다. 전치행렬에는 다음과 같은 유용한 속성이 있다. \begin{flushleft} 1. (A+B)^{T} = A^{T}+B^{T}\\ 2. (cA)^{T}=cA^{T}\\ 3. (AB)^{T} = B^{T}A^{T}\\ 4. (A^{T})^{T} = A\\ 5. (A^{-1})^{T} = (A^{T})^{-1}\\ \end{flushleft}
2022.10.06 -
행렬 곱셈
정의 만일 A가 m x n 행렬이고 B가 n x p 행렬이면 둘의 곱은 AB가 정의된다. 곱 AB는 하나의 m x p 행렬이다. 이를 C라고 할 때, C의 ij번째 성분은 A의 i번째 행벡터와 B의 j번째 열벡터의 내적이다. 즉, (식2.1) C(ij) = A(i,*) · B(*,j) 이다. 따라서 행렬 곱 AB가 정의되려면 A의 열수와 B의 행 수와 일치해야 한다. 다른 말로 하면, A의 행벡터의 차원이 B의 열벡터의 차원과 일치해야 하는 것이다. 이 차원들이 일치하지 않으면 식 2.1의 내적이 말이 되지 않는다. [예시 1] 다음과 같은 행렬들이 있다고 하자. 그러면 곱 AB는 정의되지 않는다. A의 행벡터의 차원은 2지만 B의 열벡터의 차원은 3이기 때문이다. 좀 더 구체적으로, A의 첫 행벡터와 ..
2022.10.06 -
행렬
3차원 컴퓨터 그래픽에서 행렬은 비례나 회전, 이동 같은 기하학적 변환을 간결하게 서술하는 데 쓰이며, 점이나 벡터의 좌푤르 한 기준계에서 다른 기준계로 변환하는 데에도 쓰인다. 이번 장에서는 행렬의 수학을 살펴본다. 이번 장의 목표 행렬과 행렬에 대해 정의되는 연산들을 이해한다. 단위행렬이 무엇인지, 그리고 행렬의 전치, 행렬식, 역행렬이 무엇인지 배운다. 벡터와 행렬의 곱셈을 일차결합의 관점에서 바라보는 방법을 배운다. 행렬 수학에 쓰이는 XNA Math 라이브러리의 주요 클래스들과 함수들에 익숙해진다. 정의 m x n 행렬(matrix) M은 m개의 행과 n개의 열로 이루어진 실수들의 정사각 배열이다. 행(row)들의 개수와 열(column)들의 개수를 곱한 것을 행렬의 차원이라고 부르고, 행렬을 ..
2022.10.04 -
Direct3D 첫번째 요약
Direct3D는 프로그래머와 그래픽 하드웨어 사이의 중재자라고 할 수 있다. 예를 들어 프로그래머는 Direct3D의 함수를 호출함으로써 자원 뷰를 하드웨어 렌더링 파이프라인에 묶거나 렌더링 파이프라인의 출력을 설정하거나 3차원 기하구조를 그린다. Direct3D 11의 경우, Direct3D 11 대응 그래픽 장치는 반드시 Direct3D 11의 기능 집합 전체를 지원해야 한다.(몇몇은 제외) COM(Component Object Model)은 DirectX의 프로그래밍 언어 독립성과 하위 호환성을 가능하게 하는 기술이다. Direct3D 프로그래머가 COM의 세부사항과 작동 방식을 구체적으로 알 필요는 없다. COM 인터페이스를 휙득하고 해제하는 방법만 알면 된다. 1차원 텍스처는 자료 원소들의 1..
2022.09.25 -
Direct3D 응용 프로그램의 디버깅
응용 프로그램 프레임워크는 다수의 Direct3D 함수들이 돌려주는 HRESULT 형식의 반환값을 점검해 주는 매크로를 제공한다. 그매크로는 d3dUtil.h에 다음과 같이 정의되어 있다. #if defined(DEBUG) | defined(_DEBUG) #ifndef HR #define HR(x) \ { \ HRESULT hr = (x); \ if(FAILED(hr)) \ { \ DXTrace(__FILE__, (DWORD)__LINE__, hr, L#x, true); \ } \ } #endif #else #ifndef HR #define HR(x) (x) #endif #endif 이 매크로는 함수의 반환 코드가 실패에 해당하는 값이면 그 반환 코드를 DXTrace 함수 (#include 및 dxerr..
2022.09.25 -
Direct3D 초기화 예제
현재까지의 응용 프로그램 프레임워크를 사용해서 간단한 예제 응용 프로그램을 만들것이다. 주된 기능은 부모 클래스 D3DApp이 대부분 담당하기 때문에 이 예제만의 코드는 거의 없다. 이 예제의 의의는 D3DApp에서 클래스를 하나 파생하고 이 예제만의 고유한 코드로 프레임워크 메서드들을 구현하는 방법을 보여주는 것이다. class InitDirect3DApp : public D3DApp { public: InitDirect3DApp(HINSTANCE hInstance); ~InitDirect3DApp(); bool Init(); void OnResize(); void UpdateScene(float dt); void DrawScene(); }; int WINAPI WinMain(HINSTANCE hIns..
2022.09.25