epsilon()함수가 정확하게 어떤 함수죠? 그리고 이것이 벡터의 정규화과정으로서 사용될 때에 관하여.

jzqioipst의 이미지

아래는 벡터를 정규화하는 함수인데 epsilon()이 사용되는 부분에서 대체 뭔말인지 모르겠네요.
구글링해보면 정적분같은 수학적 용어들 위주로 나오고, 간혹 double과 float같은 경우 표현될 수 있는 어떤 오차값에 대해 다루는 함수라고
간략하게 설명이 나오긴 하는데 명확하게 무엇인지 모르겠고 이와 같은 상황에서 어떤식으로 쓰인 건지도 모르겠네요.

inline Vector2D Vec2DNormalize(const Vector2D &v)
{
  Vector2D vec = v;
 
  double vector_length = vec.Length();
 
  if (vector_length > std::numeric_limits<double>::epsilon())
  {
    vec.x /= vector_length;
    vec.y /= vector_length;
  }
 
  return vec;
}

우둔한 저에게 깨달음의 자비를 베풀어 주실분...

jzqioipst의 이미지

아... epsilon()으로 여기서 다른 게시물들 검색해보니 대충 알 것 같군요.
double형이 가질 수 있는 최대 오차값 정도가 될 것이고
vector_length > std::numeric_limits::epsilon()
이것은
vector_length > 0
정도로 해석해도 무방할 듯 하군요.;;
다음부턴 좀 더 신중히 검색해보고 질문 올리겠습니다.

그런데 이 사이트에서는 게시물 삭제나 수정이 안되는 것인가요?

moldycake의 이미지

epsilon은 epsilon-delta method를 찾아보시면 개념에 도움이 되실 것 같습니다.

http://en.wikipedia.org/wiki/(%CE%B5,_%CE%B4)-definition_of_limit

klara의 이미지

machine epsilon이라고 하는 녀석입니다.
http://en.wikipedia.org/wiki/Machine_epsilon
참고하세요.