前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFXTrigonometric
三角関数テーブルを使用して、高速な三角関数の計算を実現するクラスです。
#include <SFXTrigonometric.h.hpp>
class SFXTrigonometric;
SFMTYPEDEFCLASS(SFXTrigonometric)

解説

SFXTrigonometric クラスは、三角関数テーブルを使用して、高速に三角関数の計算をするクラスです。

最初に、SFXTrigonometric::Initialize 関数を使用して、ラジアン区間 [0, FLOAT64_PI / 2] (FLOAT64_PI: 円周率) を等分割した値とその余弦(コサイン)で構成される三角関数テーブルを作成します。 そして、SFXTrigonometric::Cos 関数、SFXTrigonometric::Sin 関数、SFXTrigonometric::Sin 関数を使用して、 指定された角度(単位:ラジアン)の余弦(コサイン)、正弦(サイン)、または正接(タンジェント)を高速に計算します。 これらの関数では、内部的に三角関数テーブルを利用しています。

[Note] 計算頻度とパフォーマンス

一般に三角関数の計算は時間がかかります。 頻繁に三角関数の計算が必要である場合、SFXTrigonometric クラスを使うとパフォーマンスが改善される可能性があります。

[Note] 計算精度とメモリ使用量

ラジアン区間 [0, FLOAT64_PI / 2] ( FLOAT64_PI: 円周率 )の分割数 N を増やすと計算精度は向上しますが、 テーブルに保持する値が増加するので、ヒープ メモリを多く消費します。 (ヒープ メモリの使用量は、N * 8 バイトとなります。)

使用例

三角関数テーブルを分割数 180 で作成して、三角関数の値を計算します。

Float64 x, y;
Float64 e = 1.0e-10;             // 漸近精度
Float64 pi = 3.14159265358979;   // 円周率

SFXTrigonometric tri;

tri.Initialize(180, e);          // 三角関数テーブルを初期化する

x = tri.Cos(pi / 3);
y = tri.Sin(pi / 3);

メンバ

コンストラクタ/デストラクタ
SFXTrigonometric( Void )
SFXTrigonometric クラスのコンストラクタです。
~SFXTrigonometric( Void )
SFXTrigonometric クラスのデストラクタです。
パブリック関数
Float64 Cos( Float64 param )
指定された角度の余弦(コサイン)を計算します。
static
Float64
DegreeToGradian( Float64 param )
角度の単位を度からグラジアンに変換します。
static
Float64
DegreeToRadian( Float64 param )
角度の単位を度からラジアンに変換します。
static
Float64
GradianToDegree( Float64 param )
角度の単位をグラジアンから度に変換します。
static
Float64
GradianToRadian( Float64 param )
角度の単位をグラジアンからラジアンに変換します。
SFCError Initialize( SInt16 division = 90 )
三角関数テーブルを初期化します。
static
Float64
RadianToDegree( Float64 param )
角度の単位をラジアンから度に変換します。
static
Float64
RadianToGradian( Float64 param )
角度の単位をラジアンからグラジアンに変換します。
Float64 Sin( Float64 param )
指定された角度の正弦(サイン)を計算します。
Float64 Tan( Float64 param )
指定された角度の正接(タンジェント)を計算します。
Void Terminate( Void )
三角関数テーブルが使用していたヒープメモリを解放します。

SFXTrigonometric::SFXTrigonometric
SFXTrigonometric クラスのコンストラクタです。
[ public, explicit ]
SFXTrigonometric(Void);

解説

初期化を行います。 コンストラクタでは三角関数テーブルは生成されません。

三角関数テーブルを作成するには、 SFXTrigonometric::Initialize 関数を呼び出す必要があります。

参照

SFXTrigonometric::Initialize


SFXTrigonometric::~SFXTrigonometric
SFXTrigonometric クラスのデストラクタです。
[ public ]
~SFXTrigonometric(Void);

解説

このデストラクタは、 SFXTrigonometric::Terminate 関数を呼び出して三角関数テーブルが使用していたヒープメモリを解放します。

