Font size: +

Fit 이것만 알면 완벽히 쓴다.

fit01

Fit 계열 함수 5종의 성질과 각 함수의 차이에 대해 알아봅시다.

​Fit 함수는 간단합니다. [X, Y] 내의 값 a에 대한 위치를 새로운 범위 [X', Y']에 사상한 값 a'를 반환합니다. [X, Y] 를 벗어난 값은 각각 X', Y'로 사상됩니다.

.................

​저 한 줄 짜리 설명으로 이해하신 분은 필시 이과일거라 생각합니다. 아니면 공학수학을 배우셨거나... 일반적으로 그래픽 툴만 잡는 분들에 익숙한 표기나 단어가 단 하나도 없으니. 심지어 후디니 헬프 문서를 봐도 '관계'라고 표현을 해 놔서 도대체 저 숫자들에 무슨 썸씽이 있는 것이냐 라는 의문을 가져오기 마련입니다.


하지만 fit함수는 2개의 숫자로 정의되는 범위 내에서 한 개의 숫자의 위치에 대한 정보를 다루는 함수입니다.

네. 위치입니다. 제일 중요합니다. 굵은 글씨 밑줄 가능하다면 형광펜까지 칠하고 싶을 정도로.


위치를 다루는거다 보니, 그림으로 그려서 이해하면 누구보다 빠르게 남들과는 다르게 색 다르게 이해할 수 있습니다. 다음 그림을 보시죠

​사상이 뭔지는 이 그림으로 이해하는게 가장 빠르다고 생각합니다.

수직선을 두개 그립니다. 윗 수직선의 표현 범위는 원래 범위의 최소값, 최대값이 되겠습니다.

a는 임의의 값입니다. 범위 안일수도, 밖일수도 있습니다.

그림에선 범위 내부의 값으로 표현되고 있습니다.


중요한건 두 번째 수직선 입니다.

 두 번째 수직선의 X' Y' a'의 위치를 자세히 보시면, 기존 수직선과 정확히 같다는 걸 알 수가 있습니다.

한 마디로, X - a의 길이와 X' - a'의 길이가 같다는 이야기죠. 

​여기서 수직선에 숫자를 대입해 개념을 확인해 봅시다.

0.3은 0부터 1까지 범위에서 상대적으로 0.3이라는 위치에 있습니다.

그렇다면, 0부터 10까지의 범위에서 0.3의 위치에 있는 값은 과연 무엇일까요?

​정답은 3입니다.

간단하게는 10에 0.3을 곱해보면 답이 나옵니다만, 그렇게 이해하면 '그럼 범위가 0부터 시작하는게 아니면?'이라는 난제 아닌 난제에 부딪히게 되죠.

사상은 위치에 대한 개념입니다. 그걸 잊지 마세요. 

Enter your text here ...

Enter your text here ...

그렇다면 범위를 벗어난 값에 대해서는 어떻게 되는지 궁금하실 분들이 있으실텐데요.

값이 원래 범위보다 작은 경우에는 새 범위의 최소값이, 원래 범위보다 넓은 경우에는 새 범위의 최대값이 반환됩니다.

값의 범위와 위치에 대한 개념을 완전히 이해하셨으면, Fit함수를 쓰기가 쉬워집니다. 각각의 함수에 대한 개념을 그림으로 나타내면 아래 그림과 같습니다.

​omin, omax는 원래 범위의 최소, 최대값을 의미하겠죠.

nmin, nmax는 사상할 범위의 최소, 최대값이 됩니다.

value는 원래 범위에서의 위치고

리턴값은 value를 새로운 범위에 사상한 값이 됩니다.

​omin, omax이 각각 0, 1로 고정된 형태의 fit입니다. 

값을 단위화 시켜서 활용하는 경우에 유용하겠죠?

​omin, omax이 각각 -1, 1로 고정된 형태의 fit입니다. 

이것 역시 값을 단위화 시켜 사용하면 유용한 형태이긴 하나,

값의 범위가 -1부터 1까지라는 사실에 주목하세요.

값이 0이면 새로운 범위의 정확히 중간값이 나올겁니다.

함수 이름이 왜 11이냐고요? 함수 이름에는 -기호를 못 씁니다.

​Fit01과 별반 다를게 없어 보입니다.

하지만 새로운 범위의 최소, 최대값이 서로 바뀐 상태입니다.

실제로 Fit01 쓸 때 서로 바꿔 써도 똑같이 동작합니다. 왜 두개를 따로 만들었는지 의문..

​Fit에 대한 언급은 거의 다 끝난 것 같습니다.

근데.. 아직 언급 안한게 하나 있죠. efit입니다.


efit은 값 clamp를 하지 않습니다. 한 마디로, fit에서 value값이  omin <  value < omax를 만족하지 않아도 값을 omin, omax로 고정시켜서 반환하지 않습니다.

간단하게 설명하자면, efit은 f(x)가 1차함수이며, f(omin) = nmin, f(omax) = f(nmax)일 때, f(value)의 값을 반환합니다.

......

자, 좌표명면을 하나 그립니다.

omin일 때  nmin을 지나는 점 하나,

omax일 때 nmax를 지나는 점 하나를 그립니다.

 그리고 그걸 이어줍니다.


이러면 f(omin) = nmin, f(omax) = nmax인 1차 함수가 완성됩니다.


직선이니까요.


그 1차 함수를 f(x)라 할 때, f(value)를 반환하는게 바로 efit 함수입니다.

이런 모양이 될 겁니다.


물론다른 Fit 함수도 이와 같은 형태로 나타낼 수 있습니다.

​왼쪽 위 부터 fit, fit01, fit11을 그래프로 나타내 본 형태입니다.

efit과 다른 fit의 차이점은 기존 범위를 벗어난 값의 차이입니다.

​나름 이해하기 쉽게 Fit 함수를 파해쳐 봤습니다.

메모리가 중요한가? CPU가 중요한가?
VEX 언어 참고서
 

Comments

No comments made yet. Be the first to submit a comment
Already Registered? Login Here
Sunday, 12 January 2025