/* ================================================================================ RPL/2 (R) version 4.1.32 Copyright (C) 1989-2020 Dr. BERTRAND Joël This file is part of RPL/2. RPL/2 is free software; you can redistribute it and/or modify it under the terms of the CeCILL V2 License as published by the french CEA, CNRS and INRIA. RPL/2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the CeCILL V2 License for more details. You should have received a copy of the CeCILL License along with RPL/2. If not, write to info@cecill.info. ================================================================================ */ #include "rpl-conv.h" /* ================================================================================ Fonction de conversion d'un angle exprimé en radians en degrés ================================================================================ Entrées : pointeur sur l'angle -------------------------------------------------------------------------------- Sorties : néant -------------------------------------------------------------------------------- Effets de bord : néant ================================================================================ */ void conversion_radians_vers_degres(real8 *angle) { (*angle) = 45 * (*angle) / atan((real8) 1); return; } /* ================================================================================ Fonction de conversion d'un angle exprimé en degrés en radians ================================================================================ Entrées : pointeur sur l'angle -------------------------------------------------------------------------------- Sorties : néant -------------------------------------------------------------------------------- Effets de bord : néant ================================================================================ */ void conversion_degres_vers_radians(real8 *angle) { (*angle) = atan((real8) 1) * (*angle) / 45; return; } /* ================================================================================ Fonction de conversion d'un angle exprimé en decimal en HMS ================================================================================ Entrées : pointeur sur l'angle -------------------------------------------------------------------------------- Sorties : néant -------------------------------------------------------------------------------- Effets de bord : néant ================================================================================ */ void conversion_decimal_vers_hms(real8 *angle) { real8 heures; real8 minutes; real8 reste; real8 secondes; integer4 signe; signe = ((*angle) >= 0) ? 1 : -1; (*angle) *= signe; reste = (*angle) - (heures = floor(*angle)); minutes = floor(reste *= 60); reste -= minutes; secondes = floor(reste = 60 * reste); reste -= secondes; (*angle) = (heures + ((minutes + ((secondes + reste) / 100)) / 100)) * signe; return; } /* ================================================================================ Fonction de conversion d'un angle exprimé en HMS en décimal ================================================================================ Entrées : pointeur sur l'angle -------------------------------------------------------------------------------- Sorties : néant -------------------------------------------------------------------------------- Effets de bord : néant ================================================================================ */ void conversion_hms_vers_decimal(real8 *angle) { real8 minutes; real8 secondes; real8 reste; real8 heures; integer4 signe; signe = ((*angle) >= 0) ? 1 : -1; (*angle) *= signe; reste = (*angle) - (heures = floor(*angle)); minutes = floor(reste *= 100); reste -= minutes; secondes = floor(reste = 100 * reste); reste -= secondes; (*angle) = (heures + ((minutes + ((secondes + reste) / 60)) / 60)) * signe; return; } // vim: ts=4