/* * Copyright 2019-2025 Andrey Pokidov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; /* * Author: Andrey Pokidov * Date: 1 Feb 2019 */ namespace BGC { public static class F32Angle { public static float ToRadians(float angle, AngleUnit unit) { if (unit == AngleUnit.DEGREES) { return angle * F32Degrees.RADIANS_IN_DEGREE; } if (unit == AngleUnit.TURNS) { return angle * F32Radians.TWO_PI; } return angle; } public static float ToDegrees(float angle, AngleUnit unit) { if (unit == AngleUnit.RADIANS) { return angle * F32Radians.DEGREES_IN_RADIAN; } if (unit == AngleUnit.TURNS) { return angle * 360.0f; } return angle; } public static float ToTurns(float angle, AngleUnit unit) { if (unit == AngleUnit.RADIANS) { return angle * F32Radians.TURNS_IN_RADIAN; } if (unit == AngleUnit.DEGREES) { return angle * F32Degrees.TURNS_IN_DEGREE; } return angle; } public static float GetFullCircle(AngleUnit unit) { if (unit == AngleUnit.DEGREES) { return 360.0f; } if (unit == AngleUnit.TURNS) { return 1.0f; } return F32Radians.TWO_PI; } public static float GetHalfCircle(AngleUnit unit) { if (unit == AngleUnit.DEGREES) { return 180.0f; } if (unit == AngleUnit.TURNS) { return 0.5f; } return F32Radians.PI; } public static float GetQuarterCircle(AngleUnit unit) { if (unit == AngleUnit.DEGREES) { return 90.0f; } if (unit == AngleUnit.TURNS) { return 0.25f; } return F32Radians.HALF_OF_PI; } public static float Normalize(float angle, AngleUnit unit, AngleRange range) { if (unit == AngleUnit.DEGREES) { return F32Degrees.Normalize(angle, range); } if (unit == AngleUnit.TURNS) { return F32Turns.Normalize(angle, range); } return F32Radians.Normalize(angle, range); } } }