⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qmath_p.h

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 H
字号:
/******************************************************************************** Copyright (C) 1992-2006 Trolltech ASA. All rights reserved.**** This file is part of the QtGui module of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#ifndef QMATH_P_H#define QMATH_P_H////  W A R N I N G//  -------------//// This file is not part of the Qt API.  It exists purely as an// implementation detail.  This header file may change from version to// version without notice, or even be removed.//// We mean it.//#include <math.h>/*****************************************************************************  Trigonometric function for QPainter  We have implemented simple sine and cosine function that are called from  QPainter::drawPie() and QPainter::drawChord() when drawing the outline of  pies and chords.  These functions are slower and less accurate than math.h sin() and cos(),  but with still around 1/70000th sec. execution time (on a 486DX2-66) and  8 digits accuracy, it should not be the bottleneck in drawing these shapes.  The advantage is that you don't have to link in the math library. *****************************************************************************/static const double Q_PI   = 3.14159265358979323846;   // pistatic const double Q_2PI  = 6.28318530717958647693;   // 2*pistatic const double Q_PI2  = 1.57079632679489661923;   // pi/2inline int qFloor(double d){ return d >= 0.0 ? int(d) : int(d - 0.9999); }#ifdef Q_WS_X11#if defined(Q_CC_GNU) && defined(__i386__)inline double qCos_x86(double a){    double r;    __asm__ (        "fcos"        : "=t" (r) : "0" (a));    return r;}#define qCos qCos_x86inline double qSin_x86(double a){    double r;    __asm__ (        "fsin"        : "=t" (r) : "0" (a));    return r;}#define qSin qSin_x86#else //GNU_CC && I386inline double qSinCos(double a, bool calcCos=false){    if (calcCos)                              // calculate cosine        a -= Q_PI2;    if (a >= Q_2PI || a <= -Q_2PI) {          // fix range: -2*pi < a < 2*pi        int m = (int)(a/Q_2PI);        a -= Q_2PI*m;    }    if (a < 0.0)                              // 0 <= a < 2*pi        a += Q_2PI;    int sign = a > Q_PI ? -1 : 1;    if (a >= Q_PI)        a = Q_2PI - a;    if (a >= Q_PI2)        a = Q_PI - a;    if (calcCos)        sign = -sign;    double a2  = a*a;                           // here: 0 <= a < pi/4    double a3  = a2*a;                          // make taylor sin sum    double a5  = a3*a2;    double a7  = a5*a2;    double a9  = a7*a2;    double a11 = a9*a2;    return (a-a3/6+a5/120-a7/5040+a9/362880-a11/39916800)*sign;}#define qSin(a) qSinCos(a, false)#define qCos(a) qSinCos(a, true)#endif //GNU_CC && I386#endif //Q_WS_X11#ifndef qSin# define qSin sin#endif#ifndef qCos# define qCos cos#endif#endif // QMATH_P_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -