不韋 呂
/
CQ_FixedPointSinCos
CQ出版社インターフェース誌の2017年10月号で解説している二相発振器のプログラム
Diff: QuadOscPoly.hpp
- Revision:
- 0:97d46bd73383
diff -r 000000000000 -r 97d46bd73383 QuadOscPoly.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/QuadOscPoly.hpp Wed Aug 02 11:50:17 2017 +0000 @@ -0,0 +1,29 @@ +//-------------------------------------------------------------- +// ミニマックス近似式で求める sin 関数を利用する二相発振器のクラス +// +// 2017/02/26, Copyright (c) 2017 MIKAMI, Naoki +//-------------------------------------------------------------- + +#include "SinCosFixed.hpp" + +#ifndef QUAD_PHASE_OSC_POLY_FIXED_HPP +#define QUAD_PHASE_OSC_POLY_FIXED_HPP + +class QuadOscPoly +{ +public: + // Constructor + QuadOscPoly(float f0, float ts) + : C0_(ToFixed14(4.0f*f0*ts*1.0E-6f)), phi_(0) {} + + void Generate(int16_t &sinX, int16_t &cosX) + { + sinX = Sin16(phi_); + cosX = Cos16(phi_); + phi_ = phi_ + C0_; + } +private: + const int16_t C0_; + int16_t phi_; +}; +#endif // QUAD_PHASE_OSC_POLY_FIXED_HPP