C#) 메서드와 매개변수
·
Programming/C C# C++
이번에 알아볼 것은 바로 메서드이다. C#에서는 메서드라 부르고 C/C++에서는 함수라고도 하는데, 특정한 동작을 수행하거나 특정 결과를 계산하는 일련의 구문 순서를 묶는 수단이다. 우리는 이 메서드들의 이름을 호출하여 사용할 수 있다.using UnityEngine;public class Test1 : MonoBehaviour{ public void Start() { int a = 10, b = 20; Debug.Log(Add(a, b)); } public int Add(int a, int b) { int c = a + b; return c; }}...이런 식으로 말이다. 이 경우 Add라고 하는 메서드를 Start메서드..
게임수학) 행렬 - 1
·
Programming/기타
행렬의 정의행렬은 수나 기호를 직사각형 형태로 배열한 것으로, 여러 분야에서 사용되지만 게임 엔진에서는 주로 벡터 공간의 변환을 위해 사용된다.  보통 이런식으로 작성된다.이 행렬 안에 나열된 성분들은 요소라고 부르고 m11, m23처럼 나타낼 수 있다. 행과 열의 수가 동일한 행렬을 정사각행렬이라고 부른다. 게임 엔진에서는 주로 이 정사각행렬을 많이 사용한다.만약 행번호와 열번호가 동일한 성분, 예를 들어 m11, m22, m33같은 요소를 대각요소라고 한다. 한번 행렬의 종류에 대해서 한번 알아보자.정사각행렬이면서 대각 요소외의 요소가 모두 0이라면 그때는 그 행렬을 대각행렬이라고 할 수 있다.만약 대각행렬이면서 대각요소가 모두 1이라면? 단위행렬이 된다. 만약 모든 요소가 0이라면? 영행렬이 된다...
자료구조) 이중 연결 리스트 (Double Linked List) - 1
·
Programming/자료구조 & 알고리즘
이중 연결 리스트기존의 방법(단일 연결 리스트)으로 리스트의 데이터를 찾으려면 링크를 타고, 타고, 타고 내려가서 맞는게 나올때까지 들어가야 했다.이 방법을 어떻게 개선할 수는 없을까?그림처럼 노드를 두 개로 만들면 된다. 이전 노드의 주소를 저장하는 노드(PrevNode)와 다음 노드의 주소를 저장하는 노드(NextNode).이제 우리는 양방향으로 데이터를 찾을 수 있게 되었다.이 방식의 장점은 단일 연결 리스트에 비해 접근이 빠르다는 점이다. 예를 들어 1000개의 데이터 중 900번째 데이터에 접근해야 한다면 단일 연결 리스트는 900번 이동해야 하지만, 이중 연결 리스트는 꼬리부터 100번 움직이면 접근할 수 있다. 이중 연결 리스트에 다른 노드를 연결은 어떻게 할 수 있을까? 맨 처음 상태이다...
게임수학) 벡터 - 2
·
Programming/기타
벡터 연산덧셈, 뺄셈, 교환법칙, 결합법칙기하벡터의 경우에는 시각적으로 벡터를 보여줄수 있으므로, 기초적인 연산법칙이 성립한다는 것을 보여주는것도 쉽다. 우리가 고등학?생때 배웠었던 덧셈, 뺄셈, 교환법칙, 결합법칙을 벡터에서도 성립한다는 것을 그림을 통해 알 수 있다.증명은 생략하고 대신 설명을 한번 해보자. 교환법칙이란 a + b를 순서를 바꿔서 b + a로 표기해도 성립한다는 내용이다. 그림에서는 좌상단에 해당한다.벡터 b와 크기는 같으나 방향이 정반대인 벡터를 역벡터 -b로 정의하는데, 우상단에 해당한다.원본 벡터와 그 역벡터를 더하면 영벡터가 된다. 우상단 그림에서 b와 -b벡터가 합이 0이 되는것을 확인할 수 있다.마지막으로 (a + b) + c = a + (b + c)와 같이 괄호의 위치를 ..
자료구조) 연결 리스트(Linked List)
·
Programming/자료구조 & 알고리즘
가변형 배열에 대하여연결 리스트는 자료구조를 공부할 때 가장 먼저 나오는 자료구조이다.이 리스트라는 이름에서 유추 가능한 것처럼 목록 형태로 이루어진 데이터 형식을 의미한다. 왜 연결 리스트를 사용하는가?데이터가 고정되어 있다면, 즉 수가 정해져 있다면  = 당연히 배열을 사용하면 된다.예를 들어 이 맵에 라이트가 4개 정도 배치될 것이다 라고 한다면 Light light[4]; 처럼 사용하면 된다.혹은 array light(4) 같은 식으로 말이다. 그러나 일반적인 배열로는 IEnumerator를 다룰 수 없다. 무슨 소리냐면, 배열이 늘었다, 줄었다 하는 상황을 컨트롤 할 수 없다는 것이다. 수가 한정된 상황이라면 제어가 가능할 수도 있지만, 대부분의 상황은 그런식으로 흘러가지 않는다. 따라서 가변형..
게임수학) 벡터 - 1
·
Programming/기타
벡터의 정의위치 벡터벡터란 무엇일까... 사실 우리는 이미 벡터에 대해 살짝 알고 있다.이전 포스트에서 3D좌표계를 다룰 때 (x, y, z)와 같이 배열을 좌표라고 부르면서 특정한 위치를 가리키는 데 사용했었다.유니티에서는 이러한 좌표를 Vector3() 메서드를 이용하여 표현한다. 이러한 위치로서의 벡터를 위치 벡터라고 한다.Vector3는 이러한 세 개의 x, y, z 프로퍼티를 통해 3차원 공간의 점을 표현할 수 있다.이러한 벡터를 수학적으로 표현하려면 (x, y, z)처럼 옆으로 나열한 행벡터로도 표현이 가능하지만,그림처럼 세로로 나열한 열벡터로도 표기가 가능하다.위치벡터는 어디까지나 점의 위치를 나타낼 뿐, 만약 벡터가 위치한 공간 자체가 움직인다면 그 위치 또한 움직이게 된다.박스 위에 원이..