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;
}