math_set_epsilon 함수 설명
math_set_epsilon
함수는 숫자 비교를 위한 엡실론(epsilon) 값을 설정하는 기능을 제공합니다. 엡실론은 반올림 오류로 인해 두 숫자가 충분히 가까운지를 판단하는 데 사용됩니다. 기본 엡실론 값은 0.00001입니다.
이 함수는 부동 소수점 수학을 다룰 때 유용하며, 특정 연산이 잘못된 값이나 예상과 다른 값을 반환하는 "반올림 오류"를 줄이는 데 도움을 줍니다. 예를 들어, 스프라이트의 이미지 인덱스에 값을 추가했을 때 결과가 정수(5)로 나올 것으로 예상하지만, 부동 소수점 수학의 특성으로 인해 실제 최종 값이 5.000002와 같이 나올 수 있습니다.
이 경우 다음과 같은 검사를 수행하면:
if (image_index == 5) {
// do something
}
코드는 예상대로 동작하지 않고 false
를 반환합니다. 그러나 엡실론을 0.00001로 설정하면 image_index
값이 원래 값의 +/- 0.00001에 가장 가까운 실제 숫자로 반올림되어 위의 비교가 true
를 반환하게 됩니다.
부동 소수점 계산은 게임이 실행되는 플랫폼에 따라 다르게 동작할 수 있습니다. 기본 엡실론 값인 0.00001은 다양한 플랫폼에서 반올림 오류에 대한 안전한 범위를 제공합니다.
엡실론 값 사용
엡실론 값은 다음의 모든 비교 연산자에 사용됩니다:
연산자 | 설명 |
---|---|
<: | 작다 |
>: | 크다 |
==: | 같다 |
<=: | 작거나 같다 |
>=: | 크거나 같다 |
!=: | 같지 않다 |
또한 sqrt
함수에서도 사용됩니다. 엡실론 값을 0으로 설정하면 모든 반올림이 비활성화되며, 1을 사용하면 오류가 발생합니다.
문법
math_set_epsilon(epsilon);
인수
인수 | 타입 | 설명 |
---|---|---|
epsilon | Real | 새로운 엡실론 값 (0에서 0.999999999까지) |
반환값
- Real
예제
math_set_epsilon(0.0001);
이 코드는 모든 이후의 부동 소수점 연산을 위한 엡실론 값을 설정합니다.
활용 예제
- 부동 소수점 비교:
gml math_set_epsilon(0.00001); if (value1 == value2) { // 두 값이 같다고 판단 }
- 스프라이트 애니메이션 제어:
gml math_set_epsilon(0.0001); if (image_index == target_index) { // 스프라이트 애니메이션 변경 }
- 물리 엔진에서의 충돌 감지:
gml math_set_epsilon(0.00001); if (distance_to_object(obj) < collision_threshold) { // 충돌 발생 }
- 게임 점수 계산:
gml math_set_epsilon(0.0001); if (player_score == expected_score) { // 점수 업데이트 }
- 정확한 위치 계산:
gml math_set_epsilon(0.00001); if (x_position == target_x) { // 목표 위치 도달 }