English

★三角関数



一覧表リファレンス

関数

slSin


正弦値の演算

書 式

    #include "sgl.h"

    ANGLE ang;
    FIXED slSin( ang )

引 数

    ANGLE ang - 角度。

返 数

    FIXED - 与えた角度に対する正弦値。

機 能

    指定された角度に対する、サインを返します。値としては 
    0xffff0000 〜 0x00010000 の値になります。

注 意


    角度データは 下位の4ビットを捨て、0x0000 〜 0xfff0 に 変換されるため、
    精度はやや落ちます(以下角度を使用するものは同様の制限を受けます)。

参 照

slCos
slTan
slAtan
slSquart
slSquartFX
slMulFX
slDivFX



一覧表リファレンス

関数

slCos


余弦値の演算

書 式

    #include "sgl.h"

    ANGLE ang;    
    FIXED slCos( ang )

引 数

    ANGLE ang - 角度。

返 数

    FIXED - 与えた角度に対する余弦値。

機 能

    指定された角度に対するコサインを返します。値としては 
    0xffff0000 〜 0x00010000 の値です。

参 照

slSin
slTan
slAtan
slSquart
slSquartFX
slMulFX
slDivFX



一覧表リファレンス

関数

slTan


正接値の演算

書 式

    #include "sgl.h"

    ANGLE ang;
    FIXED slTan( ang )

引 数

    ANGLE ang - 角度。

返 数

    FIXED - 与えた角度に対する正接値。

機 能

    指定された角度に対する、タンジェントを返します。

注 意


    90度付近ではタンジェントの値が大き過ぎるため、精度は期待できません。

参 照

slSin
slCos
slAtan
slSquart
slSquartFX
slMulFX
slDivFX



一覧表リファレンス

関数

slAtan


逆正接値の演算

書 式

    #include "sgl.h"

    FIXED x_pos, y_pos;
    ANGLE slAtan( x_pos, y_pos )

引 数

    FIXED x_pos - X座標値
    FIXED y_pos - Y座標値

返 数

    FIXED - 与えたベクトルに対する逆正接値。

機 能

    指定された方向の角度を返します。

参 照

slSin
slCos
slTan
slSquart
slSquartFX
slMulFX
slDivFX


★平方根



一覧表リファレンス

関数

slSquart


平方根の演算

書 式

    #include "sgl.h"

    Uint32 val;
    Uint16 slSquart( val )

引 数

    Uint32 val - 値。

返 数

    Uint16 与えた値の平方根値の小数以下を切り捨てた値。

機 能

    符号無し整数の平方根を算出します。

参 照

slSin
slCos
slTan
slAtan
slSquartFX
slMulFX
slDivFX



一覧表リファレンス

関数

slSquartFX


平方根の演算

書 式

    #include "sgl.h"

    FIXED val;
    FIXED slSquartFX( val )

引 数

    FIXED val - 値。

返 数

    FIXED 与えた値の平方根値。

機 能

    符号無し固定小数点数の平方根を算出します。

注 意


    整数として演算しているため、結果の精度は8ビット整数、8ビット小数と
    なります。

参 照

slSin
slCos
slTan
slAtan
slSquart
slMulFX
slDivFX


★乗除算



一覧表リファレンス

関数

slMulFX


固定小数同士のかけ算

書 式

    #include "sgl.h"

    FIXED val_a, val_b;
    FIXED slMulFX( val_a, val_b )

引 数

    FIXED val_a, val_b - かけ算に使用する固定小数値。

返 数

    FIXED - 引数に与えた2数を掛けた結果。

機 能

    固定小数同士の掛け算をし、結果を返します。

参 照

slSin
slCos
slTan
slAtan
slSquart
slSquartFX
slDivFX



一覧表リファレンス

関数

slDivFX


固定小数の割算

書 式

    #include "sgl.h"

    FIXED val_a, val_b;
    FIXED slDivFX( val_a, val_b )

引 数

    FIXED val_a, val_b - 割算に使用する固定小数値。

返 数

    FIXED - 引数に与えた2数を割った結果。

機 能

    固定小数同士の割り算をし、結果(b/a)を返します。

参 照

slSin
slCos
slTan
slAtan
slSquart
slSquartFX
slMulFX


★ベクトル計算



一覧表リファレンス

関数

slInnerProduct


内積の演算

書 式

    #include "sgl.h"

    VECTOR vct_a, vct_b;
    FIXED slInnerProduct( vct_a, vct_b )

引 数

    VECTOR vct_a, vct_b - 内積演算に使用するベクトル。

返 数

    FIXED - 内積の演算結果。

機 能

    二つのベクトルの内積を取り、結果を返します。

用 例

    if( slInnerProduct( normal, eye ) > toFIXED( 0.0 ) ) {
      slPutPolygonX( ... );
    }

