/* * 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 FP64Angle { public static double ToRadians(double angle, AngleUnit unit) { if (unit == AngleUnit.DEGREES) { return angle * FP64Degrees.RADIANS_IN_DEGREE; } if (unit == AngleUnit.TURNS) { return angle * FP64Radians.TWO_PI; } return angle; } public static double ToDegrees(double angle, AngleUnit unit) { if (unit == AngleUnit.RADIANS) { return angle * FP64Radians.DEGREES_IN_RADIAN; } if (unit == AngleUnit.TURNS) { return angle * 360.0; } return angle; } public static double ToTurns(double angle, AngleUnit unit) { if (unit == AngleUnit.RADIANS) { return angle * FP64Radians.TURNS_IN_RADIAN; } if (unit == AngleUnit.DEGREES) { return angle * FP64Degrees.TURNS_IN_DEGREE; } return angle; } public static double GetFullCircle(AngleUnit unit) { if (unit == AngleUnit.DEGREES) { return 360.0; } if (unit == AngleUnit.TURNS) { return 1.0; } return FP64Radians.TWO_PI; } public static double GetHalfCircle(AngleUnit unit) { if (unit == AngleUnit.DEGREES) { return 180.0; } if (unit == AngleUnit.TURNS) { return 0.5; } return FP64Radians.PI; } public static double GetQuarterCircle(AngleUnit unit) { if (unit == AngleUnit.DEGREES) { return 90.0; } if (unit == AngleUnit.TURNS) { return 0.25; } return FP64Radians.HALF_OF_PI; } public static double Normalize(double angle, AngleUnit unit, AngleRange range) { if (unit == AngleUnit.DEGREES) { return FP64Degrees.Normalize(angle, range); } if (unit == AngleUnit.TURNS) { return FP64Turns.Normalize(angle, range); } return FP64Radians.Normalize(angle, range); } } }