ホームに戻る
 サンプル1:サイコロを回す

図09_00:マウスボタン押しで回り、離すと止まる2つのサイコロ

/*
*   JAVA3D でサイコロを回すアプレット
*/

import java.applet.Applet;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import java.awt.BorderLayout;
import java.awt.GraphicsConfiguration;
import java.util.Random;
import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.image.TextureLoader;

/* <applet code="sai_applet" width=300 height=300></applet> */

public class sai_applet extends Applet implements Runnable{
  private SimpleUniverse universe = null;
  private Canvas3D canvas3d = null;
  private boolean mLoop = false;
  private Thread mThread = null;
  private boolean mInited = false;
  private long mCycle = 2000;
  private long mTick = 0;
  private long mTimeOld;
  private float mFInterval = 1.0f / 2000.0f;

  private Sai[] sai;

  public class Sai_bmp{
    private int bmp_01[] = {
      0xFFFF0000,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFF0000,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFF0000,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFF0000,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,0xFFFF0000,
      0xFFFF0000,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFF0000,0xFFFF0000,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFF0000,0xFFFF0000,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFF0000,0xFFFF0000,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,0xFFFF0000,
      0xFFFF0000,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000
    };
    private int bmp_02[] = {
      0xFFFF0000,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFF0000,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFF0000,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFF0000,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFF000000,0xFF000000,
      0xFF000000,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFF000000,0xFF000000,
      0xFF000000,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000
    };
    private int bmp_03[] = {
      0xFFFF0000,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFF0000,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFF0000,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFF0000,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFF000000,0xFF000000,
      0xFF000000,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFF000000,0xFF000000,
      0xFF000000,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFF000000,0xFF000000,
      0xFF000000,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000
    };
    private int bmp_04[] = {
      0xFFFF0000,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFF0000,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFF0000,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFF0000,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFF000000,0xFF000000,
      0xFF000000,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFF000000,0xFF000000,
      0xFF000000,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFF000000,0xFF000000,
      0xFF000000,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFF000000,0xFF000000,
      0xFF000000,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000
    };
    private int bmp_05[] = {
      0xFFFF0000,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFF0000,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFF0000,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFF0000,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFF000000,0xFF000000,
      0xFF000000,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFF000000,0xFF000000,
      0xFF000000,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFF000000,0xFF000000,
      0xFF000000,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFF000000,0xFF000000,
      0xFF000000,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFF000000,0xFF000000,
      0xFF000000,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000
    };
    private int bmp_06[] = {
      0xFFFF0000,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFF0000,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFF0000,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFF0000,0xFFFF0000,0xFFFF0000,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFF000000,0xFF000000,
      0xFF000000,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFF000000,0xFF000000,
      0xFF000000,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFF000000,0xFF000000,
      0xFF000000,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFF000000,0xFF000000,
      0xFF000000,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFF000000,0xFF000000,
      0xFF000000,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFF000000,0xFF000000,
      0xFF000000,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF000000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
      0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFF0000
    };

    public int[] getBmp(int num){
      switch (num){
        case 0:
          return bmp_01;
        case 1:
          return bmp_02;
        case 2:
          return bmp_03;
        case 3:
          return bmp_04;
        case 4:
          return bmp_05;
        case 5:
          return bmp_06;
      }

      return bmp_01;
    }

    public int getSize(){
      return (16 * 16);
    }
  }

  public class Sai_men extends Shape3D{
    private QuadArray geometry = null;
    
    Point3d[][] verteces = {
      {
        new Point3d(-0.5, -0.5, 0.5),
        new Point3d(0.5, -0.5, 0.5),
        new Point3d(0.5, 0.5, 0.5),
        new Point3d(-0.5, 0.5, 0.5)
      },
      {
        new Point3d(0.5, -0.5, 0.5),
        new Point3d(0.5, -0.5, -0.5),
        new Point3d(0.5, 0.5, -0.5),
        new Point3d(0.5, 0.5, 0.5)
      },
      {
        new Point3d(-0.5, 0.5, 0.5),
        new Point3d(0.5, 0.5, 0.5),
        new Point3d(0.5, 0.5, -0.5),
        new Point3d(-0.5, 0.5, -0.5)
      },
      {
        new Point3d(-0.5, -0.5, -0.5),
        new Point3d(0.5, -0.5, -0.5),
        new Point3d(0.5, -0.5, 0.5),
        new Point3d(-0.5, -0.5, 0.5)
      },
      {
        new Point3d(-0.5, -0.5, -0.5),
        new Point3d(-0.5, -0.5, 0.5),
        new Point3d(-0.5, 0.5, 0.5),
        new Point3d(-0.5, 0.5, -0.5)
      },
      {
        new Point3d(0.5, -0.5, -0.5),
        new Point3d(-0.5, -0.5, -0.5),
        new Point3d(-0.5, 0.5, -0.5),
        new Point3d(0.5, 0.5, -0.5)
      }
    };
    
