- 렌더링 파이프라인이란?

렌더링 파이프라인

 기하학적으로 3D 장면을 구성하고 가상의 카메라를 설정한 뒤에 모니터에 2D 표현을 만들어내는 과정을 수행해야하는데, 이와 같은 과정을 렌더링 파이프라인 이라고 한다. 파이프라인 내에서 몇 가지 단계에 의해 하나의 좌표 시스템에서 다른 시스템으로 변화하는 과정이 이용되는데, 이 변환에는 행렬이 이용되며, Direct3D의 책임 하에 이루어진다.

 

1. 로컬 스페이스

 모델링 스페이스라고도 불리는 로컬 스페이스(Local Space)는 우리가 물체의 삼각형 리스트를 정의하는 데 이용하는 좌표 시스템이다. 로컬 스페이스는 모델링 과정을 쉽고 단순하게 만들어주며, 모델 자체의 로컬 좌표 시스템을 이용하는 것이 월드에서 직접 모델을 구성하는 것보다 쉽다.

 

2. 월드 스페이스

 로컬 스페이스로 구성한 다수의 모델들은 월드 좌표 시스템으로 옮겨 하나의 장면을 구성해야 한다. 로컬 스페이스의 물체들은 이동, 회전, 크기 변환 등을 포함하는 월드 변환이라는 작업을 거쳐 월드 스페이스로 옮겨진다. 월드 변환은 하나의 행렬로 표현되며, 변환 타입에 D3DTS_WORLD를 지정하고 IDirect3DDevice9::SetTransform 메서드를 호출하여 수행할 수 있다.

 

3. 뷰 스페이스

 월드 스페이스 내에서 기하물체와 카메라는 월드 좌표 시스템과 연계되어 정의한다. 그러나 카메라가 월드 내 임의의 위치나 방위를 가진다면 투영이나 그 밖의 작업이 어렵거나 비효율적이되는데, 이를 해결하기 위해 카메라를 월드 시스템의 원점으로 변환하고, 카메라가 양의 z축을 내려다 보도록 회전시키는 작업을 한다. 이러한 변환을 뷰 스페이스 변환이라 하며, 이 변환을 거친 뒤의 기하물체는 뷰 스페이스 내에 위치한다고 말한다.

 

4. 후면 추려 내기(backface culling)

 폴리곤은 두 개의 면을 가지고 있으며 하나의 면을 전면, 다른 면을 후면이라 부른다. 화면에 보이는 일반적인 물체는 전면을 보여주며, 후면의 폴리곤은 보이지 않아야한다. 즉, 후면의 폴리곤을 처리에서 제거하는 작업을 후면 추려 내기라한다. 이 과정 중 Direct3D의 입장에서 어떤 폴리곤이 전면 폴리곤이고 후면 폴리곤인지 확인 할 수 있어야 하는데, 이러한 작업을 두르기 순서라고 한다.

 

5. 조명

 광원은 월드 스페이스 내에 정의되지만, 뷰 스페이스 변환에 의해 뷰 스페이스로 변환 된다. 광원은 물체의 명암을 추가하여 장면의 사실감을 더해준다.

 

6. 클리핑(Clipping)

 시야 볼륨 외부의 기하물체를 추려내는 과정을 클리핑(Clipping) 이라한다. 시야 절두체에서의 삼각형 위치는 다음과 같이 구분할 수 있다.

  • 완전한 내부 - 삼각형이 완전히 절두체 내부에 위치하면 그대로 보존되어 다음 단계로 진행한다.
  • 완전한 외부 - 삼각형이 완전히 절두체 와부에 위치하면 추려내어진다.
  • 부분적 내부 - 삼각형이 부분적으로 절두체 내부에 위치하면 삼각형을 두개의 부분으로 분리한다. 절두체 내부의 부분은 보존되며, 나머지는 추려내어진다.

 

7. 투영(Projection)

 뷰 스페이스에서는 3D 장면의 2D 표면을 얻는 과정이 남아있다. 이와 같이 n 차원에서 n-1 차원을 얻는 과정을 투영(Projection)이라 한다. 원근 투영(Perspective Projection)을 이용하여 기하물체를 투사한다. 즉 카메라에서 멀리 떨어진 물체는 가까운 물체보다 작게 나타난다. 

 

