private void OnDataRecieved(Object sender, Phidgets.Events.SpatialDataEventArgs e) { Console.WriteLine(); }
void spatial_SpatialData(object sender, Phidgets.Events.SpatialDataEventArgs e) { //This displays a vector representing the measured field in red, and after calibration the calibrated field in green if (e.spatialData[0].MagneticField.Length == 3) { lock (p) { if (twoAxisButton.Checked) { p.originalVertices[4] = new Vector3( e.spatialData[0].MagneticField[0], e.spatialData[0].MagneticField[1], -e.spatialData[0].MagneticField[2]); if (calibrated) { Vector3 rawData = new Vector3(e.spatialData[0].MagneticField[0], e.spatialData[0].MagneticField[1], e.spatialData[0].MagneticField[2]); Vector3 calibratedData = Matrix3x3.Multiply(Vector3.Subtract(rawData, cal.offset), cal.gainAndTransform); //apply local mag field - calibrate returns a unit (mag 1) field calibratedData = Vector3.Multiply(double.Parse(localFieldTextBox.Text), calibratedData); p.originalVertices[5] = new Vector3( calibratedData.X, calibratedData.Y, -calibratedData.Z); } } else { p.originalVertices[4] = new Vector3( e.spatialData[0].MagneticField[0], e.spatialData[0].MagneticField[2], -e.spatialData[0].MagneticField[1]); if (calibrated) { Vector3 rawData = new Vector3(e.spatialData[0].MagneticField[0], e.spatialData[0].MagneticField[1], e.spatialData[0].MagneticField[2]); Vector3 calibratedData = Matrix3x3.Multiply(Vector3.Subtract(rawData, cal.offset), cal.gainAndTransform); //apply local mag field - calibrate returns a unit (mag 1) field calibratedData = Vector3.Multiply(double.Parse(localFieldTextBox.Text), calibratedData); p.originalVertices[5] = new Vector3( calibratedData.X, calibratedData.Z, -calibratedData.Y); } } } } //This samples magnetic field data if (sampling) { lock (compassSamples) { if (sampling) { sampleCounter++; if (sampleCounter >= samplesPerSample) { sampleCounter = 0; if (e.spatialData[0].MagneticField.Length == 3) { compassSamples.Add( new compassDataPoint( e.spatialData[0].MagneticField[0], e.spatialData[0].MagneticField[1], e.spatialData[0].MagneticField[2] ) ); //This draws the magnetic vectors as dots lock (p) { if (twoAxisButton.Checked) { p.addPoint(new Vector3( e.spatialData[0].MagneticField[0], e.spatialData[0].MagneticField[1], -e.spatialData[0].MagneticField[2]), Brushes.Red); } else { p.addPoint(new Vector3( e.spatialData[0].MagneticField[0], e.spatialData[0].MagneticField[2], -e.spatialData[0].MagneticField[1]), Brushes.Red); } } } } } } } }