※ 행렬 사용 이유

    ▶ 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

 

※ Linp의 Orderby 사용   

    - 쓰이고 있는 클래스

    - Name 기준으로 정렬 후 list로 반환

Orderby.Tolist()

CSDataList  -> list에 소팅 후 데이터가 담겨져 있다.

※ 시퀸스 다이어그램

※ 클래스 다이어 그램

- 장점 

1. File Text의 내용을 한 번 만 읽어서 사용 가능(매번 File Text를 읽는 비용을 절감)

2. 이전 데이터와 현재 데이터를 비교하여 저장이 필요한 구조일 경우 원본과 가공데이터를 비교하여 저장 유/무를 판별할 수 있음.

3. 원본 Manager로 관리 되기 때문에 sub1,sub2,sub3... 확장해서 사용 가능

# 텍스쳐 얻을 수 있는 사이트

https://www.cgdirector.com/best-texture-sites/

 

6 Best High-Quality Texture Sites (Free & Paid)

The Best Website to get Free and Paid High Quality Textures for your 3D Projects. Download High-Res PBR Maps from these Library Sites for 3D Artists & Designers.

www.cgdirector.com

 

 

# 쉽게 Normal map 만들기

https://www.cgdirector.com/best-normal-map-generators/

 

Best Normal Map Generators - Our 6 Favorite Tools

Normal Maps are easily created through free Generators. They add detail to your 3D Models without the necessity of increasing polygon count.

www.cgdirector.com

 

# 지오메트리 & 텍스처 최적화 관련

 

https://garagefarm.net/blog/guide-to-rendering-optimizing-scenes-in-3ds-max-through-geometry

 

3ds Max Guide: Render Faster Locally and on a Render Farm

3ds Max Optimization guide to speed up rendering on render farms or locally for beginner and intermediate users. Click here to read.

garagefarm.net

 

'3D max' 카테고리의 다른 글

3D Max 2014 ver 단축키 설명  (0) 2022.08.12

+ Recent posts