본문 바로가기

카테고리124

게임 수학 | 2부 콘텐츠 제작 기초 | 07장 내적 07장 내적: 벡터 공간의 분석과 응용 7.1 벡터의 내적 벡터의 내적은 같은 차원의 두 벡터가 주어졌을 때 벡터를 구성하는 각 성분을 곱한 후 이들을 더해 스칼라를 만드는 연산이다. 내적의 결과는 스칼라다. ■ 7.1.1 내적의 성질 내적은 교환 법칙과 분배 법칙이 성립하지만, 결합 법칙은 성립하지 않는다. 같은 벡터를 내적하면 그 벡터의 크기를 제곱한 스칼라가 나온다. 내적 외적 결과 스칼라 벡터 교환 법칙 O X 결합 법칙 X X 분배 법칙 O O 연산 같은 위치의 요소만 사용 다른 위치의 요소만 사용 ■ 7.1.2 내적과 삼각함수와의 관계 두 벡터 u, v의 사잇각을 θ라고 할 때 내적과 cos 함수의 관계는 다음과 같다. 내적은 두 백터의 사잇각에 대한 cos 함수와 비례한다. 두 벡터의 내적이.. 2023. 2. 17.
게임 수학 | 2부 콘텐츠 제작 기초 | 06장 아핀 공간 06장 아핀 공간: 움직이는 가상 세계의 구축 6.1 아핀 공간 벡터 공간에서 이동 변환을 행렬 곱으로 표현하기 위해서 마지막 차원 값을 1로 한정한 부분 공간을 아핀 공간(affine space)라고 한다. 원래 행렬 곱으로는 이동 변환을 표현할 수 없다. 하지만 차원 값이 항상 1인 새로운 차원을 도입하면 가능하다. 이동 변환 행렬(translate transformation matrix) 이동 변환 행렬은 선형 변환의 일종인 전단 변환을 응용한 것이다. 1차원에서 y = 1이라는 조건에서 a만큼 미는 전단 변환은 x + a로 나타난다. 2차원에서 z = 1이라는 조건에서 (a, b)만큼 미는 전단 변환은 (x + a, y + b)로 나타난다. n차원에서 n + 1차원으로 차원을 높여 설계한 선형 변.. 2023. 2. 17.
3D 게임 프로그래밍 | Part 01 기초 필수 수학 | Chapter 01 벡터 대수 1.1 벡터 벡터(vector)는 크기와 방향을 가진 수량(quantity)을 가리키는 말이다. 벡터는 힘이나 변위, 그리고 속도를 나타내는 데 쓰인다. 벡터를 기하학적으로 방향이 있는 선분, 지향 선분(directed line segment)으로 표시한다. 선분의 길이는 벡터의 크기를, 선분 끝의 화살표는 벡터의 방향을 나타낸다. 길이가 같고 같은 방향을 가리키는 벡터는 서로 같은 벡터이다. 1.1.1 벡터와 좌표계 벡터를 그 꼬리가 3차원 좌표계의 원점과 일치하도록 이동하면 벡터 v를 (x, y, z)로 표기할 수 있다. 이렇게 3차원 벡터를 컴퓨터 프로그램 안에서 세 부동소수점(float, double)으로 표현할 수 있다. 참고 기준계(frame of reference), 공간(space) 그리고.. 2023. 1. 22.
MMORPG 게임 개발 | Part 06 웹 서버 | HTML 보호되어 있는 글 입니다. 2022. 8. 25.
MMORPG 게임 개발 | Part 03 유니티 엔진 | 충돌 보호되어 있는 글 입니다. 2022. 8. 14.
MMORPG 게임 개발 | Part 03 유니티 엔진 | 프리팹 보호되어 있는 글 입니다. 2022. 8. 12.
MMORPG 게임 개발 | Part 03 유니티 엔진 | 트랜스폼 보호되어 있는 글 입니다. 2022. 8. 11.
MMORPG 게임 개발 | Part 03 유니티 엔진 | 유니티 기초 보호되어 있는 글 입니다. 2022. 8. 9.
게임 프로그래밍 패턴 | Chapter 04 관찰자 패턴 4. 관찰자 패턴 4.1 예제: 업적 달성 업적(achievement) 시스템을 게임에 추가한다고 해보자. 업적 종류가 광범위하고 달성할 수 있는 방법도 다양하다 보니 업적 시스템 코드를 담당하는 코드는 한데 모아두는 게 좋다. 그런데 업적은 여러 게임 플레이 상황에서 발생시킬 수 있어야 한다. 이런 코드 전부와 커플링되지 않고 업적 코드를 동작하게 하려면 관찰자 패턴(observer pattern)을 쓰면 된다. 4.2 작동 원리 ■ 4.2.1 관찰자 Observer 클래스는 다음과 같은 인터페이스로 정의된다. 어떤 클래스든 Observer 인터페이스를 구현하기만 하면 관찰자가 될 수 있다. class Observer { public: virtual ~Observer() = default; virtua.. 2022. 8. 8.
게임 프로그래밍 패턴 | Chapter 03 경량 패턴 3. 경량 패턴 3.1 예제: 숲에 들어갈 나무들 우리가 실시간 게임에서 볼 수 있는 수천 그루가 넘는 나무들로 가득 찬 빽빽한 숲은 각각 수천 폴리곤의 형태로 표현되어 있다. 이런 숲을 그리기 위해서 나무마다 필요한 데이터를 코드로 표현하면 다음과 같다. class Tree { private: // 줄기, 가지, 잎의 형태를 나타내는 폴리곤 메시 Mesh mesh; // 나무 껍질과 잎사귀 텍스처 Texture bark; Texture leaves; // 숲에서의 위치와 방향 Vector position; double height; double thickness; // 나무가 서로 다르게 보이도록 음영을 조절 Color barkTint; Color barkTint; }; 그런데 사실 숲에 나무가 수천 .. 2022. 8. 5.
백준 온라인 저지 | 2630번 색종이 만들기 | C++ 백준 온라인 저지 | 2630번 색종이 만들기 | C++ 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 1. 문제 접근 ■ 1.1 기본 조건 종이가 한 가지 색으로만 칠해져 있는 경우, 종이의 개수를 세고 있는 배열에서 흰색 종이의 개수 혹은 파란색 종이의 개수를 1만큼 증가시킨다. ■ 1.2 재귀 조건 종이가 두 가지 색으로 칠해져 있는 경우, 종이를 좌상단, 우상단, 좌하단, 우하단 네 부분으로 나누고 네 부분에 대해서 각각 한 가지 색으로만 칠해져 있는지 재귀적으로 구현해야 .. 2022. 8. 4.
백준 온라인 저지 | 10870번 피보나치 수5 | C++ 백준 온라인 저지 | 10870번 피보나치 수5 | C++ 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 1. 문제 접근 수학에서 피보나치(fibonacci) 수는 첫째 항과 둘째 항이 1이고 그 이후의 모든 항은 바로 앞 두 항의 합인 수열이다. 피보나치 수 Fn의 초항은 F(1) = F(2) = 1이고, 점화식은 F(n) = F(n-1) + F(n-2) (n ≥ 2)으로 나타낼 수 있다. 예를 들어 F(4)는 F(3) + F(2) = F(1) + F(2) + F(2).. 2022. 8. 4.