Я пытаюсь реализовать функцию для vector rejection в C#. То есть:Векторная проекция/отказ в C#?
Я пытался кодировать эту формулу в C#, однако по какой-то причине он всегда возвращался к нулю. Это то, что у меня нет до сих пор:
private Vector3 Projection(Vector3 vectorA, Vector3 vectorB) {
Vector3 a2 = Vector3.Scale (Divide (Vector3.Scale (vectorA, vectorB), Vector3.Scale (vectorB, vectorB)), vectorB);
return a2;
}
private Vector3 Rejection(Vector3 vectorA, Vector3 vectorB) {
Vector3 a2 = vectorA - Projection(vectorA, vectorB);
return a2;
}
private Vector3 Divide(Vector3 a, Vector3 b) {
Vector3 c = new Vector3();
c.x = a.x/b.x;
c.y = a.y/b.y;
c.z = a.z/b.z;
return c;
}
private void Example() {
Vector3 a = new Vector3 (5, 5, 0);
Vector3 b = new Vector3 (0, 10, 0);
Vector3 c = Rejection(a, b); // Returns (NaN, 0, NaN)
}
// The Vector3 class represents a 3D vector and it's x, y and z components are of float type. It's [scale method][3] multiplies two vectors component wise.
Пример:
Представьте Вектор А является сила, приложенная к объекту, который перемещается по земле и вектор В является сила тяжести (которая перпендикулярна к земле) , Когда вектор А применяются к объекту траектория двигается должна быть третьим вектором, перпендикулярной к гравитации, который можно рассматривать как бегущую перпендикулярны B. Это является отказом от А из В.
Вы можете опубликовать определение «Вектор» (особенно типы x, y, z) и определение «Масштаб»? Кроме того, какие параметры вы используете? Что он возвращается? Вы говорите, что он возвращает ноль, но он возвращает вектор так, что это невозможно. –
Возможно, вы захотите отметить этот вопрос как уникальный для Unity, так как вы спрашиваете о функциональности класса Unity 'Vector3'. –
Привет, я не понимал, что этот класс специфичен для Unity. Я могу использовать другой, но я помечаю его для Unity. – lisovaccaro