    Vector3f[] normal = {
      new Vector3f(0.0f, 0.0f, -1.0f),
      new Vector3f(-1.0f, 0.0f, 0.0f),
      new Vector3f(0.0f, -1.0f, 0.0f),
      new Vector3f(0.0f, 1.0f, 0.0f),
      new Vector3f(1.0f, 0.0f, 0.0f),
      new Vector3f(0.0f, 0.0f, 1.0f)
    };

    public Sai_men(int num){
      int i;

      TexCoord2f[] texcoords = new TexCoord2f[4];

      texcoords[0] = new TexCoord2f(0.0f, 0.0f);
      texcoords[1] = new TexCoord2f(0.93f, 0.0f);
      texcoords[2] = new TexCoord2f(0.93f, 0.93f);
      texcoords[3] = new TexCoord2f(0.0f, 0.93f);

      BufferedImage bimage = new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB);
      int[] tex_image = ((DataBufferInt)bimage.getRaster().getDataBuffer()).getData();

      int[] bitmap = (new Sai_bmp()).getBmp(num);

      for(i = 0; i < 16 * 16; i++){
        tex_image[i] = bitmap[i];
      }

      ImageComponent2D icomponent2d = new ImageComponent2D(ImageComponent.FORMAT_RGBA, bimage);

      Texture2D tex2d = new Texture2D(Texture.BASE_LEVEL, Texture.RGBA, 16, 16);
      tex2d.setImage(0, icomponent2d);

      Appearance app = new Appearance();

      Material mat = new Material();
      mat.setDiffuseColor(0.2f, 0.2f, 0.2f);
      mat.setAmbientColor(0.2f, 0.2f, 0.2f);

      app.setMaterial(mat);

      app.setTexture(tex2d);

      app.setTransparencyAttributes(new TransparencyAttributes(TransparencyAttributes.BLENDED, 0.0f));

      geometry = new QuadArray(verteces[num].length, GeometryArray.COORDINATES | GeometryArray.TEXTURE_COORDINATE_2 | GeometryArray.NORMALS);
      geometry.setCoordinates(0, verteces[num]);
      geometry.setTextureCoordinates(0, 0, texcoords);
      Vector3f[] normals = {normal[num], normal[num], normal[num], normal[num]};
      geometry.setNormals(0, normals);

