티스토리 뷰
직선
Ax + By = C 꼴의 방정식을 갖는 그래프는 직선이다.
(y2 - y1) / (x2 - x1)은 주어진 두 점의 기울기를 구하는 공식이다.
float 두점의 기울기 구하기(2D_Point 점1, 2D_Point 점2)
{
return (점2.y - 점1.y) / (점2.x - 점1.x);
}
3차원에서는 벡터를 이용하여 위치나 방향을 말하는데, 벡터 자체는 물체가 나아가는 방향을 의미한다.
이때, 두 벡터간의 직선을 정의하려면 끝점 - 원점으로 나온 <x, y, z> 값이 직선이 된다.
기울기가 양수인 직선은 왼쪽에서 오른쪽으로 상승한다.
기울기가 음수인 직선은 왼쪽에서 오른쪽으로 하강한다.
기울기가 0인 직선은 수평선이다.
기울기 공식의 제수가 0이면 기울기 정의가 불가능한 수직선이 된다.
직교
직교란 두 직선이 수직으로 만나는 상태이다.
두 직선이 직교하면 다음 식이 성립한다.
m1m2 = -1
m1 = -(1/m2)
m2 = -(1/m1)
// 직교하는 기울기를 반환하는 함수
float 직교하는기울기(float 기울기)
{
return -1 / 기울기;
}
// 두 직선의 직각 충돌을 확인하는 함수
bool 직각충돌감지(float 기울기1, float 기울기2)
{
if(기울기1 * 기울기2 == -1)
// if(기울기1 == -(1 / 기울기2))
// if(기울기2 == -(1 / 기울기1))
return true;
return false;
}
기울기
기울기를 나타내는 방법은 크게 3가지이다.
1. Ax + By = C가 만족할때, m = -A/B
2. 기울기 - 절편 공식, y = mx + b
3. 점 - 기울기 공식, (y - y1) = m(x - x1), (x1, y1)은 직선 위의 점
충돌
충돌이 일어나는지 확인하는 간단한 방법은 기울기와 절편을 알아내는 것이다.
1. 기울기가 다르다 = 둘은 교차한다. (해집합 1)
2. 기울기가 다르다 = y절편이 같다 = 둘은 일치한다. (해집합 무한)
3. 기울기가 다르다 = y절편이 다르다 = 둘은 평행한다. (해집합 0)
int 두 직선의 기울기 (기울기1 = m1, 기울기2 = m2)
{
if (만약 m1 != m2 이면) return 1;//해가 한개
else if (m1 == m2)
{
// 두 직선의 y절편 b1과 b2 구하기
// ....
if (b1 != b2) return 0; // 해가 없음
if (b1 == b2) return 2; // 해가 무한
}
}
이러한 충돌의 정확한 위치를 찾기위해서는 선형 결합법과 치환법을 사용한다.
선형 결합법은 두 직선의 방정식의 하나의 미지수를 같은 수로 만들고 두 식을 붙여 빼서 하나의 미지수를 먼저 알아내는 방식이다.
치환법은 두 식 중 한식에서 하나의 미지수의 정의를 가져온 뒤 해당 미지수를 다른 식에 대입하여 좀더 산술을 많이하는 방식이다.
번외
// 점을 나타낼 구조체 선언
struct 3D_Point
{
float x, y , z;
3D_Point operator+(const 3D_Point& 다른좌표) const
{
3D_Point temp = {
this->x + 다른좌표.x,
this->y + 다른좌표.y,
this->z + 다른좌표.z
};
return temp;
}
}
'수학 > 게임수학' 카테고리의 다른 글
[게임수학] 2장 기하학적 기초 - 원과 구 (0) | 2020.06.09 |
---|---|
[게임수학] 2장 기하학적 기초 - 포물선 (0) | 2020.05.31 |
[게임수학] 2장 기하학적 기초 - 거리 공식 (0) | 2020.05.16 |
[게임수학] 1장 점과 직선 - 충돌 검출 (일차 연립방정식, 선형결합법, 치환법 등) (0) | 2020.05.10 |
[게임수학] 1장 점과 직선 - 점을 정의하는법 (0) | 2020.05.08 |
- Total
- Today
- Yesterday
- thread
- 입출력
- 백준
- const
- 인터럽트
- 클래스
- 게임수학
- CPU
- 멀티스레드
- c++
- 알고리즘
- 수학
- 스레드
- 함수
- 명령어
- 운영체제
- 크기
- New
- 포인터
- dynamic_cast
- 프로세스
- 레지스터
- 초기화
- 메모리
- malloc
- 할당
- 구조
- 상속
- 컴파일
- static_cast
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |