티스토리 뷰

1장의 점과 직선을 구하는 법을 이어서 이번엔 이를 활용하는 예시를 보려한다.

 


충돌 검출

 

 게임의 주요 요소 중 하나인 <충돌>두 직선(오브젝트)가 만나는 점이 어디인지 알아야 판정이 가능하다. 또한 직선은 벽이나 물체의 이동경로를 나타낼 수 있다. 결국, 두 직선의 교점을 찾는 것이 관건이며 이는 직선 두개의 방정식을 묶어서 일차 연립방정식을 만들어 구할 수 있다.

 

 

이러한 일차 연립방정식이 가능한 3가지 경우가 있는데 이는 다음과 같다.

출처 : 중등수학(중2 수학) 일차함수와 일차함수의 활용 요약과 단원평가문제

1. 두 직선의 기울기는 같지만 y 절편이 다르면 해는 없음 -> 두 직선이 평행     (기울기 ==, 절편 !=)
2. 두 직선의 기울기가 서로 다르면 유일한 해 -> 두 직선이 교차                    (기울기 !=)
3. 두 직선의 기울기와 y절편이 모두 같으면 무한히 많은 해 -> 두 직선이 동일  (기울기 ==, 절편 ==)
func 두 직선의 기울기 (기울기1 = m1, 기울기2 = m2)
{
    if (만약 m1 != m2 이면) 해가 한개
    else if (m1 == m2)
    {
    	두 직선의 y절편 b1과 b2 구하기
        if (b1 != b2) 해가 없음
        if (b1 == b2) 해가 무한
    }
}

 

 

 


 

 

 

예제 1.11 : 일차 연립방정식
 다음 일차 연립방정식의 그래프를 그리고, 해집합의 크기를 구하라.(교점이 몇개인지 구하라)
1. x + y = 2
2. -x + 2y = -2

1의 기울기 -1, 2의 기울기 1/2.
두 방정식의 기울기가 다름으로 둘은 교차하는 방정식이다. 또한 교차상태일때는 유일한 해가 존재하며 해집합의 크기는 1이다.
예제 1.12 : 직선간의 충돌검사
화면에서 공이 직선 -x + 2y = -2를 따라 움직인다. 벽이 직선 3x - 6y = -6을 따라 위치할때, 공이 벽과 충돌할 것인가?

직선 : 기울기 1/2, y절편 -1
벽 : 기울기 1/2, y절편 1
기울기 ==, 절편 !=는 두 물체가 평행하며 같은 방향으로 뻗어나가기 때문에 둘은 충돌하지 않는다.

 

 위와 같이 수식을 활용하면 충돌을 미리 예측할 수 있고 충돌하지 않는 두 물체충돌할 때까지 기다리는 무한루프피할 수 있다.

 

 

 


 

 

 

방금까지 두 직선이 교차하는지를 판단하는 방법을 공부했다면 이제 두 직선이 교차한다는 가정하에 정확한 교차점을 찾아낼 수 있는 두 가지 방법을 학습한다. 바로 선형 결합법과 치환법으로 말이다.

 

선형 결합
더보기

 우선 션형 결합이란 의미는 둘을 한 줄에 넣는다는 의미이다.

 

 등식의 성질을 이용해 연립방정식을 풀기 편한 형태의 동등한 다른 연립방정식으로 변환하는 것으로 방정식 양 변에 0이 아닌 같은 수를 곱하여 두 방정식의 x나 y 계수가 같도록 만드는 것이다.

 이는 다음 단계들을 통해 해를 구하여 교차 점을 찾을 수 있다.

 

  1. x나 y 중 소거할 변수를 정한다.
  2. 제거할 변수의 계수를 같도록 방정식의 양변에 0이 아닌 수를 곱한다.
  3. 한 방정식에서 다른 방정식을 빼서 선형 결합을 구한다.
  4. 첫 번째 변수의 값을 구한다.
  5. 첫 번째 변수의 값을 주어진 방정식에 대입하여 다른 값을 구한다.

 

 

예시
1) 3x + 2y = 10
2) 4x + 3y = 6

1. y를 소거한다.
2. 1)은 3을 2)는 2를 곱하여 (9x + 6y = 30), (8x + 6y = 12)를 구한다.
3-4. (9x + 6y) - (8x + 6y) = 30 - 12를 계산하여 x = 18이라는 결과를 갖는다.
5. x = 18을 대입하여 y = -22라는 값을 구한다.

결과, 교차점은 (18, -22)이다.
예제 1.13 : 선형결합법 교점 구하기
1) 3x + 5y = 8
2) x + 3y = 4

 

 


 

 

치환법
더보기

치환은 무엇인가를 바꾸어 놓는다는 의미로 수학에서는 특정 변수를 다른 변수나 식으로 변환한다는 의미이다.

 

 치환법은 산술 연산이 많이 필요한 방법이다. 선형 결합과 같이 한번에 하나의 좌표만 구할 수 있으며, 주어진 방정식 중 어느 한 방정식의 하나의 변수를 정의하는 것으로 시작한다.

  1. 주어진 방정식 중 하나의 한 변수를 정리
  2. 정리된 등식을 다른 방정식에 치환
  3. 남은 변수의 답을 구함

 

 

예시
1) x + 2y = 5
2) 3x - 2y = -1

1. 1) 방정식의 한 변수를 정의한다.
x = -2y + 5

2. 이제 x등식을 다른 방정식에 치환한다.
3x - 2y = -1
3(-2y + 5) - 2y = -1
-8y = - 16
y = 2

3. 주어진 y = 2를 대입하여 x를 구한다.
x + 4 = 5
x = 1

결과, 교차점은 (1, 2)이다.
예제 1.14 : 치환법 직선 교점 구하기
다음 연립방정식을 치환법으로 풀어라
1) 3x + y = 8
2) 5x - 2y = 9

 

 어느 한 변수의 계수가 1이면 치환법, 그 외에는 선형 결합법을 쓰는게 더 쉽다.

 

 

 


 

 

두 직선이 주어지면 교점의 위치를 리턴하는 함수

두 직선의 직선의 방정식

y - y1 = m1(x - x1)
y - y2 = m1(x - x2)

이를 y에 대하여 정리하면 다음과 같고

y = m1x - m1x1 + y1
y = m2x - m2x2 + y2

이를 x에 대해 두 방정식이 같다고 놓으면

y - y = m2x - m2x2 + y2 - (m1x - m1x1 + y1)
m1x - m2x = m1x1 - m2x2 + y2 - y1
x(m1 - m2) / (m1 - m2) = m1x1 - m2x2 + y2 - y1 / (m1 - m2)
x = m1x1 - m2x2 + y2 - y1 / (m1 - m2)

위 식이 성립된다.
float *두 직선의 교차 위치를 알려주는 함수 (float *위치1, float *기울기1, float *위치2, float *기울기2)
{
	float result[2] = {0, 0}; // 정답 위치 저장 변수
    
    // 정답의 x위치 계산
    result[0] = (기울기1 * 위치1.x - 기울기2 * 위치2.x + 위치2.y - 위치1.y) / (기울기1 - 기울기2);
    
    // 위치 x를 통한 위치 y계산
    result[1] = 기울기1(result[0] - 위치1.x) + 위치1.y;
    
    return result;
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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
글 보관함