      this.setAppearance(app);
      this.setGeometry(geometry);
    }
  }

  public class Sai{
    private int me = 0;
    private boolean move_flag = false;
    private Sai_men[] men;

    public Sai(){
      int i;

      men = new Sai_men[6];

      for(i = 0; i < 6; i++){
        men[i] = new Sai_men(i);
      }
    }

    public void throw_sai(){
      Random rand = new Random();
      me = rand.nextInt(6);
      move_flag = true;
    }

    public void stop_sai(){
      move_flag = false;
    }

    public boolean is_move(){
      return move_flag;
    }

    public int get_me(){
      return me;
    }

    public void draw(GraphicsContext3D gc){
      gc.draw(men[0]);
      gc.draw(men[1]);
      gc.draw(men[2]);
      gc.draw(men[3]);
      gc.draw(men[4]);
      gc.draw(men[5]);
    }
  }

  public void init() {
    int i;
    GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
    canvas3d = new Canvas3D(config);
    this.setLayout(new BorderLayout());
    this.add(canvas3d, BorderLayout.CENTER);

    canvas3d.stopRenderer();
    canvas3d.setDoubleBufferEnable(true);

    sai = new Sai[2];

    sai[0] = new Sai();
    sai[1] = new Sai();

    Transform3D pers = new Transform3D();
    Transform3D lookat = new Transform3D();

    universe = new SimpleUniverse(canvas3d);

    lookat.set(Transform3D.ZERO);
    pers.set(Transform3D.ZERO);

    Point3d eye = new Point3d(0.0, 0.5, 2.0);
    Point3d center = new Point3d(0.0, 0.0, 0.0);
    Vector3d upvector = new Vector3d(0.0, 1.0, 0.0);

    lookat.lookAt(eye, center, upvector);
    
    pers.perspective(Math.toRadians(60.0), 1.0, 0.1, 10.0);

    canvas3d.getView().setWindowEyepointPolicy(View.RELATIVE_TO_COEXISTENCE);
    canvas3d.getView().setProjectionPolicy(View.PERSPECTIVE_PROJECTION);
    canvas3d.getView().setCompatibilityModeEnable(true);
    canvas3d.getView().setVpcToEc(lookat);
    canvas3d.setMonoscopicViewPolicy(View.LEFT_EYE_VIEW);
    canvas3d.getView().setLeftProjection(pers);
    canvas3d.getView().setScreenScalePolicy(View.SCALE_SCREEN_SIZE);

    mTimeOld = System.currentTimeMillis();
    mInited = true;

    mouse_class mouse = new mouse_class();

    canvas3d.addMouseListener(mouse);
  }

  public void render(){
    int i;
    GraphicsContext3D gc;
    gc = canvas3d.getGraphicsContext3D();
    gc.clear();

    Background background = new Background(new Color3f(0.0f, 0.0f, 1.0f));
    gc.setBackground(background);

    DirectionalLight d_light = new DirectionalLight(true, new Color3f(1.0f, 1.0f, 1.0f), new Vector3f(-2.0f, 2.0f, 5.0f));

    AmbientLight a_light = new AmbientLight(new Color3f(1.0f, 1.0f, 1.0f));

    Point3d point = new Point3d(0.0d, 0.0d, 0.0d);
    BoundingSphere bounds = new BoundingSphere(point, 10.0d);

    a_light.setInfluencingBounds(bounds);
    d_light.setInfluencingBounds(bounds);

    gc.addLight(a_light);
    gc.addLight(d_light);

    Transform3D t3d1 = new Transform3D();
    Transform3D t3d2 = new Transform3D();
    Transform3D t3d3 = new Transform3D();
    Transform3D t3d4 = new Transform3D();
    Transform3D t3d5 = new Transform3D();

    double angle;
    angle = (float)mTick * mFInterval;
    angle *= Math.PI;

    for(i = 0; i < 2; i++){
      t3d1.set(Transform3D.ZERO);

      if(i == 0){
        t3d1.setTranslation(new Vector3f(-0.4f, 0.0f, 0.0f));
      }
      else{
        t3d1.setTranslation(new Vector3f(0.4f, 0.0f, 0.0f));
      }

      switch(sai[i].get_me()){
        case 0:
          break;
        case 1:
          t3d2.rotX(Math.PI / 2);
          break;
        case 2:
          t3d2.rotX(-Math.PI / 2);
          break;
        case 3:
          t3d2.rotY(Math.PI / 2);
          break;
        case 4:
          t3d2.rotY(-Math.PI / 2);
          break;
        case 5:
          t3d2.rotX(Math.PI);
          break;
      }

      t3d1.mul(t3d2);

      if(sai[i].is_move()){
        t3d3.rotX(angle * 20);
        t3d4.rotY(angle * 25);
        t3d1.mul(t3d3);
        t3d1.mul(t3d4);
      }

      t3d5.setScale(new Vector3d(0.5d, 0.5d, 0.5d));

      t3d1.mul(t3d5);

      gc.setModelTransform(t3d1);
      sai[i].draw(gc);

      // Shape3D に setAppearance せず gc.setAppearance に分けるべきであった
    }

    canvas3d.swap();
  }

  public void start(){
    mLoop = true;

    if(mThread == null){
      mThread = new Thread(this);
      mThread.start();
    }
    else{
      if(!mThread.isAlive()){
        mThread = new Thread(this);
        mThread.start();
      }
    }
  }

  public void run(){
    long current,elapsed;
    while(mLoop){
      current = System.currentTimeMillis();
      elapsed = current - mTimeOld;
      if(elapsed > 15){
        mTimeOld = current;
        mTick += elapsed;
        mTick %= mCycle;
        if(mInited){
          render();
        }
      }
      mThread.yield();
    }
  }

  public void stop(){ 
    mLoop = false;
  }

  public void destroy(){
    universe.cleanup();
  }

  class mouse_class implements MouseListener{
    public void mouseClicked(MouseEvent mouseevent){}
    public void mouseEntered(MouseEvent mouseevent){}
    public void mouseExited(MouseEvent mouseevent){}
    public void mousePressed(MouseEvent mouseevent){
      sai[0].throw_sai();
      sai[1].throw_sai();
    }
    public void mouseReleased(MouseEvent mouseevent){
      sai[0].stop_sai();
      sai[1].stop_sai();
    }
  }
}

inserted by FC2 system