void FinishTrial() { this.finalPositionProjectedOnMovementAxis = ResultsMath.Projected3DPointCoordinate(initialTargetPosition, finalTargetPosition, positionActionEnded); double lastProjection = (lastTrial == null) ? 0 : lastTrial.finalPositionProjectedOnMovementAxis; this.effectiveAmplitudeOfMovement = ResultsMath.EffectiveAmplitude( initialTargetPosition, finalTargetPosition, this.finalPositionProjectedOnMovementAxis, lastProjection); this.distanceErrorFromTarget = (positionActionEnded - finalTargetPosition).magnitude; }
public Throughput(TestMeasurements test) { totalTrials = 0; missedTrials = 0; double totalMovementTime = 0; double totalEffectiveAmplitude = 0; List <double> projectedCoordinates = new List <double>(); foreach (BlockMeasurements b in test.blocksData) { foreach (TrialMeasurements t in b.trialsData) { UpdateOutlierState(t); if (!t.isMarkedAsOutlier) { totalTrials++; if (t.missedTarget) { missedTrials++; } totalMovementTime += t.trialDuration; totalEffectiveAmplitude += t.effectiveAmplitudeOfMovement; projectedCoordinates.Add(t.finalPositionProjectedOnMovementAxis); } } } double stdev = ResultsMath.ComputeStandardDeviation(projectedCoordinates); errorRate = (float)missedTrials / (float)totalTrials; averageMovementTime = totalMovementTime / totalTrials; effectiveAmplitude = totalEffectiveAmplitude / totalTrials; effectiveWidth = ResultsMath.EffectiveWidthForStdevValue(stdev); effectiveIndexOfDifficulty = ResultsMath.IndexOfDifficulty(effectiveWidth, effectiveAmplitude); throughput = effectiveIndexOfDifficulty / averageMovementTime; }
public IndexOfDifficulty(float targetWidth, float targetsDistance) { this.targetWidth = targetWidth; this.targetsDistance = targetsDistance; this.indexOfDifficulty = ResultsMath.IndexOfDifficulty(targetWidth, targetsDistance); }