[C언어] 두 점 사이의 거리 구하기

예제 모음/C/C++2015. 12. 2. 22:46

 

※ 요약
피타고라스의 정리를 이용한 두 점 사이의 거리 구하기다.
아래 그림과 같은 직각 삼각형이 있을때, 세 변의 길이는 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) );
}


작성자

Posted by 사용자 오뇽

태그

관련 글

댓글 영역