1.  전치행렬

행렬의 전치(transpose), 즉 전치행렬은 행렬의 행들과 열들을 맞바꾼 것이다. 따라서 m x n 행렬의 전치는  n x m 행렬이다. 행렬 M의 전치행렬은 다음과 같이 표기한다.

행렬 M의 전치행렬

다음과 같이 행과 열을 바꿉니다.

1행 -> 1열 , 2행 -> 2열, 3행 -> 3열... 이렇게 위치를 바꿉니다.

 

전치행렬에는 다음과 같은 유용한 성질이 있다.

 

2. 단위행렬

단위행렬(identity matrix) 이라고 부르는 특별한 행렬이 있다. 열 수과 행 수가 같은 정사각형의 행렬을 정방행렬(square matrix)이라고 부른다. 정방행렬의 좌상에서 우하로의 주된 대각선에 있는 성분들은 주대각(main diagonal) 성분이라고 부르는데, 단위행렬은 주대각 성분들만 1이고 나머지는 모두 0인 정방행렬이다.

 

    예를 들어 다음은 2 x 2, 3 x 3, 4 x 4 단위행렬이다.

   단위행렬은 곱셈의 항등원 역할을 한다.

   즉, A가  m  x n  행렬이고 B가 n x p 행렬, I가 n x n 단위행렬이면 아래와 같다.

   다른 말로 하면, 어떤 행렬에 단위행렬을 곱해도 그 행렬은 변하지 않는다. 단위행렬을 1의 행렬 버전이라고 생각하면 된다. 특히, M이 정방행렬일 때 단위행렬과의 곱셈은 교환법칙을 만족한다.

 

3. 행렬식

