묻공러
'게임 수학 & 물리' 카테고리의 글 목록 (2 Page)

게임 수학 & 물리

게임 수학 & 물리/게임 수학

[게임 수학] 벡터의 외적 (1)

내적과 외적 벡터의 내적에서는 자신을 기준으로 앞, 뒤 방향을 확인할 수 있었다면 벡터의 외적에서는 자신을 기준으로 좌, 우 방향을 확인할 수 있다 또한, 벡터의 내적을 통해 각도를 알아냈다고 하더라도 어떤 방향(좌, 우)으로 각도를 틀어야 하는지 헷갈리는 경우가 생기기 때문에 이를 보완한다 물론, 외적의 결과값들은 내적을 통해서도 추론할 수 있지만 외적은 정규화 과정을 거치지 않아도 되기 때문에 연산에서 효율적이다 벡터의 외적 X와 Y를 외적해서 Z가 나온 그림이다 외적에서는 교환법칙이 성립되지 않는다는 점을 주의해야 한다 교환법칙이 성립되지 않는 외적에 대한 결과는 아래와 같다 왼손 좌표계 vs. 오른손 좌표계 손(왼손 or 오른손)을 이용해서 시작 벡터에서 가려는 벡터로 손을 감싸면 엄지손가락이 가..

게임 수학 & 물리/게임 수학

[게임 수학] 벡터의 내적 (2)

벡터의 내적 복습 벡터의 내적이 게임에서는 어떻게 사용되는지 알아보기 전, 간단하게 백터의 내적을 복습해 보자 A 오브젝트의 벡터와 B 오브젝트의 벡터를 내적 하면, 0보다 큰 값(양수)이 나온다는 것을 통해 같은 방향을 바라보고 있다고 판단할 수 있고 A 오브젝트의 벡터와 C 오브젝트의 벡터를 내적 하면, 0보다 작은 값(음수)이 나온다는 것을 통해 다른 방향을 바라보고 있다고 판단할 수 있다 주로 게임에서는 두 오브젝트가 같은 방향을 바라보는지, 바라보지 않는지 확인이 가능하고 어떠한 오브젝트가 기준 오브젝트의 앞쪽인지 뒤쪽인지 구분도 가능하고 단순하게 두 벡터의 각도를 알아낼 수도 있다 내적 예시 유니티에서 벡터의 내적을 하려면, Vector3.Dot()을 이용하면 된다 두 가지 예시를 통해 알아보..

게임 수학 & 물리/게임 수학

[게임 수학] 벡터의 내적 (1)

벡터의 내적 벡터의 내적은 곱셈을 의미한다 일반적으로 벡터의 합과 차의 결과 값은 벡터지만 벡터의 곱셈(내적)의 결과값은 스칼라라는 것이 특징이다 벡터의 내적 공식 벡터의 내적 공식은 2개가 있으며 아래와 같다 주의 깊게 볼 것은 두번째 공식이다 A벡터와 B벡터를 내적한 결과는 A의 magnitude(length)와 B의 magnitude(length)를 곱한 값에 cos θ를 곱한 것과 같다는 것이다 이 공식을 이용하여 θ를 구하기 위해서는 아래와 같은 과정을 거치게 된다 앞서, tangent를 이용해서 세타각을 구하는 것을 기억해 보면 아래와 같은 과정을 거쳤다 tan θ = y/x θ = arctan(y/x) 이처럼, arctan를 이용한 것과 마찬가지로 벡터의 내적에서는 arccos을 이용한다 결..

게임 수학 & 물리/게임 수학

[게임 수학] 벡터의 기초 (2)

벡터의 정규화 예시 1 벡터의 방향을 계산해 정규화를 거친 코드는 아래와 같다 Vector3 dirVec = targert.position - transform.position; dirVec.Normalize(); // dirVec = dirVec / dirVec.magnitude; transform.position += dirVec * speed * Time.deltaTime; 유니티에서 제공하는 정규화 함수를 사용하면 되고 주석에 있는 것처럼 직접 구해도 상관은 없다 이처럼 Normalize를 해주면, 노란 공처럼 Normalize를 해주지 않으면, 빨간 공처럼 아래와 같은 결과물이 나타난다 벡터의 정규화 예시 2 (with. tangent) tangent를 활용하여 아래의 결과물처럼 오브젝트가 해당..

게임 수학 & 물리/게임 수학

[게임 수학] 벡터의 기초 (1)

