From 6c6960015ef32f3e58c9a1a14fe61413cbb19ce8 Mon Sep 17 00:00:00 2001 From: Laszlo Papp Date: Sat, 26 Jan 2013 13:25:45 +0000 Subject: Add qDegreesToRadians and qRadiansToDegrees math functions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I6e9fd76f2d2860f46531a72349b46193b8eeaaa7 Reviewed-by: Samuel Rødal --- .../doc/snippets/code/src_corelib_kernel_qmath.cpp | 63 ++++++++++++++++ src/corelib/kernel/qmath.cpp | 87 ++++++++++++++++++++++ src/corelib/kernel/qmath.h | 20 +++++ 3 files changed, 170 insertions(+) create mode 100644 src/corelib/doc/snippets/code/src_corelib_kernel_qmath.cpp (limited to 'src/corelib') diff --git a/src/corelib/doc/snippets/code/src_corelib_kernel_qmath.cpp b/src/corelib/doc/snippets/code/src_corelib_kernel_qmath.cpp new file mode 100644 index 0000000000..71a2a09a7d --- /dev/null +++ b/src/corelib/doc/snippets/code/src_corelib_kernel_qmath.cpp @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Laszlo Papp +** Contact: http://www.qt-project.org/legal +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//! [0] +float degrees = 180.0f +float radians = qDegreesToRadians(degrees) +//! [0] + + +//! [1] +double degrees = 180.0 +double radians = qDegreesToRadians(degrees) +//! [1] + + +//! [2] +float radians = float(M_PI) +float degrees = qRadiansToDegrees(radians) +//! [2] + + +//! [3] +double radians = M_PI +double degrees = qRadiansToDegrees(radians) +//! [3] + diff --git a/src/corelib/kernel/qmath.cpp b/src/corelib/kernel/qmath.cpp index 1d6fcc2cd6..8f900e2101 100644 --- a/src/corelib/kernel/qmath.cpp +++ b/src/corelib/kernel/qmath.cpp @@ -1,6 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2013 Laszlo Papp ** Contact: http://www.qt-project.org/legal ** ** This file is part of the QtCore module of the Qt Toolkit. @@ -302,4 +303,90 @@ const qreal qt_sine_table[QT_SINE_TABLE_SIZE] = { qreal(-0.024541228522912448) }; +/*! + \headerfile + \title Generic Math Declarations + \ingroup funclists + + \brief The header file includes generic math declarations. + + The global declarations include \l{functions}. + + These functions are partly convenience definitions for basic + operations, for instance not available in the Standard Template Library et + al. +*/ + +/*! + \fn float qDegreesToRadians(float degrees) + \relates + \since 5.1 + + \brief The function converts the \a degrees in float to radians. + + The purpose of the function is to aid the conversion as such a convenient + function is not part of the Standard Template Library, i.e. in or + elsewhere. + + Example: + + \snippet code/src_corelib_kernel_qmath.cpp 0 + + \sa qRadiansToDegrees() +*/ + +/*! + \fn double qDegreesToRadians(double degrees) + \relates + \since 5.1 + + \brief The function converts the \a degrees in double to radians. + + The purpose of the function is to aid the conversion as such a convenient + function is not part of the Standard Template Library, i.e. in or + elsewhere. + + Example: + + \snippet code/src_corelib_kernel_qmath.cpp 1 + + \sa qRadiansToDegrees() +*/ + +/*! + \fn float qRadiansToDegrees(float radians) + \relates + \since 5.1 + + \brief The function converts the \a radians in float to degrees. + + The purpose of the function is to aid the conversion as such a convenient + function is not part of the Standard Template Library, i.e. in or + elsewhere. + + Example: + + \snippet code/src_corelib_kernel_qmath.cpp 2 + + \sa qDegreesToRadians() +*/ + +/*! + \fn double qRadiansToDegrees(double radians) + \relates + \since 5.1 + + \brief The function converts the \a radians in double to degrees. + + The purpose of the function is to aid the conversion as such a convenient + function is not part of the Standard Template Library, i.e. in or + elsewhere. + + Example: + + \snippet code/src_corelib_kernel_qmath.cpp 3 + + \sa qDegreesToRadians() +*/ + QT_END_NAMESPACE diff --git a/src/corelib/kernel/qmath.h b/src/corelib/kernel/qmath.h index 75ec55f845..21e23b9eb0 100644 --- a/src/corelib/kernel/qmath.h +++ b/src/corelib/kernel/qmath.h @@ -266,6 +266,26 @@ inline qreal qFastCos(qreal x) return qt_sine_table[si] - (qt_sine_table[ci] + 0.5 * qt_sine_table[si] * d) * d; } +Q_DECL_CONSTEXPR inline float qDegreesToRadians(float degrees) +{ + return degrees * float(M_PI/180); +} + +Q_DECL_CONSTEXPR inline double qDegreesToRadians(double degrees) +{ + return degrees * (M_PI / 180); +} + +Q_DECL_CONSTEXPR inline float qRadiansToDegrees(float radians) +{ + return radians * float(180/M_PI); +} + +Q_DECL_CONSTEXPR inline double qRadiansToDegrees(double radians) +{ + return radians * (180 / M_PI); +} + QT_END_NAMESPACE #endif // QMATH_H -- cgit v1.2.3