public static void DisegnaGraficoDR() { ElaboraDati.segnoAngoloTheta = 0; ElaboraDati.segnoAngoloYaw = 0; ElaboraDati.segnoAngoloPitch = 0; ElaboraDati.segnoAngoloRoll = 0; List <float> yaw = new List <float>(); // Prendo tutti gli angoli di eulero per il sensore sul bacino foreach (AngoloEulero[] angolo in ElaboraDati.AngoliEulero(Server.samplesList)) { yaw.Add(angolo[0].getYaw()); } List <float[]> coordinate = DeadReckoning(DeviazioneStandard(ElaboraDati.Modulation(Server.samplesList, 0, 0)), EliminaDiscontinuitaYaw(yaw)); FormGraphDR fgdr = new FormGraphDR(); fgdr.InitGraph(); fgdr.Show(); fgdr.DrawGraph(coordinate); Application.Run(); }
private void button1_Click(object sender, EventArgs e) { numSample.Maximum = (Server.samplesList.Count - 1); infoSample.Clear(); infoSample.AppendText("acc1: "); infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 0] + "\r\n"); infoSample.AppendText("acc2: "); infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 1] + "\r\n"); infoSample.AppendText("acc3: "); infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 2] + "\r\n"); infoSample.AppendText("gyr1: "); infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 3] + "\r\n"); infoSample.AppendText("gyr2: "); infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 4] + "\r\n"); infoSample.AppendText("gyr3: "); infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 5] + "\r\n"); infoSample.AppendText("mag1: "); infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 6] + "\r\n"); infoSample.AppendText("mag2: "); infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 7] + "\r\n"); infoSample.AppendText("mag3: "); infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 8] + "\r\n"); infoSample.AppendText("q0: "); infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 9] + "\r\n"); infoSample.AppendText("q1: "); infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 10] + "\r\n"); infoSample.AppendText("q2: "); infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 11] + "\r\n"); infoSample.AppendText("q3: "); infoSample.AppendText(Server.samplesList[(int)numSample.Value][(int)numSensor.Value, 12] + "\r\n"); if (eulerAngles.Checked == true) { List <AngoloEulero[]> AngoliEulero = ElaboraDati.AngoliEulero(Server.samplesList); infoSample.AppendText("yaw: "); infoSample.AppendText(AngoliEulero[(int)numSample.Value][(int)numSensor.Value].getYaw() + "\r\n"); infoSample.AppendText("pitch: "); infoSample.AppendText(AngoliEulero[(int)numSample.Value][(int)numSensor.Value].getPitch() + "\r\n"); infoSample.AppendText("roll: "); infoSample.AppendText(AngoliEulero[(int)numSample.Value][(int)numSensor.Value].getRoll() + "\r\n"); } if (modulation.Checked == true) { modacc = ElaboraDati.Modulation(Server.samplesList, (int)numSensor.Value, 0); modgiro = ElaboraDati.Modulation(Server.samplesList, (int)numSensor.Value, 1); infoSample.AppendText("\r\nmodacc: "); foreach (float elem in modacc) { infoSample.AppendText(elem + " - "); } infoSample.AppendText("\r\nmodgiro: "); foreach (float elem in modgiro) { infoSample.AppendText(elem + " - "); } } if (smoothing.Checked == true) { smoothacc = ElaboraDati.Smoothing(modacc); smoothgir = ElaboraDati.Smoothing(modgiro); infoSample.AppendText("\r\nsmoothacc: "); foreach (float elem in smoothacc) { infoSample.AppendText(elem + " - "); } infoSample.AppendText("\r\nsmoothgir: "); foreach (float elem in smoothgir) { infoSample.AppendText(elem + " - "); } } if (modaccRI.Checked == true) { modacc = ElaboraDati.Modulation(Server.samplesList, (int)numSensor.Value, 0); /* Fino ad ora le varie informazioni sono state salvate in List dato che * non lavoriamo su finestre di dati, ma sull' insieme di campioni * e non possiamo sapere a priori quanti sono e dunque abbaimo bisogno di * strutture dati dinamiche. Dalla documentazione la funzione RIfun accetta in input * un array e dunque ho dovuto trasfomare la List in array in modo che la signature della * funzione sia esattamente uguale a quella della documentazione */ float[] modaccArray = modacc.ToArray(); float[] modaccRIArray = ElaboraDati.RIfun(modaccArray); infoSample.AppendText("\r\nFI of modacc: "); foreach (float elem in modaccRIArray) { infoSample.AppendText(elem + " - "); } } if (sd.Checked == true) { dev = ElaboraDati.DeviazioneStandard(modacc); infoSample.AppendText("\r\nDeviazioni standard: \r\n"); foreach (float elem in dev) { infoSample.AppendText(elem + " - "); } } if (Yvalue.Checked == true) { infoSample.AppendText("\r\n" + " Valori Y del smussati: " + "\r\n"); List <float> smussati = new List <float>(); for (int i = 0; i < Server.samplesList.Count(); i++) { smussati.Add(Server.samplesList[i][0, 1]); } smussati = ElaboraDati.Smoothing(smussati); for (int i = 0; i < Server.samplesList.Count(); i++) { infoSample.AppendText(smussati[i] + "\r\n"); } } }