diff --git a/misc/goniometry.cc b/misc/goniometry.cc index 3ab507a4..3b44bc39 100644 --- a/misc/goniometry.cc +++ b/misc/goniometry.cc @@ -1,135 +1,128 @@ /** This file is part of Kig, a KDE program for Interactive Geometry... Copyright (C) 2004 Dominique Devriese Copyright (C) 2004 Pino Toscano This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program 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 GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA **/ #include "goniometry.h" #include #include #include Goniometry::Goniometry() { mvalue = 0.0; msys = Rad; } Goniometry::Goniometry( double value, Goniometry::System system ) { mvalue = value; msys = system; } Goniometry::~Goniometry() { } void Goniometry::setValue( double value ) { mvalue = value; } double Goniometry::value() const { return mvalue; } void Goniometry::setSystem( Goniometry::System system ) { msys = system; } void Goniometry::convertTo( Goniometry::System system ) { mvalue = convert( mvalue, msys, system ); msys = system; } Goniometry::System Goniometry::system() const { return msys; } double Goniometry::getValue( Goniometry::System system ) { return convert( mvalue, msys, system ); } -Goniometry& Goniometry::operator=( const Goniometry& g ) -{ - mvalue = g.value(); - msys = g.system(); - return *this; -} - double Goniometry::convert( const double angle, const Goniometry::System from, const Goniometry::System to ) { switch( from ) { case Deg: { if ( to == Rad ) return angle * M_PI / 180; if ( to == Grad ) return angle * 10 / 9; break; } case Rad: { if ( to == Deg ) return angle * 180 / M_PI; if ( to == Grad ) return angle * 200 / M_PI; break; } case Grad: { if ( to == Deg ) return angle * 9 / 10; if ( to == Rad ) return angle * M_PI / 200; break; } } return angle; } QStringList Goniometry::systemList() { QStringList sl; sl << i18nc( "Translators: Degrees", "Deg" ); sl << i18nc( "Translators: Radians", "Rad" ); sl << i18nc( "Translators: Gradians", "Grad" ); return sl; } Goniometry::System Goniometry::intToSystem( const int index ) { if( index == 0 ) return Deg; else if( index == 1 ) return Rad; else if( index == 2 ) return Grad; qDebug() << "No goniometric system with index " << index; return Rad; } diff --git a/misc/goniometry.h b/misc/goniometry.h index 722642b9..68e0cf30 100644 --- a/misc/goniometry.h +++ b/misc/goniometry.h @@ -1,72 +1,73 @@ // This file is part of Kig, a KDE program for Interactive Geometry... // Copyright (C) 2004 Dominique Devriese // Copyright (C) 2004 Pino Toscano // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // This program 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 // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA // 02110-1301, USA. #ifndef KIG_MISC_GONIOMETRY_H #define KIG_MISC_GONIOMETRY_H #include /** * Manage an angle and convert it from/to other goniometric systems. */ class Goniometry { public: enum System { Deg, Rad, Grad }; Goniometry(); Goniometry( double value, Goniometry::System system ); ~Goniometry(); void setValue( double value ); double value() const; /** * Set the system of the current angle to \p system, but it doesn't * convert the value to the new system. * * \see convertTo() */ void setSystem( Goniometry::System system ); /** * Set the system of the current angle to \p system and convert the * value to the new system using \ref convert(). * * \see setSystem() */ void convertTo( Goniometry::System system ); Goniometry::System system() const; double getValue( Goniometry::System system ); /** * The most useful method of this class: convert the specified * \p angle from the system \p from to the system \p to. */ static double convert( const double angle, const Goniometry::System from, const Goniometry::System to ); /** * Get a list of the supported goniometric systems. */ static QStringList systemList(); static Goniometry::System intToSystem( const int index ); - Goniometry& operator= ( const Goniometry& g ); + Goniometry( const Goniometry &g ) = default; + Goniometry& operator= ( const Goniometry& g ) = default; private: double mvalue; typedef Goniometry::System goniosys; goniosys msys; }; #endif