목록게임 수학 (13)
3냥 집사이면서 게임 개발자입니다.

// 렌더링 로직을 담당하는 함수void SoftRenderer::Render2D(){ ... float sin = 0.f, cos = 0.f; Math::GetSinCos(sin, cos, currentDegree); // 현재 화면의 크기로부터 길이를 비교할 기준양 정하기 static float maxLength = Vector2(_ScreenSize.X, _ScreenSize.Y).Size() * 0.5f; // 원을 구성하는 점 그리기 HSVColor hsv(0.f, 1.f, 0.85f); for (auto const& v : squares) { // 극좌표계로 변경 Vector2 polarV = v.ToPolarCoordinate(); // 극좌표계의 각 정보로부터 색상을 결정한다. if..

요약극좌표계:회전 동작을 기반으로 설계된 좌표계이며, 회전을 관리하고 구현하는데 좀 더 편리하도록 고안된 좌표계원점으로부터의 거리 r과 각 θ 두 요소로 구성되며 좌표는 (r, θ)로 표시한다. 활용: 주로 시간에 따른 회전의 움직임, 회전에 관련된 효과를 연출 등

요약 삼각함수의 역함수 : 게임 제작 과정에서 거꾸로 주어진 벡터의 좌표로부터 이에 대응하는 각도를 얻어내는 작업이 필요한 경우에 사용한다.삼각함수의 공역과 정의역의 범위를 제한해 전단사함수로 만들면 해당 삼각함수의 역함수가 된다. arcsin 함수의 정의역 [-90, 90] 공역 [-1, 1]arccos 함수의 정의역 [0, 180] 공역 [-1, 1]arctan함수는 정의역만 제한 (-90, 90) arctan함수의 용도 : 임의의 벡터 (x, y) 라고 할 때 분수식 y/x를 계산해 벡터로부터 tan 함수 값을 얻을 수 있다.이 tan 값을 arctan 함수에 넣으면 해당 벡터가 x축과 이루는 사잇각을 얻어낼 수 있다. arctan2 함수 :일반 삼각함수의 역함수들은 모두 3사분면에서의 치역을 구..

// 게임 로직과 렌더링 로직이 공유하는 변수Vector2 currentPosition;float currentScale = 10.f;float currentDegree = 0.f;// 게임 로직을 담당하는 함수void SoftRenderer::Update2D(float InDeltaSeconds){ ... // 게임 로직의 로컬 변수 static float moveSpeed = 100.f; static float scaleMin = 5.f; static float scaleMax = 20.f; static float scaleSpeed = 20.f; static float rotateSpeed = 180.f; Vector2 inputVector = Vector2(input.GetAxis(InputAxi..

물체를 이동시키고 크기를 늘리는 동작은 서로 수직인 x축과 y축이 서로 독립적으로 적용된다. 따라서 x축과 y축이 따로따로 계산 후 두 결과를 결합한 것과 같다. 물체를 회전시키는 동작은 x와 y값이 함께 영향을 미친다. 둘을 독립적으로 계산할 수 없다는 얘기다. 회전을 구하기 위해 벡터 공간에서의 기저벡터 개념을 활용하고, 일반적으로 벡터를 회전시켰을 때 어떤 값이 나오는지를 구하는 수식을 증명해보았다.

삼각함수로 하트 그리기 CK 소프트 렌더러는 각도법과 호도법을 사용해 sin함수와 cos함수 값을 얻어올 수 있도록 함수를 제공한다.float sin, cos;Math::GetSinCos(sin, cos, 30); // 30 degreeMath::GetSinCos(sin, cos, Math::TwoPI); // 2pi radian 일명 하트 방정식이라 불리는 식을 이용해 하트를 그려보는 코드를 짜보자. x = 16 sin^3세타y = 13 cos세타 - 5cos 2세타 - 2cos3세타 - cos4세타 // 게임 로직과 렌더링 로직이 공유하는 변수Vector2 currentPosition;float currentScale = 10.f;// 게임 로직을 담당하는 함수void SoftRenderer::Upd..

기존 벡터 공간의 덧셈과 곱셈의 연산을 활용해 벡터의 움직임을 구현했다. 두 가지 연산으로는 직선의 움직임만 표현할 수 있었다.회전은 원의 궤적을 따라 이동하는 움직이기 때문에, 이와 밀접하게 연결되어 있는 삼각함수를 이해하고자 한다. 요약삼각함수 : 직각 삼각형에서 측정할 수 있는 사잇각이 0도보다 크거나 90도 보다 작을 때 데카르트 좌표계 상에 대치하고 사잇각의 범위를 실수 전체로 확장한 대응관계를 삼각함수라고 한다. 삼각비 : 직각 삼각형을 구성하는 세 변에서 두 변을 뽑아 각각의 비례관계를 나타낸 것, 대표적으로 sine, cosine, tangent 가 있다. sin함수와 cos 함수의 개념은 직각 삼각형에서 출발했지만, 원점을 중심으로 반지름이 1인 평면 위의 단위원을 사용해 나타내면 ..

