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) { // 목표 위치 도달 }