C#에서 float 값을 인수로 받아, 그 값이 사인(sine)이 되는 각도(아크사인)를 구하려면 MathF.Asin() 메서드를 사용하면 됩니다.
MathF.Asin() 메서드는 지정된 float 값에 대한 역사인(아크사인) 값을 라디안(radian) 단위로 반환합니다. 이때 입력값은 반드시 -1부터 1 사이의 범위에 있어야 하며, 이 범위를 벗어난 값이 전달되면 유효한 각도가 존재하지 않는다는 의미로 NaN(Not a Number)이 반환됩니다.
예제 1
using System;
public class Demo {
public static void Main() {
float val1 = 0.1f;
float val2 = 8.9f;
Console.WriteLine("Angle (val1) = "+(MathF.Asin(val1)));
Console.WriteLine("Angle (val2) = "+(MathF.Asin(val2)));
}
}출력 결과
Angle (val1) = 0.1001674 Angle (val2) = NaN
위 예제에서 val1(0.1f)은 유효 범위인 -1~1 안에 있으므로 정상적인 각도 값이 반환됩니다. 반면 val2(8.9f)는 1보다 크기 때문에 사인 함수의 출력 범위를 벗어나며, 따라서 NaN이 반환됩니다.
예제 2
다른 예제도 살펴보겠습니다.
using System;
public class Demo {
public static void Main() {
float val1 = 1.2f;
float val2 = 45.5f;
Console.WriteLine("Angle (val1) = "+(MathF.Asin(val1)));
Console.WriteLine("Angle (val2) = "+(MathF.Asin(val2)));
}
}출력 결과
Angle (val1) = NaN Angle (val2) = NaN
두 값 모두 1보다 크기 때문에 유효한 각도가 존재하지 않으며, 두 경우 모두 NaN이 반환됩니다.
핵심 정리
- MathF.Asin(float x): 사인 값이 x가 되는 각도를 라디안 단위로 반환합니다.
- 유효 입력 범위는 -1 ≤ x ≤ 1입니다.
- 범위를 벗어난 값이 입력되면 NaN이 반환됩니다.
- 결과를 도(degree) 단위로 얻고 싶다면 반환값에
180 / MathF.PI를 곱해 변환할 수 있습니다.