//3D_MyJet_MPU6050_V2 import processing.serial.*; Serial myPort; // The serial port float My=0; float Mz=0; float Mx=0; void setup () { size(740, 660, P3D); println(Serial.list()); myPort = new Serial(this, Serial.list()[1], 19200); } void draw () { float r=0.2,Mxn,Myn; if(myPort.available()>16 )//受信データが16バイト以上の場合 { String myString = myPort.readString();//受信バッファを全部読む float sensors[] = float(split(myString, ' ')); if(sensors.length==7) { Mxn=2*atan2(sensors[1],sensors[2]);//重力方向 Myn=2*atan2(sensors[0],sensors[2]);//重力方向 if(abs(Mxn) < 3.2 && abs(Myn) < 3.2) { Mx=Mx*(1-r)+r*Mxn;//重力方向 My=My*(1-r)+r*Myn;//重力方向 } //Mx=sensors[3]/200000;//ジャイロ //My=sensors[4]/200000;//ジャイロ Mz=sensors[5]/200000;//ジャイロ println(Mx + "\t"+My+ "\t"+Mz ); } } background(0, 256, 256); lights(); noStroke(); fill(240, 240, 230); translate(width / 2, height / 2); translate(mouseX-width / 2,0,200+mouseY- height / 2); rotateX(Mx); rotateY(Mz); rotateZ(My); OB_A2();//Z軸回転体(胴体) OB_A3();//Z軸回転体(胴体先端) OB2();//主翼 OB3();//水平尾翼 OB4();//垂直尾翼 OB_A4();//Z軸回転体(エンジン) } void OB_A4()//Z軸回転体(エンジン) { int sides=16;//分割数 int Sn=6;//面数 float Pz[]={0,-1,-50,-60,-70,-70};//z座標 float R[]={15,20,20,15,15,1};//回転物半径 int i,j; float angleIncrement = TWO_PI/sides; pushMatrix(); translate(60, 36.3,-145); for(j=0;j