행렬식(Determinant)은 정방행렬을 입력받아서 실숫값을 출력하는 특별한 함수이다. 정방행렬 A의 행렬식을 흔히 det A로 표기한다. 기하학적으로 행렬식이 3차원 입체의 부피와 관련이 있다는 점과 행렬식이 선형변환 하에서 그 부피가 변하는 방식에 대한 정보를 제공한다는 점을 증명하는 것이 가능하다. 또한, 행렬식은 크라메르의 법칙(Cramer's rule)을 이용해서 1차 연립방정식을 푸는 데에도 쓰인다. 그러나 여기에서는 행렬의 역(역행렬)을 구할 때 행렬식이 쓰인다. 또한, 다음과 같은 정리가 있다.

  위의 정리를 이용하면 주어진 행렬의 역을 구하는 것이 가능한지를 손쉽게 판정할 수 있다. 행렬식을 정의하기 전에, 먼저 소행렬이라는 개념부터 살펴보자.

  3.1 소행렬

  예를 들어 보자.

소행렬 예제

   3.2 행렬식의 정의

     행렬의 행렬식은 재귀적으로 정의된다. 예를 들어 4 X 4 행렬의 행렬식은 3 X 3행렬의 행렬식들로 정의되고, 3 X 3 행렬의 행렬식은 2 X 2 행렬의 행렬식들로, 2 X 2 행렬의 행렬식은 1 X 1 행렬의 행렬식들로 정의된다. (1 x 1 행렬 A = [A¹¹]의 행렬식은 자명하게 정의되는데, 바로 det[A¹¹] = A¹¹이다. )

 

행렬식 공식

다음기회에 적자

'Directx12 > 기본이론' 카테고리의 다른 글

회전변환 식 유도 잘나온 사이트  (0) 2022.11.22
행렬 대수  (0) 2022.09.05
외적 , 직교화 , 점  (0) 2022.07.21
내적, 직교투영 , 직교화  (0) 2022.07.18
벡터의 길이와 단위벡터  (0) 2022.07.17

# 이미지 -> 3D 만들어 주는 웹사이트

https://monstermash.zone/

 

Monster Mash: New Sketch-Based Modeling and Animation Tool

Monster Mash is a new sketch-based modeling and animation tool that allows you to quickly sketch a character, inflate it into 3D, and promptly animate it. You can perform all interactions in the sketching plane. No 3D manipulation is required.

monstermash.zone

 

# 참고용 유튜브

https://www.youtube.com/watch?v=k043OByAG-4 

 

모델의 수정을 조금만 할 줄 알고 텍스쳐 수정만 조금 할 줄 알면 편한듯.. 1인 개발하기 좋아졌네

# 유니티에서 작성함.

협업을 할 때 내부적으로 코드가 어떻게 돌아가는지 파악하기 위해서는 디버깅이 필요하다.

협업을 하는 사람이 계속 돌아가는 코드에 반복문을 넣어서 코드를 짯다고 가정해보자. 

코드를 파악할 때, 반복문 안에 몇 번 째의 문장에 필요한 코드를 보고 싶을 때가 있다. 그래서 다음과 같이 디버깅을 한다.

 

   1. 반복문에 중단점을 건다.

   2. 중단점에 커서를 올리면 설정을 클릭한다.

 

   3. 조건을 체크 한다.

   4. 조건식에 내가 알고자 하는 반복 조건을 넣는다.

   5. 실행 하면 바로 조건에 맞는 디버깅이 된다.

 

※ 만약에 위 와 같이 설정안하고 찾는 다면 F10번을 계속 눌러 해당 조건에 맞는 디버깅을 해야 될 것이다.

'VisualStudio 디버깅' 카테고리의 다른 글

Visual Studio 디버깅 시 메모리 주소 보기  (0) 2022.07.14

※ 행렬 사용 이유

    ▶ 3차원 컴퓨터 그래픽에서 행렬은 비례나 회전, 이동 같은 기하학적 변환을 간결하게 서술하는 데 쓰이며, 점이나 벡터의 좌표를 한 기준계에서 다른 기준계로 변환하는 데에도 쓰인다. 

 

※ 정의

    ▶ m x n 행렬 M은 m개의 행과 n개의 열로 이루어진 실수들의 정사각 배열이다. 행(row)들의 개수와 열(column)들의 개수의 곱(이를테면 4x4)을 행렬의 차원이라고 부른다. 행렬을 구성하는 수들을 성분(entry) 또는 원소(element; 또는 요소)라고 부른다. 

행렬의 한 성분을 나타낼 때에는 다음과 같이 나타낸다.

i는 행, j는 열이다.

 

    ▶ 다음 행렬들을 생각해 보자.

          1.  A = 4 x 4 행렬 , B =  3 x 2  행렬, u = 1 x 3 행렬, v = 4 x 1 행렬이다.

          2.  행렬 A의 4행(넷째 행) 2열(둘째 열)의 성분(-5)을 A₄₂라고 표기한다.

          3.  행렬 u , v는 각각 행과 열이 하나라는 점에서 특별한 행렬이다. 이런 종류의 행렬을 행벡터열벡터라고 부른다. 이것은 벡터를 행렬 형태로 표기할 때 쓰이기 때문이다. (예를 들어 벡터( x , y , z)를 행렬[ x , y , z]로 맞바꾸어 사용할 수 있다.)

 

    ▶ 종종 한 행렬의 행들을 벡터로들로 간주하는 것이 편리할 때가 있다. 예를 들어 행렬을 다음과 같이 표기할 수도 있다.

 

# 행렬의 상등, 덧셈, 스칼라 곱셈, 뺄셈 연산을 정의

    1. 두 행렬은 오직 대응되는 성분들이 상등일 때에만 상등이다.(두 행렬의 상등을 비교하려면 두 행렬의 행 개수들, 열 개수들이 같아야 된다.)

    2. 두 행렬을 더할 때에는 대응되는 성분들을 더한다. 따라서 차원이 같은 행렬들만 더할 수 있다.

    3. 행렬에 하나의 스칼라를 곱할 때에는 행렬의 모든 성분에 그 스칼라를 곱한다.

    4. 행렬의 뺄셈은 스칼라 곱셈과 행렬 덧셈으로 정의한다. 즉 (A - B = A + (-1 x B) = A + (-B))이다.

 

    ▶ 행렬 덧셈과 스칼라 곱셈은 성분별로 이루어지므로, 행렬 덧셈과 스칼라 곱셈도 실수의 덧셈 및 곱셈의 다음과 같은 성질들을 만족한다.

   

※ 행렬 곱셈

     # 정의 : 만일 A가 m x n 행렬이고 B가 n x p 행렬이면 둘의 곱 AB가 정의된다. 곱 AB는 하나의 m x p 행렬이다. 이를 C라고 할 때 , C의 ij번째 성분은 A의 i번째 행벡터와 B의 j번째 열벡터의 내적이다. 즉, 

행렬곱셈 정의

이다. 따라서 행렬 곱 AB가 정의되려면 A의 열 수와 B의 행수가 같아야 된다. 다른 말로 하면, A의 행벡터들의 차원과 B의 열벡터들의 차원이 같아야 된다. 이 차원들이 일치 하지않으면 내적이 말이 안된다.

Ex 1) 

    ▶ A의 행벡터들의 차원은 2이지만 B의 열벡터들의 차원은 3이므로, 두 행렬의 곱 AB는 정의되지 않는다. 좀 더 구체적으로, A의 첫 행벡터와 B의 첫 열벡터의 내적을 취할 수가 없다. 2차원 벡터와 3차원 벡터의 내적을 취할 수 없기 때문이다.

