AHRSInterface.GyroCal.isUniqueVector C# (CSharp) Method

isUniqueVector() private method

private isUniqueVector ( double gyroX, double gyroY, double gyroZ ) : bool
gyroX double
gyroY double
gyroZ double
return bool
        private bool isUniqueVector(double gyroX, double gyroY, double gyroZ)
        {
            int i;

            bool unique_data = true;

            for (i = 0; i < next_data_index; i++)
            {
                double dot_product = loggedData[i, 0] * gyroX + loggedData[i, 1] * gyroY + loggedData[i, 2] * gyroZ;
                double norm1 = Math.Sqrt(gyroX * gyroX + gyroY * gyroY + gyroZ * gyroZ);
                double norm2 = Math.Sqrt(loggedData[i, 0] * loggedData[i, 0] + loggedData[i, 1] * loggedData[i, 1] + loggedData[i, 2] * loggedData[i, 2]);
                double angle = Math.Acos(dot_product / (norm1 * norm2));

                if (Math.Abs(angle) < threshold)
                {
                    unique_data = false;
                }
            }

            return unique_data;
        }