-
세 점을 입력받아 삼각형의 성립 조건 구하기Algorithm with C/Math 2020. 10. 14. 08:46
문제
삼각형의 세 점의 좌표를 입력 받는다.
삼각형이 만들어질 수 있는지 없는지를 판단한다.
문제의 힌트
삼각형은 3개의 점으로 이루어져있다.
그리고 점이 3개이기 때문에 각 점과 점을 이을 수 있다.
즉, 3개의 직선이 만들어진다.
그런데 3개의 직선은 필요가 없다.
그 이유는 삼각형의 세 점을 A,B,C라 하고 점A를 기준점이라 생각해보자.
선분 AB와 AC이 이렇게 두 직선만 가지고 충분히 세 점이 삼각형을 이루는지 알아낼 수 있다.
두 선분이 만약 일치한다면 삼각형이 성립이 되지 않는다.
그리고, 벡터의 외적을 통해서도 프로그래밍 할 수 있다.
구현
여기서, 점을 표현하기 위해서 다음과 같은 구조체를 필요로 하자.
그리고, 직선에 대한 정보를 담을 구조체가 필요로 한다.
직선에서 중요한 정보는 기울기와 y 절편이다.
아래의 함수는 세 점의 좌표를 각 각 입력받는 함수
아래의 함수는 두 점을 잇는 직선의 기울기와 y절편을 구하는 함수이다.
아래의 함수는 직선들의 관계를 파악하는 역할을 한다.
두 직선의 기울기 및 y절편까지도 모두 서로 같다면 삼각형이 될 수 없다.
메인 함수
프로그램 실행결과 : 직각 삼각형일 때
프로그램 실행결과 : 두 점의 직선만 일치관계일 때
프로그램 실행결과 : 각 점들을 잇는 직선들이 서로 일치관계 일 때
소스 파일
벡터의 외적을 활용한 구현
외적에 대한 내용은 아래의 글을 참조하자.
designatedroom87.tistory.com/103?category=887656
외적의 결과가 0이 된다는 사실은 두 벡터가 서로 같은 직선에 위치한다.
소스 파일
'Algorithm with C > Math' 카테고리의 다른 글
보간 회전 - cocos2D 활용 (0) 2021.04.06 평면의 방정식을 활용한 마인크래프트 블록 붙이기(Unity 활용) (0) 2020.11.30 API를 활용한 파티고라스의 정리를 이용한 거리 구하기 (0) 2020.10.10 행렬의 응용 Scale & Rotation (0) 2020.10.07 행렬의 기본 연산과 행렬식,역행렬, 단위행렬 (0) 2020.10.04