Ex 2) 

    ▶ 이 경우에는 곱 AB가 정의된다. A의 열 수와 B의 행 수가 같기 때문이다. 

     곱 BA는 정의되지 않음을 주목하기 발나다. B의 열 수와 A의 행수가 같지 않기 때문이다. 이 예에서 보듯이, 일반적으로 행렬 곱셈에는 교환법칙이 성립하지 않는다. 즉 AB ≠ BA이다.

 

# 벡터와 행렬의 곱셈

   다음과 같은 벡터 x 행렬 곱셈을 생각해 보자.

   이 경우 uA가 1 x 3 행벡터로 평가됨을 주목하기 바란다. 위의 내용을 다음 행렬곱셈으로 적용하면 다음과 같이 나온다.

행렬곱셈 정의

   이 것은 선형결합(linear combination, 일차결합)의 한 예이다. 이 식은 벡터 x 행렬 곱 uA가 행렬 A의 행벡터들과 벡터 u로 주어진 스칼라 계수 x , y , z의 선형결합에 해당함을 말해준다. 이 예는 1 x 3행벡터와 3 x 3 행렬의 경우이지만, 앞의 문장은 일반적으로도 참임을 주목하기 바란다. 즉 , 어떤 1 x n 행벡터 u와 어떤 n x m 행렬 A에 대해, 곱 uA는 A의 행벡터들과 u의 스칼라 계수들의 선형결합이다.

 

# 결합법칙

행렬 곱셈에는 몇 가지 편리한 대수적 성질들이 존재한다. 예를 들어 행렬 곱셈은 덧셈에 대한 분배법칙을 만족한다. 즉,  A(B + C) = AB + AC이고 (A + B)C = AC + AB이다. 더욱 중요한 것은, 행렬 곱셈이 다음과 같은 결합법칙을 만족한다는 것이다. 

※ 디자인 패턴 참조 사이트

https://www.dofactory.com/net/design-patterns

 

C# Design Patterns -- Tutorial with Examples - Dofactory

Earn income with your .NET skills Sign up and we'll send you the best freelance opportunities straight to your inbox. We're building the largest self-service freelancing marketplace for people like you.

www.dofactory.com

 

# Undo/Redo 만들 때 참조한 사이트

https://ehdrn.tistory.com/452

 

C# Undo Redo 기능 구현하기

Undo 기능에 쓰일 스택과 Redo 기능에 쓰일 스택을 이용해서 Undo, Redo 기능을 구현해보았다. UndoRedoHistory 클래스에서는 특정 타입의 상태를 저장할 수 있고, Undo, Redo를 통해 상태 값을 가져온다. ///

ehdrn.tistory.com

https://lktprogrammer.tistory.com/65

 

14 메멘토 패턴 (Memento Pattern)

메멘토 패턴 (Memento Pattern) 메멘토 패턴은 객체의 상태 정보를 저장하고 사용자의 필요에 의하여 원하는 시점의 데이터를 복원 할 수 있는 패턴을 의미합니다. ■메멘토 패턴 예제 구조 ▶ 실제

lktprogrammer.tistory.com

https://www.codeproject.com/Articles/18025/Generic-Memento-Pattern-for-Undo-Redo-in-C

 

Generic Memento Pattern for Undo-Redo in C#

Improved Memento pattern particularly designed to support undo and redo.

www.codeproject.com

https://stackoverflow.com/questions/1915907/best-practice-for-undo-redo-implementation-in-c-sharp

 

Best practice for Undo Redo implementation in C#

I need to implement Undo/Redo frame work for my window application(editor like powerpoint), what should be the best practice to follow, how would be handle all property changes of my objects and it

stackoverflow.com

 

+ Recent posts