티스토리 뷰

직선

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;
    }
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/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
글 보관함