벡터 3d공간의 좌표의 기본 개념은 벡터이다 게임 내 대부분의 오브젝트는 위치가 존재하며 이동이 일어나고 벡터의 크기나 방향이 기반이 된다 벡터는 선분과 다르게 화살표이다 다시 말해, 벡터는 크기와 방향을 가지고 있다는 것이 핵심이고 벡터의 크기를 무시하고 단위벡터를 만든다면, 방향성을 각도, 기울기를 통해 표현할 수 있다 또한, 벡터는 시작 위치가 없는 것이 특징이다 벡터의 합과 차 벡터의 합과 차는 아래 그림과 같다 벡터의 차는 결국 A - B = A + (-B)로 접근을 하는 것이다 결과는 D벡터가 되며, 단순히 B벡터에서 A벡터로 바라보는 방향과도 같다는 사실을 알 수 있다 이는 벡터는 시작위치가 없기 때문에 가능한 것이다 Normalized 벡터 벡터의 크기(길이)를 1로 만들어서 방향만 신경을..

게임 수학 & 물리/게임 수학

[게임 수학] tangent

tangent 게임에서 cos sin은 각에 관련된 것이었고 tangent도 마찬가지로 각도와 관련이 있고 기울기가 핵심이다 tan θ는 높이/밑변으로 c/b이다 이는 결국 a가 1이라는 가정하에, sin θ / cos θ를 의미한다 우리가 원하는 건 tan θ가 아닌 tan를 뺀 θ 이기 때문에 arcTan(역삼각함수)을 이용해서 θ 를 구할 수 있다 θ = c/b의 arcTan 유니티의 Atan() 유니티에서는 역삼각함수로 쉽게 바꿀 수 있는 Atan과 Atan2가 있다 Mathf.Atan(parameter)을 이용하면 길이의 비율을 (y / x)을 인자로 작성하면 된다 Mathf.Atan2(parameter 01, parameter 02)을 이용하면 길이의 비율을 (y, x)를 순서대로 인자로 작성..

게임 수학 & 물리/게임 수학

[게임 수학] sin, cos (2)

sin, cos 활용 예시 sin, cos을 활용하여 다양한 각도를 적용하여 패턴을 쉽게 만들 수 있다 단순하게 좌우로 움직이게 하려면 sin의 패턴을 활용해 DegreeComponent를 아래처럼 작성할 수 있다 using System.Collections; using System.Collections.Generic; using UnityEngine; public class DegreeComponent : MonoBehaviour { [Range(1, 4)] public float scalar = 0.0f; [Range(0, 360)] public float degree = 0.0f; float dTime; // Start is called before the first frame update void..

게임 수학 & 물리/게임 수학

[게임 수학] sin, cos (1)

sin, cos 게임에서 sin, cos은 특정 패턴의 움직임을 구현할 때 sin, cos을 활용할 수 있다 sin, cos, tan의 공식 sin, cos, tan의 공식은 아래와 같다 sin, cos의 활용 단위원(반지름이 1인 경우)을 기준으로 했을 때 각도( θ )를 알면 원에서의 해당 좌표를 알 수 있는 것이 핵심이다 위 그림처럼 cos θ , sin θ가 우리가 원하는 x, y 좌표를 의미한다 이처럼 cos θ 는 x좌표가 1부터 시작하고 sin θ 는 y좌표가 0부터 시작하며 각각 sin cos tan는 아래와 같은 그래프를 그리는 것을 알 수 있다 이렇게 sin, cos을 통해서 각도로 원에서의 위치를 알아낼 수 있었다 또한, sin, cos의 그래프에서 반복적인 형태로 위아래로 움직이는 ..

게임 수학 & 물리/게임 수학

[게임 수학] 피타고라스의 정리

피타고라스의 정리 게임에서 피타고라스의 정리는 주로 거리 측정을 위해 활용한다 플레이어 A와 몬스터 B의 거리인 c를 피타고라스의 정리를 통해 알아낼 수 있다 이를 통해 몬스터의 감지 범위 내에 플레이어가 있다면 플레이어를 따라오도록 감지 범위 내에 플레이어가 없다면 움직이지 않도록 구현을 아래의 예시와 같이 구현 가능하다 피타고라스의 정리 예시 먼저 플레이어에 붙일 스크립트인 MoveComponent는 아래와 같이 구현할 수 있다 using System.Collections; using System.Collections.Generic; using UnityEngine; public class MoveComponent : MonoBehaviour { public Vector3 dirVec; public ..