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

게임 수학 & 물리

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

[게임 물리] 토크(torque)와 항력(drag)

토크(torque) 토크는 회전력을 의미한다 위 그림처럼 토크의 회전운동은 충돌 이후에는 직진운동으로 작용한다 토크는 아래의 첫 번째 공식처럼 반지름과 Force의 곱을 의미하고 아래의 두번째와 같은 공식을 도출해 낼 수 있다 토크에서는 직진 운동에서 쓰던 표현이 아닌 아래와 같은 표현을 사용한다 일반적인(직진) 운동 토크(회전) 운동 힘 F T 거리 S 각도 속도 V 각속도 가속도 a 각가속도 질량 m J 항력(drag) 항력은 고체 물체가 유체 안에서 일정한 속도로 이동할 때 고체 물체에 작용하는 힘이다 항력 계수(Drag Coefficient)는 아래와 같이 정의된다 위의 공식에서 핵심은 p : 밀도 v^2 :상대 속도(고체와 유체 사이의) CD : 항력 계수(Drag Coefficient) A :..

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

[게임 물리] 운동량(Momentum)과 반발 계수(Coefficient of restitution)

운동량 보존의 법칙(Law of Conservation of Momentum) 외력이 없다면 운동량은 보존되는 것이 운동량 보존의 법칙이다 반면, 에너지는 쉽게 변환이 되며 보존이 되지 않는다 운동량(Momentum)과 충격량(Impulse) 운동량은 물체의 운동에 관련된 물리량이다 물체의 운동 상태를 나타내는 데 사용된다 공식은 아래와 같다 충격량이란 운동량의 변화량을 의미하고 물체에 가해지는 힘의 변화를 나타내는 데 사용된다 공식은 아래와 같다 위의 공식들과 F = ma 공식을 이용하면 아래와 같은 결과를 도출해 낼 수 있다 이처럼 충격량은 운동량의 변화량을 의미한다 운동량의 보존 (F = -F) A와 B가 서로 충돌할 때, 운동량 보존의 원리에 따르면 총 운동량은 변하지 않고 A와 B의 운동량의 변..

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

[게임 물리] 마찰력(Friction force)과 마찰계수(Coefficient of friction)

