※ 요약
피타고라스의 정리를 이용한 두 점 사이의 거리 구하기다.
아래 그림과 같은 직각 삼각형이 있을때, 세 변의 길이는 a^2+b^2=c^2인 관계가 성립한다는 것이 피타고라스 정리다.
위 같은 공식을 아래 그림에 적용해보자.
먼저 빨간점 p1과 p2가 있고, 각각 가상의 수직선과 수평선을 그었다.
그리고 가상의 노란 빗변을 이어주니 직각 삼각형이 되었다.
이제 a^2+b^2=c^2를 이용하여 두 점 사이의 거리를 구한다는게 느낌이 올 것이다.
(좀더 자세히 쓰려다가 그림 그리기도 귀찮고 수식 입력도 안되서 여기까지 작성함)
※ 특징
C언어를 이용해 피타고라스 정리를 구현하여 두 점 사이의 거리를 구한다.
C언어 소스는 아래와 같다. 임의의 점 p1(432, 189)과 p2(38, 392)의 거리를 측정해보니 443.2212가 나왔다.
헤더는 math.h를 추가해주고 GetDistance 함수와 구조체를 복사하면 어느 프로젝트에서든 두 점의 거리를 구할 수 있다.
또 C++를 이용하여 아래와 같은 예제를 구현하였으니 관심있으면 한 번 보기 바란다.
#include <stdio.h> #include <math.h> typedef struct tagPoint { double x; double y; }_Point; double GetDistance( const _Point p1, const _Point p2 ); int main( ) { _Point p1 = { 432, 189 }; _Point p2 = { 38, 392 }; double dDistance = GetDistance( p1, p2 ); return 0; } double GetDistance( const _Point p1, const _Point p2 ) { return sqrt( (p1.x-p2.x)*(p1.x-p2.x) + (p1.y-p2.y)*(p1.y-p2.y) ); }
'예제 모음 > C/C++' 카테고리의 다른 글
[C언어] printf를 이용해 소수점 이하 자릿수 설정하기 (0) | 2016.02.26 |
---|---|
[C/C++] sin, cos을 이용해서 원 그리기 (2) | 2015.12.10 |
[C++] 두 점 사이의 거리 구하기 (0) | 2015.12.04 |
[C++11] 중복없는 로또 프로그램2 (2) | 2015.11.29 |
[C++11] 중복없는 로또 프로그램 (6) | 2015.11.27 |
[C++11] 원 안에만 점 찍기 (0) | 2014.09.02 |
[C언어] rand 함수를 이용한 로또 프로그램 (1) | 2014.04.08 |