//sketch_3D_Bird_box 巣箱 Part P;//使用クラスの定義 void setup() { size(600, 600, P3D); P=new Part();//My_OBクラスのオブジェクトを生成 } 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); scale(2,2,2); float[] L={13,150,180,180,90,130,150}; translate(0,L[2]/2,0); P.Bird_Box(45*PI/180,20,L); } //部品 class Part { void Bird_Box(float A,float R,float L[]) { fill(206, 173,52); Part1(A,R,L); Part2(A,R,L); Part3(A,R,L); fill(0, 150, 0); Part4(A,R,L); } void Part4(float A,float R,float L[]) { int Pn=7;//ポイント数 float[] X=new float[Pn]; float[] Y=new float[Pn]; X[0]=0;Y[0]=-L[2]; X[1]=-L[3]/2;Y[1]=Y[0]+L[3]*tan(A)/2; X[2]=X[1]+L[0]*sin(A);Y[2]=Y[1]+L[0]*cos(A); X[3]=0;Y[3]=Y[0]+L[0]/cos(A); X[4]=-X[2];Y[4]=Y[2]; X[5]=-X[1];Y[5]=Y[1]; X[6]=X[0];Y[6]=Y[0]; pushMatrix(); Z_Side(Pn,X,Y,L[6]);//側面 translate(0,0,-L[6]/2); Z_Polyon(Pn,X,Y);//多角形 translate(0,0,L[6]); Z_Polyon(Pn,X,Y);//多角形 popMatrix(); float LH=sqrt((X[1]-X[0])*(X[1]-X[0])+ (Y[1]-Y[0])*(Y[1]-Y[0])); println("Part4 W=\t" + (L[6]) + "\tH=\t" + nf(LH,0,1)); } void Part3(float A,float R,float L[]) { int Pn=5;//ポイント数 float[] X=new float[Pn]; float[] Y=new float[Pn]; X[0]=L[1]/2;Y[0]=0; X[1]=X[0];Y[1]=-(L[2]-L[0]/cos(A)-L[1]*tan(A)/2); X[2]=L[1]/2-L[0];Y[2]=-(L[2]-L[0]/cos(A)-L[1]*tan(A)/2+L[0]*tan(A)); X[3]=X[2];Y[3]=0; X[4]=X[0];Y[4]=Y[0]; pushMatrix(); Z_Side(Pn,X,Y,L[5]-2*L[0]);//側面 rotateY(PI); Z_Side(Pn,X,Y,L[5]-2*L[0]);//側面 popMatrix(); println("Part3 W=\t" + (L[5]-2*L[0]) + "\tH=\t" + nf(abs(Y[2]),0,1)); } void Part2(float A,float R,float L[]) { pushMatrix(); translate(0,-L[0]/2,0); box(L[1]-2*L[0],L[0],L[5]-2*L[0]); popMatrix(); println("Part2 W=\t" + (L[1]-2*L[0]) + "\tH=\t" + nf((L[5]-2*L[0]),0,1)); } void Part1(float A,float R,float L[]) { int Pn=6;//ポイント数 float[] X=new float[Pn]; float[] Y=new float[Pn]; X[0]=-L[1]/2;Y[0]=0; X[1]=X[0];Y[1]=-(L[2]-L[0]/cos(A)-L[1]*tan(A)/2); X[2]=0;Y[2]=-(L[2]-L[0]/cos(A)); X[3]=-X[1];Y[3]=Y[1]; X[4]=-X[0];Y[4]=Y[0]; X[5]=X[0];Y[5]=Y[0]; int i; int Pn2=17;//ポイント数 float[] X2=new float[Pn2]; float[] Y2=new float[Pn2]; for(i=0;i= 0; i--) { vertex(X[i],Y[i]); } } }