마찰력(Friction force) 우리가 물체를 움직일 때는 외력(Force)이 가해지고 수직항력(N)과 중력(g)의 영향을 받고 있는 물체에 마찰력(f)이 생기게 된다 일반적으로 물체에 외력을 가하지 않았을 때, 물체가 가만히 있는 경우는 수직항력과 중력이 동일하기 때문이다 마찰력은 물체의 질량에 따라 비례할 가능성이 높지만 실질적으로 수직항력과 중력의 상황에 따라 마찰력과 질량은 크게 연관성을 가지지 않는 경우가 있다 그리고 물체가 어떤 표면에 있느냐에 따라서 외력이 다르게 작용한다 외력과 마찰력의 비교를 통해서 외력이 더 크다면, 물체가 움직이고 마찰력이 더 크다면, 물체가 움직이지 않는다 정지 마찰력(Static Friction Force)과 운동 마찰력(Kinetic Friction Force..

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

[게임 물리] 운동 방정식(Equations of motion)

기본적인 개념 (운동 방정식을 들어가기 전) 1. 속도 * 시간 = 거리 속도와 시간을 곱하면 넓이가 나오고 이 넓이는 바로 이동한 거리이다 위의 그래프에서는 4m/s(속도) * 5s(시간)인 20m를 이동한 것이다 2. 기울기 == 가속도 함수의 그래프에서 기울기(m)는 Δy/ Δx를 통해 구할 수 있다 위의 그래프에서는 Δy는 10이고 Δx는 7이니 기울기는 10/7이다 이를 아래 그래프에 적용해 본다면, 기울기는 Δv/ Δt이고 이는 가속도 공식과 같다는 사실을 알 수 있다 따라서 우리는 등가속도 운동 그래프에서 기울기는 가속도라고 정의할 수 있다 3. 직선의 방정식 기울기와 y절편을 알고 있다면, 우리는 그래프를 쉽게 직선의 방정식으로 표현할 수 있다 위의 그림 예시처럼 기울기를 m, y절편(그래..

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

[게임 물리] 프레임(Frame)과 순간속도(Instantaneous Velocity)

프레임(Frame)과 프레임 속도(Frame rate) 게임과 애니메이션 등에서 속도를 표현할 때는 시간당 프레임으로 표현한다 '30 frame/s'로 간략하게 '30 프레임', '60 프레임'이라고 부른다 30 프레임은 1 프레임 당 1/30초가 걸린다는 것이다 하지만 정확히 1/30초마다 프레임이 갱신되는 것은 아니다 초당 30 프레임을 맞추지만 그 사이의 간격 즉, Frame rate는 일정하게 유지되지 않는다 유니티 Frame rate 유니티에서는 Update()와 FixedUpdate()가 제공되는데 60 프레임 게임이라는 가정하에 Update()는 매 프레임마다 호출되는 것은 맞으나 Frame rate가 일정하지 않고 1/60초마다 프레임이 정확히 갱신되지 않는다 FixedUpdate()는 F..

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

[게임 물리] 등속도 운동(Uniform Linear Motion), 등가속도 운동(Uniformly Accelerated Motion), 포물선 운동(Projectile motion)

등속도 운동(Uniform Linear Motion) 속도가 동일한 상태의 운동을 하는 것을 등속도 운동이라고 한다 아래의 속도 공식을 이용하면, 등속도 운동의 이동거리는 "변위(D) = 속도(V) * 시간(t)"라는 것을 알 수 있다 이를 통해, 게임에서 등속운동을 하는 물체의 속도와 시간을 통해 이동 거리 및 위치를 알 수 있다 등가속도 운동(Uniformly Accelerated Motion) 등속도 운동은 사실상 관성 운동을 제외하고는 현실에서 보기 힘들다 따라서, 속도가 어떻게 변화하는 지를 나타내는 것이 가속도이며 속도를 올리거나 내리는 정도를 의미한다 등속도에서는 가속도가 0이다 위의 그래프는 가속 운동을 나타낸다 직선이기 때문에 등가속도 운동이기도 하다 반대로 직선이 감소하는 형태로 그려졌..

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

[게임 물리] 게임 물리의 변환 과정

물체의 움직임 게임에서 물체가 움직이는 방식은 크게 2가지 방식으로 구분된다 1. 수식 변환 (행렬) 2. 물리 변환 (동역학) 수식 변환은 행렬을 통해 T(Translation), R(Rotation), S(Scaling) 변환을 일컫는다 물리 변환은 Force(힘)를 통해 위치 변환이 발생하는 것을 일컫는다 Force는 아래의 그림처럼 정의된다 위의 공식을 통해 게임에서 힘과 질량을 안다면, 가속도를 구할 수 있다 (a = F * m) 속도와 가속도 게임에서 가장 큰 핵심은 속도 및 가속도가 포함된 물체에 물리법칙을 적용해서 물체의 위치를 올바르게 갱신해서 보여주는 것이다 속도 속도의 공식은 위와 같다 일반적으로 속도를 표현할 때, '80km/h'라고 표현하는데 이는 "거리의 변화량 / 시간의 변화량..

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

[게임 수학] 행렬(2)

행렬의 활용 게임에서는 이동, 회전, 크기를 제어할 때 행렬식을 이용하고 셰이더에서 많이 사용되며 그래픽스 랜더링 파이프라인에서 일어나는 모든 변환들이 행렬로 이루어지고 계산된다 행렬의 이동 (Translation) m03, m13, m23이 위치 값(x, y, z)을 가진다 기존 위치가 v이고 그 위치에서 t만큼 이동할 때, 위와 같은 계산 과정을 거치며 위치 변환이 이뤄진다 행렬의 확대, 축소 (Scaling) m00, m11, m22 요소를 이용해서 scale 변환이 이뤄진다 기존 스케일 행렬이 v이고 원하는 s만큼 scale 변환을 할 때, 위와 같은 계산 과정을 거친다 행렬의 회전 (Rotation) x축, y축, z 축에 따라 해당하는 값들이 변경되어 위와 같은 공식을 통해 회전 변환이 이뤄진..

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

[게임 수학] 행렬(1)

행렬의 정의 식 또는 수를 직사각형의 형태로 배열한 것이다 가로를 행(row), 세로를 열(column)이라 표현한다 배열된 수를 행렬의 성분(entry)라고 표현한다 행렬 표현은 대문자로 표현하고 내부값은 소문자로 표현한다 행벡터, 열벡터 행벡터는 DirectX에서 주로 이용되고 열벡터는 OpenGL, 언리얼, 유니티에서 주로 이용된다 행벡터와 열벡터의 차이점은 요소들이 배열되는 방향이다 행벡터는 수평적으로 요소가 배열되며, 열벡터는 수직적으로 요소가 배열된다 이러한 차이는 벡터의 사용 목적이나 특정 연산에 따라서 중요한 역할을 한다 예를 들어, 행렬 곱셈에서 행벡터와 열벡터의 순서가 중요하며, 이에 따라 연산 결과가 달라질 수 있다 행렬의 크기 표현 단위행렬 단위행렬(identity matrix)은 ..

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

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

벡터의 외적 유니티 벡터의 외적은 유니티에서 Vector3.Cross를 이용해 쉽게 구할 수 있다 법선벡터 면(두 벡터)의 수직인 벡터를 노멀라이즈 한 것을 법선벡터라고 한다 셰이더에서는 빛이 들어오는 방향과 비치는 부분 등을 계산하는데 활용되고 카메라에서는 보이는 부분인지 안 보이는 부분인지 컬링 하는데 활용된다 벡터의 외적 예시 1 위는 Vec1과 Vec2를 외적 한 벡터를 노란 공(cVec)을 통해 출력하는 예시이며 아래와 같이 구현 가능하다 void Update() { CrossVector(); Vector3 dir = cVec - Vec3.position; if (dir.magnitude >= 0.1f) Vec3.position += dir.normalized * Time.deltaTime; }..