8. 뷰포트 변환

 프로젝트의 윈도우의 좌표를 뷰 포트라 불리는 화면의 직사각형으로 변환하는 과정을 말한다. 게임에서의 뷰 포트는 직사각형의 전체 화면이 되지만, 윈도우 모드에서 실행하는 경우에는 클라이언트 영역이나 화면의 일부가 될 수도 있다.

 

9. 레스터라이즈

 스크린 좌표로 버텍스들이 변환한 다음에는 2D 삼각형들의 리스트를 가지게 된다. 레스터라이즈 단계는 각각의 삼각형을 그리는데 필요한 픽셀컬러들을 계산하는 과정이다.

'DirectX9' 카테고리의 다른 글

Direct3D에서의 모델 표현과 가상 카메라  (0) 2021.06.02
Direct3D 기초  (0) 2021.06.02
VS2017에서 DirectX9 SDK 세팅하기  (0) 2021.06.02
평면(Plane)  (0) 2021.06.02
행렬의 변환  (0) 2021.05.31

1. 모델 표현

 장면(Scene)은 물체나 모델의 모음이다. 물체는 삼각형 메쉬의 묘사로 이루어지는데, 메쉬의 삼각형은 우리가 모델링하는 물체의 기본적인 구성 성분이 되며, 우리는 메쉬 삼각형을 참조하는 용어로 다각형(polygon), 기본형(primitive), 그리고 메쉬 기하물체를 상호 교환적으로 이용한다. 다각형에서 두개의 변이 만나는 지점을 버텍스(vertex)라 한다. 

세개의 버텍스로 정의된 하나의 삼각형

 -1 버텍스(vertex) 포맷

 Direct3D에서 버텍스는 수학적 정의 외에도 부가적인 특성으로 이루어진다. 하나의 버텍스는 법선 특성 외에도 색상 특성을 가질수 있다. 즉, Direct3D는 버텍스 포멧을 구성할 수 있는 유연성을 제공한다.

 -2 삼각형(Triangle)

 삼각형은 3D 물체의 기본 구성 요소로서, 물체를 구성하기 위해서는 물체의 모양과 외형을 묘사하는 삼각형 리스트를 만들어야 한다. 삼각형 리스트는 우리가 그리고자하는 각각의 삼각형에 대한 데이터를 포함하는데, 예를 들어, 사각형을 만들기 위해서는 두 개의 삼각형으로 나누고 각각의 삼각형을 구성하는 버텍스를 지정해야한다.

 -3 인덱스(Index)

 3D 물체를 구성하는 삼각형들은 동일한 버텍스들을 공유하는 경우가 많다. 모델의 복잡성과 세밀함이 증가할수록 중복되는 버텍스의 수 역시 증가한다. 이를 해결하기 위해 인덱스 개념을 이용하는데, 먼저 버텍스 리스트와 인덱스 리스트를 구성하고, 버텍스 리스트는 모든 버텍스들을 모함하며, 인덱스 리스트는 삼각형을 구성하기 위한 버텍스리스트로의 인덱스 값을 포함한다.

 

2. 가상 카메라

 카메라(Camera)는 관찰자가 볼 수 있는 세계의 부분을 지정하는 것으로, 2D 이미지를 생성하기 위해 세계의 어떤 부분이 필요한지를 결정하며, 세계 내에 위치하며 보여질 공간의 부피를 정의한다. 이 공간의 부피를 절두체(Frustum)이라 한다.

 절두체는 시야각과 가까운 평면, 먼 평면에 의해 정의된다.

절두체(Frustum)

 이 공간에 포함되지 않는 물체들은 보여지지 않으며 이후 처리에서 제외되어야 한다. 이와 같은 데이터의 제외 처리를 클리핑(Clipping)이라 부른다.

'DirectX9' 카테고리의 다른 글

렌더링 파이프라인  (0) 2021.06.02
Direct3D 기초  (0) 2021.06.02
VS2017에서 DirectX9 SDK 세팅하기  (0) 2021.06.02
평면(Plane)  (0) 2021.06.02
행렬의 변환  (0) 2021.05.31

1. Direct3D 개요

 Direct 3D는 3D 가속 하드웨어를 이용해 3D 세계를 표현 할 수 있도록 해주는 저수준 그래픽 API.

 그래픽 장치(3D 하드웨어)를 연결하는 중개자.

어플리케이션, Direct3D, 하드웨어 간의 관계

