AOT計算で呼び出し自体を早くする三角関数

Dependents:   NuMidi401 NuFM401

AOTTrigon.cpp

Committer:
kb10uy
Date:
2014-12-22
Revision:
0:2888f1d9a23e
Child:
2:d8c9637a5f09

File content as of revision 0:2888f1d9a23e:

#include "AOTTrigon.h"

AOTTrigon::AOTTrigon(int divide) {
    division = divide;
    rate = division / (3.14159265358979323846264 * 2.0);
    t_sin = new double[division];
    for(int i = 0; i < division; i++) 
        t_sin[i] = sin((double)i / division * (3.14159265358979323846264 * 2.0));
}

inline double AOTTrigon::sine(double x) {
    return t_sin[(int)(fmod(x,3.14159265358979323846264*2.0)*rate)];
}

inline double AOTTrigon::cosine(double x) {
    return sine(x+3.14159265358979323846264/2.0);
}

inline double AOTTrigon::tangent(double x) {
    return sine(x)/cosine(x);
}