参 照

slNormalVector



一覧表リファレンス

関数

slNormalVector


3点を含む平面の法線ベクトルを求める

書 式

    #include "sgl.h"

    VECTOR vct_a, vct_b, vct_c;
    VECTOR ans;

    void slNormalVector( vct_a, vct_b, vct_c, ans )

引 数

    VECTOR vct_a, vct_b, vct_c - 平面を構成する3点。
VECTOR ans - 演算結果を入れるためのVECTOR構造体。

返 数

    void - 何も返しません。(但し引数に与えるansに計算結果の法線ベクトルが
                            返ります。)

機 能

    指定された3点からなる2本のベクトル(b->a , b->c)に直交するベクトル
    (単位法線ベクトル)を算出します。
法線の向きを逆にしたい場合には指定する点を b , a , c の順にしてください。

参 照

slInnerProduct


★乱数



一覧表リファレンス

関数

slRandom


乱数を求める

書 式

    #include "sgl.h"

    FIXED slRandom( void )

引 数

    void - 何も与えません。

返 数

    FIXED - 乱数値。

機 能

    0から1.0の間の乱数を発生する。

用 例

    FIXED x, y;

    x = slMulFX( slRandom(), toFIXED( 320 ) );
    y = slMulFX( slRandom(), toFIXED( 240 ) );

注 意


    この関数は、slInitSystemからのフレーム数に依存します。
つまり、slInitSystemを起動した直後のslRandom()の値は常に同じ値に なります。もし、slInitSystem起動後、すぐにこの関数を呼ぶ場合、 乱数としての意味を持ちませんので注意してください。

参 照

slInitSystem
RandWork


★モーション/コリジョン関連



一覧表リファレンス

関数

slBezier


4点を結ぶベジェ曲線での値を求める

書 式

    #include "sgl.h"

    VECTOR pnt_a, pnt_b, pnt_c, pnt_d;
    VECTOR time;
    VECTOR ans; 

    void slBezier( pnt_a, pnt_b, pnt_c, pnt_d, time, ans )

引 数

    VECTOR pnt_a, pnt_b, pnt_c, pnt_d - ベジェ曲線を構成する4点。
VECTOR time - pnt_aを0.0、pnt_dを1.0とした時の、 知りたい関数値のある点。
VECTOR ans; - 演算結果を入れるためのVECTOR構造体。

返 数

    void - 何も返しません。(但し、引数に与えるansに計算結果のベクトルが
                            返ります。)

機 能

    指定された4点間を結ぶBezier曲線のtimeでの位置を返す。
timeは 0から1.0の範囲で指定する。

参 照



一覧表リファレンス

関数

slBallCollision


球同士のコリジョンを判定

書 式

    #include "sgl.h"

    FIXED obj_a[XYZ];
    FIXED size_a;
    FIXED obj_b[XYZ];
    FIXED size_b;

    FIXED slBallCollision( obj_a, size_a, obj_b, size_b )

引 数

    FIXED obj_a[XYZ]  - オブジェクトAの中心座標。
FIXED size_a - オブジェクトAの半径。
FIXED obj_b[XYZ] - オブジェクトBの中心座標。
FIXED size_b - オブジェクトBの半径。

返 数

    FIXED - 当たっていれば、二者の距離、当たっていなければ負数を返します。

機 能

    位置が object[XYZ] 、半径が size1 の球と object2[XYZ],size2 の球との
    当たり判定を行い、当たっていればその距離を返します。
当たっていない場合には マイナスの値を返します。

用 例

    FIXED Orig[ XYZ ] = { toFIXED( 0.0 ), toFIXED( 0.0 ), toFIXED( 0.0 ) }
    slPushMatrix();
    {
           :
      slPushMatrix();
      {
             :
        slConvert3Dto2DFX( Orig, ans );
        if ( slBallCollision( ans, radius1, obj, radius2 ) < toFIXED( 0.0 ) ) {
                 Not Collide
             :
        } else {
                 Collide !!
        }

参 照


★スレーブ



一覧表リファレンス

関数

slSlaveFunc


スレーブCPUに実行させる関数の登録

書 式

    #include "sgl.h"

    void ( *func )() func;
    void *para;

    void slSlaveFunc( func, para );

引 数

    void ( *func )() - スレーブで実行したい関数。
void *para - スレーブで実行する関数に与える引数。

返 数

    void - 何も返しません。

機 能

    スレーブCPUに指定された関数を実行させます。
ポリゴン表示等のファンクションがスレーブへのコマンドバッファ上に残っている 場合、それらが終了しないとこのファンクションは実行されないため、実行開始が 遅れることがあります。

用 例

    void foo() {
        :
    }
   
    slSlaveFunc( foo, NULL );

参 照


戻る
Copyright SEGA ENTERPRISES, LTD., 1997