· Direct3D

 어플리케이션 또는 프로그래머에게 공개하는 인터페이스와 함수들로 구성되어 있다. 이들 인터페이스와 함수는 현재 버전의 Direct3D가 지원하는 모든 기능을 나타낸다. 

· HAL

 Direct3D와 그래픽 장치 사이에 하드웨어 추상 층(HAL: Hardware Abstraction Layer)이라는 중간 단계가 존재한다. 시장에 존재하는 그래픽 카드의 종류는 매우 다양하며 각각의 카드들은 다양한 방법으로 작동하기 때문에, Direct3D가 직접 그래픽 장치를 제어하기 불가능하다. 제조사에서 HAL을 구현하고, Direct3D가 HAL을 통해서 특정 작업을 요청하면 동작 방식이 다른 모든 그래픽 장치를 Direct3D의 동일한 명령으로 해당 작업을 수행한다.

 

2. COM(컴포넌트 객체 모델: Component Object Model)

 컴포넌트 객체 모델(COM)은 DirectX를 프로그래밍 언어에 독립적으로 만들어주고 하위 호환성을 갖출 수 있게 하는 기술. COM 객체를 인터페이스로 부르며, C++ 클래스와 비슷하게 이용.

 다른 COM 인터페이스의 매서드나 특수한 함수를 통해 COM 인터페이스의 포인터를 얻는다는 것이며, C++ new 키워드로 COM 인터페이스를 만드는 것이 아니다.

인터페이스를 이용하는 작업이 모두 종료되면, 인터페이스의 Release 메서드를 호출 할 것. COM 객체는 자신의 메모리 관리를 스스로 수행한다.

 

3. 기본적인 그래픽 개념과 Direct3D 형에 대한 이해

-1 표면(Surface)

 표면은 Direct3D가 주로 2D 이미지 데이터를 보관하는 데 이용하는 픽셀의 행렬이다.

표면

 -2 멀티 샘플링

 멀티 샘플링(Multisampling)은 픽셀 매트릭스로 이미지를 표현할 때 나타나는 거친 이미지를 부드럽게 만드는 기술

 -3 픽셀 포맷

 표면이나 텍스처를 만들기 위해서는 Direct3D 자원의 픽셀 포맷을 지정해야한다. 픽셀 포멧은 D3DFORMAT 열거형 멤버로 지정되며, 자주 이용하는 포멧은 다음과 같다

  • D3DFMT_R8G8B8 - 24bit 픽셀 포멧을 지정한다.
  • D3DFMT_X8R8G8B8 - 32bit 픽셀 포맷을 지정한다. 가장 왼쪽의 8bit는 이용하지 않는다.
  • D3DFMT_A8R8G8B8 - 32bit 픽셀 포맷을 지정한다. 가장 왼쪽의 8bit는 알파값을 지정한다.
  • D3DFMT_A16R16G16B16F - 64bit 부동소수점 픽셀 포맷을 지정한다. 가장 왼쪽의 16bit는 알파값을 지정한다
  • D3DFMT_A32R32G32B32F - 128bit 부동소수점 픽셀 포맷을 지정한다. 가장 왼쪽의 32bit는 알파값을 지정한다.

 -4 메모리 풀

 표면이나 그 밖의 다양한 Direct3D 자원들은 여러 가지 종류의 메모리 풀에 보관할 수 있다. 

  • D3DPOOL_DEFAULT - 디폴트 메모리 풀은 자원 타입과 이용 방식에 가장 적합한 자원들을 메모리에 보관하도록 Direct3D에 요청한다. 여기서 말하는 자원이랑 비디오 메모리나 AGP 메모리, 혹은 시스템 메모리 등을 말하는 것이고, 디폴트 풀 내의 자원은 반드시 IDirect3DDevice9::Reset 호출 이전에 해제 되어야 하며, reset 호출 이후에 다시 초기화되어야 한다.
  • D3DPOOL_MANAGED - 관리 풀에 보관된 자원은 Direct3D에 의해 관리된다(즉, 필요에 따라 자동으로 비디오 메모리나 AGP 메모리로 옮겨진다). 부가적으로 자원의 백업 복사본이 시스템 메모리 내에 보관되는데, 어플리케이션이 자원에 접근하고 수정할 때는 시스템 복사본을 이용하여, Direct3D는 필요에 따라 자동으로 이를 비디오 메모리에 갱신한다.
  • D3DPOOL_SYSTEMMEM - 시스템 메모리 내에 보관될 자원을 지정한다.
  • D3DPOOL_SCRATCH - 시스템 메모리 내에 보관될 자원을 지정한다. 앞의 D3DPOOL_SYSTEMMEM과 달리 이 풀의 자원은 그래픽 장치의 제한을 따라서는 안 된다. 따라서 장치는 이 풀 내의 자원에 직접 접근할 수 없지만, 자원을 두 풀 사이에 서로 복사하는 것은 가능하다.

 -5 스왑 체인과 페이지 플리핑

 Direct3D는 보통 두 개나 세 개의 표면을 하나의 컬렉션으로 관리하는데, 이를 스왑 체인이라 부른다. 스왑 체인은 IDirect3DSwapChain9 인터페이스를 통해 이용할 수 있다.

 스왑 체인 과 페이지 플리핑 기술은 프레임 간의 부드러운 애니메이션을 제공하기 위한 것이다. 다음은 두 개의 표면 간의 스왑 체인을 보여주고 있다.

