/* * 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 BasicGeometry { public static class AngleFP32 { public static float ToRadians(float angle, AngleUnit unit) { if (unit == AngleUnit.DEGREES) { return angle * DegreeFP32.RADIANS_IN_DEGREE; } if (unit == AngleUnit.TURNS) { return angle * RadianFP32.TWO_PI; } return angle; } public static float ToDegrees(float angle, AngleUnit unit) { if (unit == AngleUnit.RADIANS) { return angle * RadianFP32.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 * RadianFP32.TURNS_IN_RADIAN; } if (unit == AngleUnit.DEGREES) { return angle * DegreeFP32.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 RadianFP32.TWO_PI; } public static float GetHalfCircle(AngleUnit unit) { if (unit == AngleUnit.DEGREES) { return 180.0f; } if (unit == AngleUnit.TURNS) { return 0.5f; } return RadianFP32.PI; } public static float GetQuarterCircle(AngleUnit unit) { if (unit == AngleUnit.DEGREES) { return 90.0f; } if (unit == AngleUnit.TURNS) { return 0.25f; } return RadianFP32.HALF_OF_PI; } public static float Normalize(float angle, AngleUnit unit, AngleRange range) { if (unit == AngleUnit.DEGREES) { return DegreeFP32.Normalize(angle, range); } if (unit == AngleUnit.TURNS) { return TurnFP32.Normalize(angle, range); } return RadianFP32.Normalize(angle, range); } } }