요약 선형성 : (간략한 설명) 가산성과 동차성 성질이 항상 성립하는 경우, 선형성이 있다.선형 결합 : 선형 연산을 사용해 n개의 스칼라와 n개의 벡터를 결합해 새로운 벡터를 생성하는 수식선형 종속의 관계 : 모든 a(스칼라)가 0이 아님에도 영벡터를 만들 수 있다면, 선형 결합에 사용된 벡터는 서로 선형 종속의 관계를 가진다 라고 표현한다.선형 독립의 관계 : 영벡터가 나오기 위해서 모든 값이 0이어야 한다면 선형 결합에 사용된 벡터들은 서로 선형 독립의 관계를 가진다 라고 표현한다. 선형 독립의 관계를 가지는 벡터끼리 결합하면 벡터 공간에 속한 모든 벡터를 생성할 수 있다. 이는 벡터 공간을 다룰 때 중요하게 여겨지는 성질이다. 선형 종속 관계에 있고, 평행 관계에 있는 벡터로 알아보았을 때, 평..

요약 벡터의 크기 : 원점으로부터 벡터까지의 최단 거리를 의미한다.원점과 벡터를 연결해 직각 삼각형을 그린 후, 피타고라스의 정리를 사용해 거리를 측정한다. 용어 노름 Norm : 벡터의 크기단위 벡터 Unit Vector : 크기가 1인 벡터 정규화 Normalize : 임의의 벡터를 크기가 1인 단위 벡터로 가공하는 과정

이득우의 게임 수학 책에서 제공하는 프로젝트 파일을 이용했습니다. CK 소프트 렌더러에서 좌표를 관리하기 위해 선언한 Vector2 를 살펴보았다.평면의 벡터 값을 관리하는 Vector2 구조체의 선언 struct Vector2{...public:FORCEINLINE constexpr Vector2 operator*(float InScalar) const;FORCEINLINE constexpr Vector2 operator+(const Vector2& InVector) const;...static constexpr BYTE Dimension = 2;...FORCEINLINE constexpr Vector2 Vector2::operator*(float InScalar) const{ return Vecto..

요약 곱집합 : 두 집합의 원소를 순서쌍으로 묶은 원소의 집합을 의미한다.곱집합의 표현 방식 : (x, y) 데카르트 좌표계 : 직선의 수 집합을 수직으로 배치해 평면을 표기하는 방식.좌표: 데카르트 좌표계의 한 원소를 곱집합과 동일하게 순서쌍으로 표현. 점 또는 원점으로부터 화살표로 표현한다.크기와 방향 두 가지 속성을 지닌다. 벡터 공간 : 두 개 이상의 실수를 곱집합으로 묶어 형성된 집합을 공리적 집합론의 관점에서 규정한 공간.벡터 : 벡터 공간의 원소스칼라 : 체의 구조를 가지는 수 집합의 원소(3차원 공간에서의 벡터, 스칼라 등의 개념은 나중에 다룹니다.) 벡터의 합 : 평면의 점을 각 축에 대해 독립적으로 평행 이동시키는 작업스칼라 곱셈 : 원점을 지나고 벡터와 평행한 직선상에 위치, 항상..

요약 함수란 두 집합 사이의 관계를 나타내는 개념. 두 집합의 요소가 서로 대응된다고 모두 함수로 인정되는 것은 아님.1. 첫 번째 집합의 모든 원소에 대한 대응 관계가 존재해야 한다.2. 첫 번째 집합의 원소는 두 번째 집합의 한 원소에 대응되어야 한다. 정의역(Domain) : 왼쪽에 위치한 첫 번째 집합공역(Codomain) : 오른쪽에 위치한 두 번째 집합 치역(Range) : 정의역에 대응되는 공역의 원소들만 따로 보아 부분 집합을 형성한 것정의역의 모든 원소는 공역의 원소에 대응되어야 한다. 하지만 공역의 모든 원소가 정의역에 대응할 필요는 없다. 정의역과 공역이 서로 대응되는 형태에 따라 함수를 여러 종류로 구분 가능전사 함수 (Surjection) : 공역의 모든 요소가 정의역에 대응..