두 개의 표면을 가진 스왑 체인(전면 버퍼와 후면 버퍼)

 전면 버퍼 슬롯의 표면은 현재 모니터에 디스플레이되는 이미지와 대응된다. 모니터도 전면 버퍼의 이미지를 즉시 디스플레이 할 수 있는 것은 아니며, 주사율에 따라 약간의 시간이 필요하다. 60Hz의 주사율을 가진 모니터면 1/60초 정도의 시간이 필요하다. 어플리케이션의 프레임율과 모니터의 주사율이 동기화 되지 않는 경우가 흔한데, 이를 해결 하기 위해 화면 밖의 표면(후면 버퍼)에 렌더링을 수행하고, 전면 버퍼의 디스플레이가 완료되면 스왑 체인의 끝으로 돌아가 후면 버퍼를 전면 버퍼로 전환하는 방법을 이용한다.

 렌더링 코드의 구조는 다음과 같다. 

  1. 후면 버퍼를 렌더링한다.
  2. 후면 버퍼를 시연한다.
  3. 1번으로 돌아간다.

-6 깊이 버퍼

 깊이 버퍼(depth buffer)는 이미지 데이터가 아닌 특정 픽셀의 깊이 정보를 포함하는 표면을 말하며, 깊이 버퍼 내에는 최종 렌더링된 이미지의 각 픽셀에 해당하는 항목들을 포함한다. Direct3D는 물체의 픽셀이 다른 픽셀을 가리는지 여부를 판단하기 위해 깊이 버퍼링 혹은 z-버퍼링을 이용한다.

 깊이 버퍼링은 각 픽셀의 깊이 값을 계산하고 깊이 테스를 수행한다. 카메라와 가까운 픽셀이 뒤쪽의 픽셀을 가리는 간단한 원리다.

 

 -7 버텍스 프로세싱

 버텍스는 3D 기하물체를 구성하는 기본 단위로, 소프트웨어(software vertex processing)나 하드웨어(hardware vertex processing)의 두 가지 방법으로 처리할 수 있다.

'DirectX9' 카테고리의 다른 글

렌더링 파이프라인  (0) 2021.06.02
Direct3D에서의 모델 표현과 가상 카메라  (0) 2021.06.02
VS2017에서 DirectX9 SDK 세팅하기  (0) 2021.06.02
평면(Plane)  (0) 2021.06.02
행렬의 변환  (0) 2021.05.31

개발 환경

Window 10 Pro (20H2)

Visual Studio 2017

DirectX9 SDK(June 2010)

DirectX9 SDK(June 2010) 다운로드 하기

 

DirectX SDK - (June 2010)

This download is the legacy DirectX SDK. It is now end-of-life and should only be used for maintaining older software. For targeting DirectX for Windows 7 or later, use the modern Windows SDK instead.

www.microsoft.com

 

(1) SDK 설치하기

두 개의 선택지중 아무거나 해도 상관없습니다.
설치 진행

단, 설치 중 다음과 같은 에러가 발생할 수 있다.

해당 컴퓨터에 일반 배포용 런타임 패키지 설치시 나오는 오류(S1023)
두 항목을 삭제 하고 재설치하면 해결된다.

 

(2) Visual Studio 2017 환경 세팅

 

