Algorithm with C/Math

세 점을 입력받아 삼각형의 성립 조건 구하기

DesignatedRoom 2020. 10. 14. 08:46

문제

삼각형의 세 점의 좌표를 입력 받는다.

삼각형이 만들어질 수 있는지 없는지를 판단한다. 

 

문제의 힌트

삼각형은 3개의 점으로 이루어져있다.

그리고 점이 3개이기 때문에 각 점과 점을 이을 수 있다.

즉, 3개의 직선이 만들어진다.

그런데 3개의 직선은 필요가 없다.

그 이유는 삼각형의 세 점을 A,B,C라 하고 점A를 기준점이라 생각해보자. 

선분 AB와 AC이 이렇게 두 직선만 가지고 충분히 세 점이 삼각형을 이루는지 알아낼 수 있다.

두 선분이 만약 일치한다면 삼각형이 성립이 되지 않는다.

그리고, 벡터의 외적을 통해서도 프로그래밍 할 수 있다.

 

 

구현

여기서, 점을 표현하기 위해서 다음과 같은 구조체를 필요로 하자.

그리고, 직선에 대한 정보를 담을 구조체가 필요로 한다.

직선에서 중요한 정보는 기울기와 y 절편이다.

아래의 함수는 세 점의 좌표를 각 각 입력받는 함수

아래의 함수는 두 점을 잇는 직선의 기울기와 y절편을 구하는 함수이다.

아래의 함수는 직선들의 관계를 파악하는 역할을 한다.

두 직선의 기울기 및 y절편까지도 모두 서로 같다면 삼각형이 될 수 없다.

메인 함수

프로그램 실행결과 : 직각 삼각형일 때

프로그램 실행결과 : 두 점의 직선만 일치관계일 때

프로그램 실행결과 : 각 점들을 잇는 직선들이 서로 일치관계 일 때

소스 파일

main.c
0.00MB

 

 

 

벡터의 외적을 활용한 구현

외적에 대한 내용은 아래의 글을 참조하자.

designatedroom87.tistory.com/103?category=887656

 

벡터의 외적(Cross product)

1. 외적의 기하학적 정의 벡터의 외적을 한 결과값은 벡터이다. 벡터는 크기와 방향을 갖는다고 하였으므로 벡터의 외적을 한 결과 또한 크기와 방향을 갖는다. 이 방향은 벡터v1과 v2에 동시에 ��

designatedroom87.tistory.com

외적의 결과가 0이 된다는 사실은 두 벡터가 서로 같은 직선에 위치한다.

소스 파일

main.c
0.00MB