private bool isUniqueVector(double magX, double magY, double magZ)
{
int i;
bool unique_data = true;
for (i = 0; i < next_data_index; i++)
{
double dot_product = loggedData[i, 0] * magX + loggedData[i, 1] * magY + loggedData[i, 2] * magZ;
double norm1 = Math.Sqrt(magX * magX + magY * magY + magZ * magZ);
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;
}