새 프로젝트를 만든다
속성 열기
VC++ 디렉터리에서 방금 설치한 DirectX SDK의 경로를 '포함 디렉터리'와 '라이브러리 디렉터리'에 추가해주어야 한다.
포함 디렉터리에 Include 폴더를 경로 추가
라이브러리 디렉터리에 Lib\x86 폴더를 경로 추가
링커에 실질적으로 사용하는 lib파일을 추가해 주어야한다.

 

추가 종속성에 다음 라이브러리를 추가한다. d3d9.lib, d3dx9.lib, winmm.lib
구성 속성->일반으로 가서 문자 집합을 멀티바이트 문자 집합 사용으로 변경

위 과정이 완료 되면 개발환경이 적용되었다.

 

'DirectX9' 카테고리의 다른 글

Direct3D에서의 모델 표현과 가상 카메라  (0) 2021.06.02
Direct3D 기초  (0) 2021.06.02
평면(Plane)  (0) 2021.06.02
행렬의 변환  (0) 2021.05.31
항등 행렬, 역 행렬, 행렬의 전치  (0) 2021.05.31

- 평면의 방정식

평면(Plane)은 하나의 벡터 n과 평면 상의 점 으로 표현된다. 이때 벡터 n은 평면의 법선 벡터 라고 부르며 평면과 수직을 이룬다.

 

평면 위의 임의의 점을 P라고 했을때, 법선 벡터 n과 는 서로 직교하므로, 다음 방정식을 만족 한다.

평면의 방정식의 일반 형은 으로 표현 할 수 있는데, 이 때 d는 원점 간의 거리가 된다. 즉, 두 벡터의 내적과 원점 까지의 거리를 이용해 다음과 같은 평면의 방정식을 유도 할 수 있다.

평면의 방정식

- 점과 평면 공간의 관계

 평면의 방정식을 이용하면 점p와 평면의 관계를 알 수 있다.

  • 일 때, 점 p는 평면 위에 존재 한다.
  • 일 때, 점 p는 평면의 앞 공간에 존재한다.
  • 일 때, 점 p는 평면의 뒷 공간에 존재한다.

- 평면 정규화

 때때로 평면의 법선 벡터를 정규화 해야하는 상황이 생기는데, 단순히 법선 벡터 n만 정규화하면 끝이 아니라는 것을 명심 해야한다.

의 식과 마찬가지로 법선 벡터의 길이가 상수 d에 영향을 주기 때문에, 법선 벡터를 정규화 하면 도 마찬가지로 다시 계산 해야한다. 따라서 평면 를 정규화 하기위해서는 다음과 같은 식이 필요하다.

평면의 정규화

'DirectX9' 카테고리의 다른 글

Direct3D 기초  (0) 2021.06.02
VS2017에서 DirectX9 SDK 세팅하기  (0) 2021.06.02
행렬의 변환  (0) 2021.05.31
항등 행렬, 역 행렬, 행렬의 전치  (0) 2021.05.31
행렬(Matrix)  (0) 2021.05.31

Direct 3D를 이용한 프로그래밍에서는 변환을 표현하기위해 4x4 행렬을 이용하며, 기본적인 방식은 다음과 같다.

 

4x4 행렬 X의 각 항목을 특정한 값으로 채운 다음, 1x4 행 백터 v의 열에 포인트의 좌표나 벡터를 넣는다. 

 

 

행렬 X는 변환에 따라 이동 행렬(Translation Matrix) , 회전 행렬(Rotation Matrix), 크기 변형 행렬(Scale Matrix)로 구분할 수 있다.

 

