Sin Cos 参照テーブル生成ツール
三葉 /Mitsuha

Version 1.0 Release 2


概要

 三葉は C/C++ 上で Sin Cos を高速に処理するための参照テーブルのソースコードを作成するためのツールです。
 ですが、windows 上や、高速な浮動小数点演算ユニットを実装しているハードでは素直に Sin() Cos() を使ったほうが制度は高く、メモリ消費も少ないのでこのツールの利用価値はほとんど無いものと言っていいです。
 制度は低くてもいいから、高速に処理したい場合だけ使うと吉です。

 出力されるソースコードは ANCI C に準拠しています。(一応)
 ANCI C が使用できるコンパイラ上であればどのプラットホームでも使用できるハズです。
 ただし、コメントにダブルスラッシュ( // )を使用しているので、それが使用できないコンパイラではコメントを削除していただくか、書き換えてください。

 ちなみに、名前の由来は三角関数と某12人姉妹のチェキ娘から。
 ・・・というのは冗談で、三角関数の「三」と、ツールその1の結巴の「巴」から「みつは」で、あとは適当。


開発環境

Intel Pentium III 733MHz
512MB RAM
Microsoft Windows XP professional
Microsoft Visual Studio .NET


動作確認済環境

Microsoft Windows XP professional
Microsoft Windows 2000 professional SP2
MFC 7.0 ランタイム必須。

MFC 7.0 ランタイムが動作すれば、 98/Me/NT でもちゃんと動くと思います。
Win95 は VS.NET の仕様上、動作は基本的に不可だそうです。


各部の説明

Make

設定した内容に従ってテーブルを作成します。

Variable name

定義される変数の名前。

Type name

変数の型名。
実際に出力される制度やサイズには影響しません。
リストから選択した場合は、 Base type が自動的に設定される予定です。

Base type

出力する変数の基本的な種類とサイズ。

Decimal places

小数点以下の値のビット数。
整数型のみに適用。浮動小数点型では無効になります。

Angle / Segment

1周の角度。(分割数)
指定する値は4の倍数でなければなりません。

Figure

出力桁数。
小数点数出力の場合は、小数点は含みません。
バイナリ出力の場合は無効となります。
(現在未サポート状態です。)

static

static 記憶クラス適用。

const

const 記憶クラス適用。

Hexa decimal out put / Binary out put

バイナリデータ16進数出力。

<stdio.h>,<windows.h>,<agb.h>

指定ファイルのインクルード。

Include

指定ファイルのインクルード。
<> または "" で囲む
(現在未サポート状態です。)

Table size

テーブルのデータサイズ。バイト単位。
Base type x ( Angle + Angle / 4 )
出力されたファイルのサイズではなく、コンパイル後の予想テーブルサイズです。


出力コードの利用方法

 そのままコンパイルしてリンクするもよし、配列を切り貼りして移植するもよし、お好きなように扱ってください。
 配列のインデックスは Angle + Angle / 4 です。

 角度指定は、Angle で指定した値で1周、つまり2πになります。Angle に 256 を指定して作成したなら、そのテーブルは 256 でSin(2π) の値になります。Cos の場合は同じ角度で Sin の +90°になるので、例の場合では +64 してください。つまり、256+64 で Cos(2π) になります。

θ:角度(ラジアン)
π:円周率
Table:参照テーブル
Angle:テーブルの1周の角度

Sin(θ) = Table[ θ * ( Angle/2π ) ]
Cos(θ) = Table[ θ * ( Angle/2π ) + Angle/4 ]


注意事項と既知の問題点

 出力するソースコードの文法チェックは行っていないので、設定のしかたによってはお使いのコンパイラで正しくコンパイルできなかったり、コンパイルした結果、予想外の値が生成される場合があります。予めご了承ください。

 浮動小数点変数のフォーマットは ANCI に準拠しています。(多分)
 また、すべての型において、16進出力オプション( Hexa decimal out put )を使用しなかった場合、制度は一律 fprintf 標準になってしまいます。特に整数64ビット型では正しく出力されないので使用しないでください。(この問題に関しては将来的に対応予定)


免責とか

 三葉のを使用するには、以下の条件に同意し、順守していただく必要があります。
 以下の条件に同意、順守できない場合は、ただちに三葉の使用を停止し、お使いのPCから三葉を削除してください。

 三葉のすべての権利は製作者の神楽坂櫛愛が保有します。
 三葉を使用したことによるいかなる損害も神楽坂櫛愛は保障しません。
 また、バグなどの不具合が含まれていないことも保障しません。

 三葉はフリーソフトです。
 商用、個人用途にかかわらずライセンス料などはかかりません。ユーザ登録もいりません。
 三葉の配布、転載はオリジナルパッケージの状態( LIMITED MOTION にて公開されている状態 )を保っている限り自由です。
 それ以外の形態で配布したい場合は、神楽坂櫛愛の許諾を得る必要があります。

 感想、要望、バグレポートなどありましたら、TILL SOFT project ウェブサイトの掲示板か、メールにお寄せくださいまし。
 可能な限り対応したいと思います。


開発と公開の経緯

 ゲームボー○アドバンス(AGB)では Sin() Cos() が使えなかったんです〜。
 なもんで、AGB で Sin() Cos() を使用するために作ってしまいました。

 仕事上で使用するためではありますが、個人的に作ったので公開してしまおうと、そゆわけです。


2002.7.19
TILL SOFT Project / 神楽坂櫛愛

TILL SOFT project wab site "LIMITED MOTION" : http://www.works-sys.instat.ne.jp/~kusie/
e-mail : kushie@mail.goo.ne.jp