프로그래머

정점과 정점 사이의 거리 구하기를 코드로 구현해보자

Mercuders Master 2021. 8. 30. 22:33
반응형

3D 공간상에서 하나의 정점(x, y, z 값을 가지고 있는 벡터)에서 정점으로 직선 거리를 구하려면 어떻게 해야할까?

그림을 보면 x와 x’의 거리를 구하기 위해선 x에서 x’를 뺀 값을 제곱근  해당 정점 정점 사이의 거리가 나온다. 이것을 y, z에도 같이 적용을 시켜보자.

inline double getDistacne(mip::VECTOR3 _ptA, mip::VECTOR3 _ptB)
{
  return sqrtf(
   (_ptB.x - _ptA.x)*(_ptB.x - _ptA.x) +
   (_ptB.y - _ptA.y)*(_ptB.y - _ptA.y) +
   (_ptB.z - _ptA.z)*(_ptB.z - _ptA.z)
  );
}

위 함수는 두개의 정점을 인자로 받아 각각의 x, y, z 성분을 뺀 값을 곱하여 더한 값을 제곱근(루트) 함수 - sqrtf 를 통하여 거리를 구할 수 있다.
해당 함수의 앞에  inline 이란 키워드가 붙었는데 이것은 수많은 점정들의 거리를 구할때 계속해서 이 함수가 호출되면 미리 선언된 곳으로 이동하여 계산하기 때문에 속도 측면에서 더 유리할 수 있기 때문에 inline 키워드가 들어갔다.
이로써 간단하게 정점과 정점 사이의 거리를 구할 수 있겠습니다..!

 

반응형

'프로그래머' 카테고리의 다른 글

qt msb4181 에러  (0) 2024.03.22