public CollectData(string picName,double timespan,NDILib.Position3d position0,NDILib.Position3d position1,NDILib.Position3d position2) { this.picName = picName; this.timespan = timespan; this.position0 = position0; this.position1 = position1; this.position2 = position2; }
void backgroundWorker_DoWork(object sender, DoWorkEventArgs e) { maxSpeed = 0; maxGrasp = 0; NDILib.Position3d oldposition = allDataList[0].position2; double oldtime = allDataList[0].timespan; double oldspeed = 0; for (int i = 0; i < allDataLength;i++ ) { position3D0=allDataList[i].position0; position3D1=allDataList[i].position1; position3D2=allDataList[i].position2; if (position3D0.x > MAX_NEGATIVE && position3D1.x > MAX_NEGATIVE) { double distance = Math.Sqrt((position3D0.x - position3D1.x) * (position3D0.x - position3D1.x) + (position3D0.y - position3D1.y) * (position3D0.y - position3D1.y) + (position3D0.z - position3D1.z) * (position3D0.z - position3D1.z)); Console.WriteLine("distance:" + distance); if (distance > maxGrasp) { maxGrasp = distance; } } if (position3D2.x>MAX_NEGATIVE){ double time = allDataList[i].timespan - oldtime; if (time != 0) { double range = Math.Sqrt((position3D2.x - oldposition.x) * (position3D2.x - oldposition.x) + (position3D2.y - oldposition.y) * (position3D2.y - oldposition.y) + (position3D2.z - oldposition.z) * (position3D2.z - oldposition.z)); double speed = range / time; double acce = 1000 * (speed - oldspeed) / time; Console.WriteLine("speed:" + speed); Console.WriteLine("acce: " + acce); if (acce < 15 && acce > -15) { if (speed > maxSpeed) { maxSpeed = speed; } oldposition = position3D2; oldtime = allDataList[i].timespan; oldspeed = speed; } } } } }