У меня есть Вектор с 3 компонентами (X, Y, Z), и я хочу найти Вектор, ортогональный данному.Поскольку векторы, ортогональные любому вектору, бесконечны, мне просто нужен случайный вектор.
Я попытался использовать уравнение с формулой Dot Product, поскольку произведение точки между двумя ортогональными векторами всегда равно 0, иМне удалось написать немного кода, который работает только тогда, когда данный Вектор выровнен по оси, но это, вероятно, потому, что рандомизированными компонентами векторов являются X и Y. Я действительно не могу разобраться с этим.
Я написал свой код на движке Unity3D, чтобы его можно было легко визуализировать:
Vector3 GenerateOrthogonal(Vector3 normal)
{
float x = Random.Range(1f, -1f);
float y = Random.Range(1f, -1f);
float total = normal.x * x + normal.y * y;
float z = -total / -normal.z;
return new Vector3(x, y, z).normalized;
}