Exemplo n.º 1
0
 private void OnDataRecieved(Object sender, Phidgets.Events.SpatialDataEventArgs e)
 {
     Console.WriteLine();
 }
Exemplo n.º 2
0
        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);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }