34章:3Dサンプル(sketch_3D_Parasol)パラソル面

    作成2015.12.14

     Processingの3D機能を利用して3D機械製図への応用を検討してみたいと思います。

  1. パラソル面の寸法図
     パラソル面の寸法図を以下に示します。



    *図34-1からパラソル面面の基本寸法はR、Aの2個のパラメータで形状が決まります。
    *パラメータは全てfloat型でmm単位で入力とします。


  2. 3Dサンプル(sketch_3D_Parasol)パラソル面スケッチ
     3Dサンプル(sketch_3D_Parasol)パラソル面スケッチは以下となります。
    //sketch_3D_Z_Parasol
    void setup()
    {
      size(400, 400, P3D);
    }
    
    void draw()
    {
      background(255, 255, 255);
      lights();
      ortho(-width/2, width/2, -height/2, height/2); // Same as ortho()
      translate(width / 2, height / 2);
      rotateY(map(mouseX, 0, width, -PI/1, PI/1));
      rotateX(map(mouseY, 0, height, PI/1, -PI/1));
      //noStroke();
      strokeWeight(0.5);
        
      fill(255, 255, 255);
      scale(2,2,2);
      //void Z_Parasol(int Sn,float R,float A)//パラソル面
      Z_Parasol(4,72.5,60);//パラソル面
    }
    
    void Z_Parasol(int Sn,float R,float A)//パラソル面
    {
      int Pn=17;//ポイント数
      float[][] X=new float[Sn+1][Pn];
      float[][] Y=new float[Sn+1][Pn];
      float[] Z=new float[Sn+1];
      int i,j;
      for(j=0;j<=Sn;j++)
      {
        float Aj=j*A*PI/(180*(Sn-1));
        Z[j]=R*cos(Aj);
        float Ry=R*sin(Aj);
        for(i=0;i<Pn;i++)
        {
          float Ai = i*TWO_PI/(Pn-1);
          X[j][i]=Ry*cos(Ai);
          Y[j][i]=Ry*sin(Ai);
        }
      }
      //void Z_Side_M(int Sn,int Pn,float X[][],float Y[][],float Z[])//多段側面
      Z_Side_M(Sn,Pn,X,Y,Z); 
    }
    
    void Z_Side_M(int Sn,int Pn,float X[][],float Y[][],float Z[])//多段側面
    {
      int i,j;
      for(j=0;j<Sn-1;j++)
      {
        beginShape(QUAD_STRIP);
        for (i = 0; i < Pn; i++)
        {
          vertex(X[j][i],Y[j][i], Z[j]);
          vertex(X[j+1][i],Y[j+1][i], Z[j+1]);
        }
        endShape(CLOSE);
      }
    }
    


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



  4. 3Dサンプル(sketch_3D_Parasol)パラソル面の実行
    (1)3Dサンプル(sketch_3D_Parasol)パラソル面を実行すると実行ウインドウに3D画像が表示されます。
    (2)マウスを動かすと表示角度が変化します。
    (3)表示画像例を以下に示します。





  5. 3Dサンプル(sketch_3D_Parasol)パラソル面まとめ
    (1)void Z_Parasol(int Sn,float R,float A)//パラソル面で描画に必要な3次元データを生成します。
    (2)void Z_Side_M(int Sn,int Pn,float X[][],float Y[][],float Z[])//多段側面で次元データを元に描画します。
    (3)void Z_Side_M(int Sn,int Pn,float X[][],float Y[][],float Z[])//多段側面は汎用性があります。




35章:3Dサンプル(sketch_3D_Arc_Straight)円弧+直線に行く。

トップページに戻る。