参照

SFXTrigonometric::Terminate


SFXTrigonometric::Cos
指定された角度の余弦(コサイン)を計算します。
[ public, const ]
Float64 Cos(
    Float64 param   // 角度(単位:ラジアン)
);

戻り値

指定された角度の余弦(コサイン)

解説

この関数は、 三角関数テーブルを使用して、 指定された角度の余弦(コサイン)を計算します。

[Note] 前提条件

事前に SFXTrigonometric::Initialize 関数を呼び出して、 三角関数テーブルを初期化する必要があります。

使用例

Float64 c;
SFXTrigonometric tri;

tri.Initialize();         // 三角関数テーブルを初期化する
c = tri.Cos(FLOAT64_PI);  // c = -1; (FLOAT64_PI は円周率)

参照

SFXTrigonometric::Initialize | SFXTrigonometric::Sin | SFXTrigonometric::Tan


SFXTrigonometric::DegreeToGradian
角度の単位を度からグラジアンに変換します。
[ public, static ]
Float64 DegreeToGradian(
    Float64 param   // 角度(単位: 度)
);

戻り値

変換後の角度(単位: グラジアン)

解説

この関数は、指定された角度の単位を度からグラジアンに変換して返します。

参照

SFXTrigonometric::RadianToGradian | SFXTrigonometric::RadianToDegree | SFXTrigonometric::GradianToRadian | SFXTrigonometric::GradianToDegree | SFXTrigonometric::DegreeToRadian


SFXTrigonometric::DegreeToRadian
角度の単位を度からラジアンに変換します。
[ public, static ]
Float64 DegreeToRadian(
    Float64 param   // 角度(単位: 度)
);

戻り値

変換後の角度(単位: ラジアン)

解説

この関数は、指定された角度の単位を度からラジアンに変換して返します。

使用例

Float64 n = SFXTrigonometric::DegreeToRadian(180);    // n = 3.1415... 

参照

SFXTrigonometric::RadianToGradian | SFXTrigonometric::RadianToDegree | SFXTrigonometric::GradianToRadian | SFXTrigonometric::GradianToDegree | SFXTrigonometric::DegreeToGradian


SFXTrigonometric::GradianToDegree
角度の単位をグラジアンから度に変換します。
[ public, static ]
Float64 GradianToDegree(
    Float64 param   // 角度(単位: グラジアン)
);

戻り値

変換後の角度(単位: 度)

解説

この関数は、指定された角度の単位をグラジアンから度に変換して返します。

参照

SFXTrigonometric::RadianToGradian | SFXTrigonometric::RadianToDegree | SFXTrigonometric::GradianToRadian | SFXTrigonometric::DegreeToRadian | SFXTrigonometric::DegreeToGradian


SFXTrigonometric::GradianToRadian
角度の単位をグラジアンからラジアンに変換します。
[ public, static ]
Float64 GradianToRadian(
    Float64 param   // 角度(単位: グラジアン)
);

戻り値

変換後の角度(単位: ラジアン)

解説

この関数は、指定された角度の単位をグラジアンからラジアンに変換して返します。

参照

SFXTrigonometric::RadianToGradian | SFXTrigonometric::RadianToDegree | SFXTrigonometric::GradianToDegree | SFXTrigonometric::DegreeToRadian | SFXTrigonometric::DegreeToGradian


SFXTrigonometric::Initialize
三角関数テーブルを初期化します。
[ public ]
SFCError Initialize(
    SInt16 division = 90   // ラジアン区間 [0, FLOAT64_PI / 2] の分割数(デフォルト値: 90)
);

引数

division

ラジアン区間 [0, FLOAT64_PI / 2] を何分割して三角関数を計算するかを指定します。 分割数を多くすると精度は向上しますが、ヒープ メモリの消費量が増えます。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • division 引数が 0 以下であるとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMROY

解説

この関数は、高速に三角関数を計算するための三角関数テーブルを作成します。

division 引数には、ラジアン区間 [0, FLOAT64_PI / 2] を何分割して三角関数を計算するかを指定します。 デフォルトの分割数は 90 です。