- 이동 행렬(Translation Matrix

이동 행렬(Translation Matrix)

 벡터 v를 위 그림과 같이 이동시킨다고 가정할 때, 다음과 같은 행렬과 곱하면 x축으로 y축으로 , z축으로 만큼 이동 시킬수 있다.

이동 행렬 T(p)

이동 벡터 p의 부호를 바꾸는 것으로 간단하게 역 행렬을 얻을수 있다.

이동 행렬의 역 행렬

 

- 회전 행렬(Rotation Matrix)

회전 행렬(Rotation Matrix)

 다음 행렬을 이용하면 각 축을 기준으로 시계방향으로 회전하는 행렬을 구성할 수 있다.

X축 회전 행렬
Y축 회전 행렬
Z축 회전 행렬

회전행렬 의 역 행렬은 전치 행렬 와 같다. 

- 크기 변환 행렬(Scale Matrix)

크기 변환 행렬(Scale Matrix)

  크기 변환 행렬 를 벡터와 곱셈을 하면 벡터의 크기를 p만큼 변환할 수 있다.

크기 변환 행렬 S

역행렬은 인자의 역수를 넣어 얻을 수 있다.

크기 변환 행렬의 역 행렬

 

-변환 행렬의 조합

 벡터 v에 대하여 이동을 위한 행렬 T, 회전을 위한 행렬 R, 크기 변환 행렬 S가 있을 경우, 최종적으로 구해지는 벡터 v'은 다음과 같다.

 

'DirectX9' 카테고리의 다른 글

VS2017에서 DirectX9 SDK 세팅하기  (0) 2021.06.02
평면(Plane)  (0) 2021.06.02
항등 행렬, 역 행렬, 행렬의 전치  (0) 2021.05.31
행렬(Matrix)  (0) 2021.05.31
벡터의 연산  (0) 2021.05.31

- 항등 행렬(identity matrix)

 항등 행렬은 중심 대각선의 성분이 1이고 나머지 성분이 전부 0인 정방 행렬을 말한다. 

2차 3차 4차 항등행렬

항등 행렬은 곱셈에서 항등성을 가진다. 항등행렬은 로 표현 할 수 있다.ㅎ

- 역 행렬

행렬에서 나눗셈은 없지만, 곱하기와 반대의 의미를 가지는 역 연산이 존재한다. 이를 역 행렬 이라고 하는데, 역 행렬은 다음과 같은 특징을 가진다.

  • 정방 행렬만이 역 행렬을 가질 수 있다. 즉 역 행렬을 이야기할 때는 정방 행렬에 대해 이야기 하는 것과 같다.
  • 행렬 의 역 행렬  은 로 표현 할 수 있다.
  • 모든 정방 행렬은 역 행렬을 가지지 않는다.
  • 행렬과 역행렬을 곱하면 항등행렬을 얻는다. 행렬은 자신의 행렬과 곱할 때 서로 상호 교환이 가능하다.

- 행렬의 전치

 행렬의 열과 행을 교환하면 행렬의 전치(transpose)를 수행 할 수 있다. 즉 행렬 의 전치 행렬은 행렬 로 표현 할 수 있다.

행렬 B의 전치 행렬

 

'DirectX9' 카테고리의 다른 글

평면(Plane)  (0) 2021.06.02
행렬의 변환  (0) 2021.05.31
행렬(Matrix)  (0) 2021.05.31
벡터의 연산  (0) 2021.05.31
3 차원 공간의 벡터  (0) 2021.05.31

-행렬(Matrix)이란?

 수 또는 다항식을 사각형 모양으로 배열 한 것. 행과 열의 수는 행렬의 차원을 결정하고, 행렬의 성분은 아래첨자로 표현해서 다음과 같이 나타낸다. 

3x3 행렬의 일반적인 표현

 때로는 한 개의 행이나 열로 표현 하는 벡터가 있을 수 있는데, 이와 같은 행렬을 행 벡터 또는 열 벡터라고 한다.

- 상등 행렬

 두 행렬의 차원과, 각 성분이 같은 경우 두 행렬은 동일한 행렬이다.

  이면, 이다.

 

 

- 행렬의 사칙연산

 행렬은 기본적으로 덧셈 뺄셈, 스칼라의 곱이 가능하다.

행렬의 덧셈
행렬의 스칼라 곱

 

- 행렬의 곱셈

 두 행렬 A,B 간의 곱셈은 행렬 A의 열의 수와 행렬 B의 행의 수가 같은 경우에만 곱셈이 가능하다. 두 행렬이 각각 다음과 같이 정의 되는 경우, 두 행렬의 곱셈은 다음과 같다.

2x3 행렬과 3x3 행렬의 곱셈. 결과값으로 2x3 행렬이 된다.

 

'DirectX9' 카테고리의 다른 글

평면(Plane)  (0) 2021.06.02
행렬의 변환  (0) 2021.05.31
항등 행렬, 역 행렬, 행렬의 전치  (0) 2021.05.31
벡터의 연산  (0) 2021.05.31
3 차원 공간의 벡터  (0) 2021.05.31

+ Recent posts