アットウィキロゴ

jk

/*・・・・・・・・・・・・・・・・・・・・・・プログラムに必要なパッケージの取り込み・・・・・・・・・・・・・・・・・・・・・・*/
import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.universe.SimpleUniverse;
import com.sun.j3d.utils.geometry.*;

/*・・・・・・・・・・・・・・・・・・・・・・・・・・トランスフォームグループの作成・・・・・・・・・・・・・・・・・・・・・・・・・・*/
public class Chicken extends TransformGroup{
   // 「Chicken」クラスの定義

/*・・・・・・・・・・・・・・・・・・・・・・・・・・他のクラスから参照する変数の宣言・・・・・・・・・・・・・・・・・・・・・・・・*/
   public Material material3;
       // Material型の変数を宣言
   public TransformGroup transformGroup4;
       // TransformGroup型の変数を宣言
   public Transform3D transform3D4;
       //  Transform3D型の変数を宣言
   public Chicken( ){

/*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 白色の外観の生成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
       Material material1 = [[new]] Material( );
           //  Materialクラスのインスタンスを生成
       material1.setDiffuseColor( 1.0f, 1.0f, 1.0f );
           // 「material1」に表面の色を設定
       Appearance appearance1 = new Appearance( );
           // Appearanceクラスのインスタンスを生成
       appearance1.setMaterial( material1 );
           // 「appearance1」の表面属性として「material1」を設定

/*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 赤色の外観の生成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
       Material material2 = new Material( );
           //  Materialクラスのインスタンスを生成
       material2.setDiffuseColor( 1.0f, 0.0f, 0.0f );
           // 「material2」に表面の色を設定
       Appearance appearance2 = new Appearance( );
           // Appearanceクラスのインスタンスを生成
       appearance2.setMaterial( material2 );
           // 「appearance2」の表面属性として「material2」を設定

/*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 黒色の外観の生成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
       material3 = new Material( );
           //  Materialクラスのインスタンスを生成
       material3.setDiffuseColor( 0.0f, 0.0f, 0.0f );
           // 「material3」に表面の色を設定
       Appearance appearance3 = new Appearance( );
           // Appearanceクラスのインスタンスを生成
       appearance3.setMaterial( material3 );
           // 「appearance3」の表面属性として「material3」を設定

/*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 黄色の外観の生成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
       Material material4 = new Material( );
           //  Materialクラスのインスタンスを生成
       material4.setDiffuseColor( 1.0f, 1.0f, 0.0f );
           // 「material4」に表面の色を設定
       Appearance appearance4 = new Appearance( );
           // Appearanceクラスのインスタンスを生成
       appearance4.setMaterial( material4 );
           // 「appearance5」の表面属性として「material5」を設定

/*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ プリミティブの生成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
       Sphere head = new Sphere( 0.3f, Sphere.GENERATE_NORMALS, appearance1 );
           // Sphereクラスのインスタンスを生成
       Cone body = new Cone( 0.33f, 1.1f,Cone.GENERATE_NORMALS, appearance2 );
           //  Coneクラスのインスタンスを生成
       Sphere leftEye = new Sphere ( 0.035f, Sphere.GENERATE_NORMALS, appearance3 );
           //  Sphereクラスのインスタンスを生成
       Sphere rightEye = new Sphere ( 0.035f, Sphere.GENERATE_NORMALS, appearance3 );
           //  Sphereクラスのインスタンスを生成
       Cone topBeak = new Cone ( 0.2f, 0.3f, Cone.GENERATE_NORMALS, appearance4 );
           //  Coneクラスのインスタンスを生成
       Cone bottomBeak = new Cone ( 0.2f, 0.2f, Cone.GENERATE_NORMALS,appearance4 );
           //  Coneクラスのインスタンスを生成

/*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ トサカと胴体の座標変換 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
       TransformGroup transformGroup1 = new TransformGroup( );
           // TransformGroupクラスのインスタンスを生成
       Transform3D transform3D1 = new Transform3D( );
           //  Transform3Dクラスのインスタンスを生成
       Vector3d vector3d1 = new Vector3d( 0.0, -0.05, 0.0 );
           //  Vector3dクラスのインスタンスを生成
       transform3D1.setTranslation( vector3d1 );
           // 「transform3D1」の座標情報として「vector3d1」を設定
       transformGroup1.setTransform( transform3D1 );
           // 「transformGroup1」の座標変換として「transform3D1」を設定
       transformGroup1.addChild( body );
           // 「body」を「transformGroup1」に追加

/*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 左目の座標変換 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
       TransformGroup transformGroup2 = new TransformGroup( );
           // TransformGroupクラスのインスタンスを生成
       Transform3D transform3D2 = new Transform3D( );
           //  Transform3Dクラスのインスタンスを生成
       Vector3d vector3d2 = new Vector3d( 0.15, 0.04, 0.3 );
           // Vector3dクラスのインスタンスを生成
       transform3D2.setTranslation( vector3d2 );
           // 「transform3D2」の座標情報として「vector3D2」を設定
       transformGroup2.setTransform( transform3D2 );
           // 「transformGroup2」の座標変換として「transform3D2」を設定
       transformGroup2.addChild( leftEye );
           // 「leftEye」を「transformGroup2」に追加

/*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 左目の座標変換 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
       TransformGroup transformGroup3 = new TransformGroup( );
           //  TransformGroupクラスのインスタンスを生成
       Transform3D transform3D3 = new Transform3D( );
           //  transform3Dクラスのインスタンスを生成
       Vector3d vector3d3 = new Vector3d( -0.15, 0.04, 0.3 );
           //  Vector3dクラスのインスタンスを生成
       transform3D3.setTranslation( vector3d3 );
           // 「transform3D3」の座標情報として「vector3d3」を設定
       transformGroup3.setTransform( transform3D3 );
           // 「transformGroup3」の移動先として「transform3D3」を設定
       transformGroup3.addChild( rightEye );
           // 「rightEye」を「transformGroup3」に追加

/*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 上クチバシの座標変換 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
       transformGroup4 = new TransformGroup( );
           //  TransformGroupクラスのインスタンスを生成
       transform3D4 = new Transform3D( );
           //  Transform3Dクラスのインスタンスを生成
       Vector3d vector3d4 = new Vector3d( 0.0, 0.05, 0.14 );
           //  Vector3dクラスのインスタンスを生成
       transform3D4.setTranslation( vector3d4 );
           // 「transform3D4」の座標情報として「vector3d4」を設定
       transformGroup4.setTransform( transform3D4 );
           // 「transformGroup4」の座標変換として「transgform3D4」を設定
       transformGroup4.addChild( topBeak );
           // 「topBeak」を「transformGroup4」に追加

/*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 下クチバシの座標変換 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
       TransformGroup transformGroup5 = new TransformGroup( );
           //  TransformGroupクラスのインスタンスを生成
       Transform3D transform3D5_1 = new Transform3D( );
           //  Transform3Dクラスのインスタンスを生成
       Vector3d vector3d5 = new Vector3d( 0.0, -0.2, 0.11 );
           //  Vector3dクラスのインスタンスを生成
       transform3D5_1.setTranslation( vector3d5 );
           // 「transform3D5_1」の座標情報として「vector3d5」を設定
       Transform3D transform3D5_2 = new Transform3D( );
           //  Transform3Dクラスのインスタンスを生成
       transform3D5_2.rotX( Math.PI );
           // 「transform3D5_2」の座標変換として回転を設定
       transform3D5_1.mul( transform3D5_2 );
           // 「transform3D5_1」の座標変換と「transform3D5_2」の座標変換を合成
       transformGroup5.setTransform( transform3D5_1 );
           // 「transformGroup5」の座標変換として「transform3D5_1」を設定
       transformGroup5.addChild( bottomBeak );
           // 「bottomBeak」を「transfornGroup5」に追加

/*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 部品の統合 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
       this.addChild( head );
           // 「head」をChickenクラスに追加
       this.addChild( transformGroup1 );
           // 「transformGroup1」をChickenクラスに追加
       this.addChild( transformGroup2 );
           // 「transformGroup2」をChickenクラスに追加
       this.addChild( transformGroup3 );
           // 「transformGroup3」をChickenクラスに追加
       this.addChild( transformGroup4 );
           // 「transformGroup4」をChickenクラスに追加
       this.addChild( transformGroup5 );
           // 「transformGroup5」をChickenクラスに追加
}
}
最終更新:2011年03月03日 23:48