반응형 프로그래밍 수학/기타 2021. 2. 20. 벡터 내적 외적 벡터 - 크기와 방향을 가진 물리량을 뜻한다. (수학에서 벡터는 이보다 더 다양하지만 딱 이정도만 알고 있어도 문제는 없다.) 내적 - 두 벡터의 곱셈이다. - 벡터의 방향이 얼마나 일치하는 지의 용도. - 두 벡터 사이의 각도를 구할 수 있다. - 물체가 앞에 있는지 뒤에 있는지 구분하는데 사용할 수 있다. - 물체가 시야각 내에 위치하는지 구분하는데 사용할 수 있다. (자신의 시야각을 a라고 지정했을 때 a / 2 보다 크다면 시야 내부에 위치한다는 것) 벡터A(x,y)와 B가 있다고 가정. 내적 계산 공식 : (A.x * B.x) + (A.y * B.y) = 결과 외적 - 공이 벽에 부딪혔을 때 튕겨져나가는 방향을 구할 수 있다. - 물체가 왼쪽에 있는지 오른쪽에 있는지 구분하는데 사용할 수 있다... 프로그래밍/그래픽 2021. 2. 19. 랜더링 파이프라인 렌더링 파이프라인 - 3D 정점 데이터들을 2D인 래스터 이미지로 변환하는 과정 래스터 이미지 - 픽셀들로 이루어진 2D 이미지를 말한다. 로컬 스페이스 - 3D 모델을 만들어서 로컬 좌표계에 띄우는 단계 월드 스페이스 - 3D 모델을 월드 좌표에 옮겨 장면을 구성하는 단계 뷰 스페이스 - 좌표, 색상, 조명 정보 등을 변화시켜서 카메라를 원점에 두고 하나의 축(+Z축)을 내려보도록 배치한다. 백 스페이스 컬링 - 화면상에 보이지 않는 뒷면을 후려친다. 조명 - 광원은 월드 스페이스 내에 정의된다. - 뷰 스페이스 변환에 의해 뷰 스페이스로 변환된다. - 물체에 명암을 주는 역할을 하여 사실감 있게 표현해준다. 클리핑 - 시야 절두체를 넘어가는 물체를 분리하고 추려낸다. 투영 - 원근 투영과 평행투영으로.. 프로그래밍/그래픽 2021. 2. 14. 빌보드 (텍스처 기법) 텍스처가 항상 카메라를 바라보도록 하는 텍스처 처리 기법이다. 간단히 예시를 들면 나무 이미지가 있다고 가정하자. 나무 이미지를 단순히 옆에서 보면 2D이기 때문에 선으로 보일 것이다. 이때 나무 이미지가 선이 아닌 나무로 보이기 위해 카메라 정면을 바라보도록 만드는게 빌보드 기법이다. RememberCook 9월 28일 정식 출시! 두번째 게임인 RememberCook이 출시되었습니다. 귀여운 캐릭터들이 나오는 간단한 게임이며 플레이어의 공간인지능력을 테스트하는 게임입니다. 아래 링크를 통해 다운 받으실 수 있으니 많은 관 chipmunk-plump-plump.tistory.com 프로그래밍/기본기ㆍ자료구조 2021. 2. 3. OOP 객체지향 4가지 특징 프로그래머의 실력을 판가름할 때 가장 기본적인 부분이다. 알고리즘 문제를 아무리 잘 풀어도, 게임 지식이 아무리 많아도 객체지향 4가지 특징과 5대 원칙에 대한 이해가 없다면 그 사람의 코드는 스파게티코드일 확률이 매우 높다. 그런 사람과의 협업은 협업자들을 굉장히 피곤하게 만든다. (얽히고 설키고.. 학생 클래스가 학생이면서 책이기도한 괴랄한 구조라던지..) # 추상화 - 추상화 라고 하니까 무슨 말인지 잘 모르는 사람들이 많다. 간단하게 생각하면 abstract, virtual 등을 잘 활용하라는 것이다. 예를들어 아래 코드블럭을 보자 public abstract class Animal { // Animal class를 상속받은 모든 class들이 // Move()라는 추상적인 함수의 구현을 해야함 .. 프로그래밍/기본기ㆍ자료구조 2021. 2. 2. C, C++, C# 언어의 차이점 # C - 절차지향 언어 - 절차지향이기 때문에 하향식 접근 방법을 채택 - 메모리를 직접 관리해야한다. - 가장 빠르고 가장 좋은 성능을 지녔다. - 어떤 플랫폼에서든 사용이 가능하다. - 문법이 틀리지만 않는다면 에러없이 대부분을 허용한다. - 시스템 수준의 프로그래밍에 적합하다. (우주선이나 탐사로봇들이 C인걸로 아는데 맞나..?) - 범용성이 낮다. - 메모리를 직접 관리해야하기 때문에 누수 문제가 생길 수 있다. # C++ - 멀티패러다임 언어 (객체지향 언어로서 사용하지만 절자치향으로도 구현이 가능하다) - 상향식 접근 방식을 채택 - 메모리를 직접 관리해야한다. - C만큼의 빠른 속도를 보장한다. - 어떤 플랫폼에서든 사용이 가능하다. - 문법이 틀리지만 않는다면 에러없이 대부분을 허용한다... 프로그래밍/기본기ㆍ자료구조 2021. 1. 31. C# GC의 이해 및 메모리 최적화 # GC (가비지 컬렉터 - Garbage Collector) 가비지 컬렉터는 Java나 C#에서 메모리를 자동으로 해제해주는 기능이다.(이하 GC) C#은 C/C++의 메모리 할당보다 빠르다. C/C++처럼 자유 메모리 블록을 검사할 필요가 없으며 단순히 포인터 값을 증가 시키는 것이 전부이기 때문이다. C#의 메모리 할당 방식은 메모리 조각이 발생하지 않는 방식이다. (불변 객체인 String 같이 작은 크기의 객체들이 힙 상에 아주 많이 존재하기 때문에 이러한 형태의 방식으로 만들어졌다) GC는 특정 조건을 만족하는 상황이 되면 현재 쓰레드들을 모두 중단시키고 GC 쓰레드를 실행시킨다. (GC쓰레드는 평소에 아무것도 안하고 잠들어 있다) GC는 세대별로 구분을 할 수가 있는데 힙 상의 객체를 객체의.. 프로그래밍/기본기ㆍ자료구조 2021. 1. 29. Boxing UnBoxing (박싱 언박싱) Boxing (박싱) - 값 타입을 참조 타입으로 형변환하는 것을 말한다. 값 타입은 스택 메모리에 쌓이는데 박싱을 통해 힙 메모리에 object 형식으로 선언이 되고 값이 복사된다. 그리고 스택 메모리에 박싱된 object의 주소 값을 쌓는다. UnBoxing (언박싱) - 참조 타입을 값 타입으로 형변환하는 것을 말한다. 박싱된 값인지 확인하고 값 타입 변수에 복사하는 과정을 가진다. 그 과정 중에 박싱한 메모리와 언박싱한 메모리가 존재하게 되어 가비지가 발생하게 된다. 간혹 편리해서 박싱/언박싱을 하기도 하는데 좋지 않은 습관이다. object로 파라미터를 넘겨야하는 상황이라면 되도록이면 제너릭 형태로 구조를 개선해보자 RememberCook 9월 28일 정식 출시! 두번째 게임인 RememberC.. 프로그래밍/알고리즘 2021. 1. 23. DFS - 깊이 우선 탐색 (C#으로 길 찾기 구현) - Depth First Search의 약자 - 현재 정점(노드)에서 간선으로 연결된 정점중 가장 깊은 정점까지 탐색하고 목표 정점이 없으면 이전 정점으로 돌아가 간선으로 연결된 다른 정점으로 또다시 탐색한다. - 위 방법을 반복하면서 정점들을 순회하게 된다. - DFS와 대조되는 BFS (너비 우선 탐색)도 있다. - 일반적으로 재귀호출로 구현하는 방법과 스택으로 구현하는 방법이 있다. using System; using System.Collections.Generic; class Program { static void Main(string[] args) { MapController mapController = new MapController(); // 길 체크 플래그를 초기화해준다. mapContro.. 이전 1 2 3 4 ··· 11 다음 반응형