[Caution] 注意事項

この関数は、以前の作成した三角関数テーブルの内容を破棄します。 従って、この関数内部でエラーが発生した場合、直前のテーブルの内容を復元することはできません。

使用例

この関数は、 SFXTrigonometric::Cos 関数、 SFXTrigonometric::Sin 関数、 SFXTrigonometric::Tan 関数を呼び出す前に実行する必要があります。 通常、コンストラクタ実行直後に呼び出します。

SFXTrigonometric tri;
tri.Initialize(180);

参照

SFXTrigonometric::Terminate


SFXTrigonometric::RadianToDegree
角度の単位をラジアンから度に変換します。
[ public, static ]
Float64 RadianToDegree(
    Float64 param   // 角度(単位: ラジアン)
);

戻り値

変換後の角度(単位: 度)

解説

この関数は、指定された角度の単位をラジアンから度に変換して返します。

使用例

Float64 n = SFXTrigonometric::RadianToDegree(6.2831); // n = 359.99... 

参照

SFXTrigonometric::RadianToGradian | SFXTrigonometric::GradianToRadian | SFXTrigonometric::GradianToDegree | SFXTrigonometric::DegreeToRadian | SFXTrigonometric::DegreeToGradian


SFXTrigonometric::RadianToGradian
角度の単位をラジアンからグラジアンに変換します。
[ public, static ]
Float64 RadianToGradian(
    Float64 param   // 角度(単位: ラジアン)
);

戻り値

変換後の角度(単位: グラジアン)

解説

この関数は、指定された角度の単位をラジアンからグラジアンに変換して返します。

参照

SFXTrigonometric::RadianToDegree | SFXTrigonometric::GradianToRadian | SFXTrigonometric::GradianToDegree | SFXTrigonometric::DegreeToRadian | SFXTrigonometric::DegreeToGradian


SFXTrigonometric::Sin
指定された角度の正弦(サイン)を計算します。
[ public, const ]
Float64 Sin(
    Float64 param   // 角度(単位:ラジアン)
);

戻り値

指定された角度の正弦(サイン)

解説

この関数は、 三角関数テーブルを使用して、 指定された角度の正弦(サイン)を計算します。

[Note] 前提条件

事前に SFXTrigonometric::Initialize 関数を呼び出して、 三角関数テーブルを初期化する必要があります。

使用例

Float64 c;
SFXTrigonometric tri;

tri.Initialize();            // 三角関数テーブルを初期化する
c = tri.Sin(FLOAT64_PI / 2); // c = 1; (FLOAT64_PI は円周率)

参照

SFXTrigonometric::Initialize | SFXTrigonometric::Cos | SFXTrigonometric::Tan


SFXTrigonometric::Tan
指定された角度の正接(タンジェント)を計算します。
[ public, const ]
Float64 Tan(
    Float64 param   // 角度(単位:ラジアン)
);

戻り値

指定された角度の正接(タンジェント)

解説

この関数は、三角関数テーブルを使用して、 指定された角度の正接(タンジェント)を計算します。

[Note] 前提条件

事前に SFXTrigonometric::Initialize 関数を呼び出して、 三角関数テーブルを初期化する必要があります。

使用例

Float64 c;
SFXTrigonometric tri;

tri.Initialize();            // 三角関数テーブルを初期化する
c = tri.Tan(FLOAT64_PI / 4); // c = 1; (FLOAT64_PI は円周率)

参照

SFXTrigonometric::Initialize | SFXTrigonometric::Cos | SFXTrigonometric::Sin


SFXTrigonometric::Terminate
三角関数テーブルが使用していたヒープメモリを解放します。
[ public ]
Void Terminate(Void);

解説

この関数は、三角関数テーブルが使用していたヒープメモリを解放します。

[Note] 注意

この関数は、SFXTrigonometric::~SFXTrigonometric デストラクタで自動的に呼び出されます。

参照

SFXTrigonometric::~SFXTrigonometric