bowling-analysis-system
Version:
A comprehensive system for analyzing bowling techniques using video processing and metrics calculation
95 lines (85 loc) • 3.99 kB
JavaScript
/**
* @module types/MetricsTypes
* @description Type definitions for the three-phase metrics system
*/
/**
* @typedef {Object} Frame
* @property {number} frameIndex - Index of the frame
* @property {number} timestamp - Timestamp of the frame
* @property {Object} keypoints - Keypoints data for the frame
* @property {number} confidence - Confidence score for the frame
* @property {boolean} isValid - Whether the frame is valid for analysis
* @property {Object} metadata - Additional metadata for the frame
*/
/**
* @typedef {Object} MetricsInput
* @property {Array<Frame>} frames - All frames in the sequence
* @property {Array<Frame>} validFrames - Valid frames for calculation
* @property {Object} metadata - Metadata about the input
*/
/**
* @typedef {Object} PhaseOneResult
* @property {Object} angles - Angle measurements that don't depend on events
* @property {Object} velocity - Velocity measurements that don't depend on events
* @property {Object} position - Position measurements that don't depend on events
* @property {Object} acceleration - Acceleration measurements that don't depend on events
* @property {Object} balance - Balance measurements that don't depend on events
* @property {Object} power - Power measurements that don't depend on events
* @property {Object} timeSeries - All time series data for biomechanical metrics
* @property {Object} metadata - Metadata about the metrics
*/
/**
* @typedef {Object} Bias
* @property {Object} events - Event biases (frame index differences)
* @property {Object} timeSeries - Time series adjustments
* @property {Object} valueRanges - Value range adjustments
* @property {Object} correlationFactors - Correlation factors between metrics
* @property {Object} metadata - Metadata about the biases
*/
/**
* @typedef {Object} BiasInput
* @property {PhaseOneResult} phaseOneMetrics - Phase one metrics
* @property {Object} referenceData - Reference data from moments.json
*/
/**
* @typedef {Object} EventTimings
* @property {Object} frontFootLanding - Front foot landing event
* @property {Object} backFootLanding - Back foot landing event
* @property {Object} releasePoint - Ball release event
* @property {Object} followThrough - Follow through event
*/
/**
* @typedef {Object} PhaseTwoInput
* @property {PhaseOneResult} phaseOneMetrics - Phase one metrics
* @property {EventTimings} events - Detected events
* @property {Array<Frame>} frames - All frames in the sequence
* @property {Array<Frame>} validFrames - Valid frames for calculation
*/
/**
* @typedef {Object} PhaseTwoResult
* @property {Object} timing - Timing measurements that depend on events
* @property {Object} technique - Technique measurements that depend on events
* @property {Object} efficiency - Efficiency measurements that depend on events
* @property {Object} consistency - Consistency measurements that depend on events
* @property {Object} metadata - Metadata about the metrics
*/
/**
* @typedef {Object} FullMetricsResult
* @property {Object} angles - All angle measurements
* @property {Object} velocity - All velocity measurements
* @property {Object} position - All position measurements
* @property {Object} acceleration - All acceleration measurements
* @property {Object} timing - All timing measurements
* @property {Object} balance - All balance measurements
* @property {Object} power - All power measurements
* @property {Object} technique - All technique measurements
* @property {Object} efficiency - All efficiency measurements
* @property {Object} consistency - All consistency measurements
* @property {Object} events - All detected events
* @property {Object} timeSeries - All time series data
* @property {Object} metadata - Combined metadata
*/
// Export all type definitions
module.exports = {
// These are just for JSDoc, no actual code is exported
};