10章:3Dサンプル(sketch_3D_sabani)サバニ船型

    作成2015.12.03

     サバニ船型はヨットに用いられる形状です。Processingの3D機能を利用して3Dサンプル (sketch_3D_sabani)を作成してみました。

  1. 3Dサンプル(sketch_3D_sabani)スケッチ
     3Dサンプル(sketch_3D_sabani)スケッチは以下となります。
    //sketch_3D_Sabani
    void setup()
    {
      size(640, 560, P3D);
    }
    
    void draw()
    {
      background(0, 256, 256);
      lights();
      translate(width / 2, height / 2);
      rotateY(map(mouseX, 0, width, -PI/1, PI/1));
      rotateX(map(mouseY, 0, height, PI/1, -PI/1));
      //noStroke();
      fill(240, 240, 230);
      translate(0,0,200);
      scale(3, 3, 3);
      Sabani();//サバニ船型
    }
    
    void Sabani()//サバニ船型
    {
      int sides=5;//分割数
      int Sn=28;//面数
      int Nz=26;//Z分割数
      float Pz=5.1;//Zピッチ
      float Tan20=tan(20*PI/180);
      float Kx[]={0.0201681,0.8286317,-0.0081566,0.0000220};
      float Ky[]={16.307692,0.225165,-0.001703};
      float[][] X=new float[5][Sn];
      float[][] Y=new float[5][Sn];
      float[] Z=new float[Sn];
      float Zj;
      int i,j;
      
      for(i=0;i< 5;i++){X[i][0]=0;Y[i][0]=0;Z[0]=0;}
      for(j=1;j< Sn;j++)
      {
        Zj=Pz*j;Z[j]=-Zj;
        X[0][j]=abs(Kx[0]+Kx[1]*Zj+Kx[2]*Zj*Zj+Kx[3]*Zj*Zj*Zj);
        Y[0][j]=0;
        X[1][j]=-X[0][j];
        Y[1][j]=0;
        X[2][j]=X[1][j];
        if(j==1){X[2][j]=0;}
        Y[2][j]=abs(Ky[0]+Ky[1]*Zj+Ky[2]*Zj*Zj)-X[0][j]*Tan20;
        X[3][j]=0;
        Y[3][j]=abs(Ky[0]+Ky[1]*Zj+Ky[2]*Zj*Zj);
        X[4][j]=-X[2][j];
        Y[4][j]=Y[2][j];
        Z[Sn-1]=Z[Sn-2];
      }
      Z[Sn-1]=Z[Sn-2];X[0][Sn-1]=0;Y[0][Sn-1]=0;X[1][Sn-1]=0;Y[1][Sn-1]=0;
      X[2][Sn-1]=0;Y[2][Sn-1]=0;X[3][Sn-1]=0;Y[3][Sn-1]=0;X[4][Sn-1]=0;Y[4][Sn-1]=0;
      pushMatrix();
      for(j=0;j< Sn-1;j++)
      {
        beginShape(QUAD_STRIP);
        for (i = 0; i <  5; ++i)
        {
          vertex(X[i][j],Y[i][j], Z[j]);
          vertex(X[i][j+1], Y[i][j+1], Z[j+1]);
        }
        vertex(X[0][j],Y[0][j], Z[j]);
        vertex(X[0][j+1], Y[0][j+1],Z[j+1]);
        endShape(CLOSE);
      }
      popMatrix();
    }  
    


  2. 3Dサンプル(sketch_3D_sabani)テキストファイル
     3Dサンプル(sketch_3D_sabani)テキストファイルは以下から参照できます。
    「3Dサンプル(sketch_3D_sabani)テキストファイル」にいく



  3. 3Dサンプル(sketch_3D_sabani)スケッチの実行
    (1)3Dサンプル(sketch_3D_sabani)スケッチを実行すると実行ウインドウにサバニ船型の3D画像が表示されます。
    (2)マウスを動かすとサバニ船型の表示角度が変化します。
    (3)表示画像例を以下に示します。








  4. 3Dサンプル(sketch_3D_sabani)まとめ
    (1)サバニ船型の曲線を多項式近似式を用いて、3Dサンプル(sketch_3D_sabani)を作成しました。
    (2)多項式近似式を用いると少ない定数入力で3Dサンプルが作成できました。
    (3)特殊なライブラリーを使用することなく、Processingの3D機能のみでうまく製作できました。




11章:3Dサンプル(sketch_3D_Yacht)ヨットに行く。

トップページに戻る。