njMotionRotateZXY
ノード・モーション関数（ＺＸＹ回転）

### 書　式

      #include <Ninja.h>
      void        njMotionRotateZXY( NJS_MATRIX *m, NJS_OBJECT *obj, Int spline_flag );
      NJS_MATRIX  *m
      NJS_OBJECT  *obj
      Int         spline_flag

### 引　数

m
  マトリクス構造体へのポインタ
obj
  オブジェクト構造体へのポインタ
spline_flag
  スプライン属性フラグ（０：リニア、１：スプライン）

### 返　値

  なし

### エラー

  なし

### 機　能

  ノード毎の回転モーション（ＺＸＹ型）を与えられたマトリクスに反映させます。
  この関数は、フレーム・モーション等の情報を得るために、使用前にnjSetCurrentMotion関数を呼ぶこと、また必要であれば（階層構造中であれば）使用後にノード情報を更新するためにnjSetNextMotionNodeを呼ぶ必要があります（用例参照）。

### 用　例

      #include <NINJA.H>

      #define  OBJECT    object_sample
      #define  MOTION    motion_sample
      #define LINEAR    0
      #define SPLINE    1

      extern NJS_MOTION  MOTION[];
      extern NJS_OBJECT  OBJECT[];

      Float  ff = 0.f;
      Int  spline_flg = SPLINE;

      ...........

      Sint32 njUserMain(void)
      {
        ...........

        njSetCurrentMotion(MOTION, ff );
        PushPopMotion( OBJECT );

        ff+=0.2f;
        if( ff >= (MOTION->nbFrame-1) ) ff=0.f;
        ...........
      }

      PushPopMotion(NJS_OBJECT *obj)
      {
        njPushMatrix( NULL );

        /* モーション関数の実行 */
        njMotionTranslate( NULL, obj, spline_flg );
        njMotionRotateZXY( NULL, obj, spline_flg );
        njMotionScale( NULL, obj, spline_flg );
        njSetNextMotionNode();

        /* モデルの描画 */
        if( obj->model != NULL )
          njDrawModel( obj->model );

        if( obj->child != NULL )
          PushPopMotion( (NJS_OBJECT*)obj->child );

        njPopMatrix( 1 );

        if( obj->sibling != NULL )
          PushPopMotion( (NJS_OBJECT*)obj->sibling );
      }

      ...........

### 備　考

  この関数は親子階層をたどる（プッシュ・ポップ）関数中で使用するための関数です。
  これらの（ノード毎のモーション）関数は、３Ｄの制御部を除けばnjAction、njDrawMotion類と同様です。

### 関　連

  njSetCurrentMotion
  njMotionTransform
  njMotionTransformZXY
  njMotionTranslate
  njMotionRotateXYZ
  njMotionScale
  njGetMotionTranslate
  njGetMotionRotate
  njGetMotionScale
  njSetNextMotionNode

njMotionRotateZXY |