У меня есть два направления, и я пытаюсь вычислить угол на определенной оси. Объект, из которого производятся эти направления, не является статическим объектом, поэтому я изо всех сил пытаюсь разобраться в математике, чтобы выяснить, что мне нужно делать.
FYI, у меня есть начальная и конечная точки, которые я использовал для расчета направлений, если они необходимы.
Вот диаграмма, показывающая, что я ищу:
Вышеприведенное изображение представлено сверху вниз в единстве и показывает угол, который я хочу.
Проблема может быть видна из приведенного выше изображения, а именно, что направления не находятся на одной высоте, поэтому я не могу использовать функцию vector3.angle, поскольку она не даст мне правильного значения угла.
В сущности, я хочу знать, сколько мне придется поворачивать красную линию влево (вид сверху), чтобы она соответствовала синему (вид сверху).
Причина, по которой я нуждаюсь в этом, — это то, что я пытаюсь найти способ получить боковые стороны пальцев от моего датчика движения прыжка.
Он предоставит более конкретную информацию о проблеме, если вам это нужно, и у вас есть более конкретные скриншоты.
** ОБНОВЛЕНИЕ: после повторного чтения моего вопроса я вижу, что это не было особенно ясно, поэтому здесь я, надеюсь, сделаю это более ясным. Я пытаюсь вычислить угол пальца от данных отслеживания движения прыжка. В частности, угол пальца относительно пястной кости (кость сзади). Легкий способ продемонстрировать, что я имею в виду, — это переместить указательный палец бок о бок (т.е. В сторону большого пальца, а затем далеко от большого пальца).
Я надеюсь, что я приведу две диаграммы ниже.
Синяя линия следует за пяточной костью, которую ваш палец будет выстраиваться в положение покоя. То, что я хочу рассчитать, — это угол между синей и красной линиями (отмечен зеленой линией). Я не могу использовать Vector3.Angle, так как это значение также учитывает изгиб пальца. Мне нужно каким-то образом «сплющить» направление пальца, по сути игнорируя изгиб и просто глядя на угол сбоку. Вторая диаграмма, надеюсь, покажет, что я имею в виду.
На этой диаграмме: синяя линия представляет собой фактическое направление пальца (взято из проксимальной кости — сустава к первому суставу). Зеленая линия представляет направление пяточной кости (направление, сравниваемое с). Красная линия представляет то, что я хотел бы «преобразуйте» синюю линию, сохраняя ее боковым углом (как видно на первой диаграмме).
Также стоит упомянуть, что я не могу просто всегда смотреть на оси x и z, так как эта рука будет вращаться.
Надеюсь, это поможет разобраться в этом и по-настоящему оценить помощь, полученную до сих пор.
Видео:Unity/C# Векторы, модуль, направлениеСкачать
Расчет фактического угла между двумя векторами в Unity3D
есть ли способ рассчитать фактический угол между двумя 3D-векторами в единстве? Метода Vector3.Угол дает самый короткий угол между двумя векторами. Я хочу знать фактический угол, рассчитанный по часовой стрелке.
Видео:Unity Как узнать угол между двумя объектамиСкачать
3 ответов
это должно быть то, что вам нужно. a и b являются векторами, для которых вы хотите рассчитать угол, n будет нормалью вашей плоскости, чтобы определить, что вы называете «по часовой стрелке / против часовой стрелки»
для простоты я использовать Vector3.Angle а затем вычислить знак от величины угла между плоскостью нормальной n и поперечное произведение (перпендикулярный вектор) a и b .
Это легко, если вы просто использовать сложение и вычитание. Посмотрите на это:
вот что я имею в виду: если мы по часовой стрелке и угол отрицательный, например -170 чтобы сделать его 180, вы используете это уравнение. «180-|угла|+180» вы уже знаете, что угол отрицательный, поэтому используйте «180 — (- angle)+180» и добавьте 180 «360 + angle». Тогда, если по часовой стрелке,дальше но если это против часовой стрелки, сделайте угол отрицательным, это потому, что другая часть угла 360 (это комплимент 360 + угол) — это «360 — (360 + угол)» или «360 — 360 — угол» или «(360 — 360) — угол» и, опять-таки, или «угол». Ну вот и все. ваш законченный угол.
попробуйте использовать Vector3.Angle(targetDir, forward);
Так как вы хотите самый короткий угол между ними, то, если возвращаемое значение больше 180 градусов, просто вычесть 360 градусов с этим значением.
Видео:Угол между векторами | МатематикаСкачать
DenTNT.trmw.ru
Видео:Unity C#. Quaternion Angle. Справочник. Мусин Михаил.Скачать
Записная книжка
Видео:Unity/C# Вектора: скалярное произведение и векторное произведение векторовСкачать
Unity: Операции с векторами
В одном из проектов мне встретился такой код:
здесь transform.forward представлен как Vector3,
moveSpeed и Time.deltaTime — float
Т.е. тут идет умножение ненулевого ВЕКТОРА на число. Поскольку я учился на физмате, то сейчас у меня чуть не съехала крыша, когда я пытался вспомнить все то, что я знаю о векторах, ведь если вернутся к математике, формула выше решается так:
Произведение ненулевого вектора на число — это вектор, коллинеарный данному (сонаправленный данному, если число положительное, имеющий противоположное направление, если число отрицательное), а его модуль равен модулю данного вектора, умноженному на модуль числа. OnlineMSchool
К счастью, до того, как окончательно треснул мой череп, я успел понять, что Vector3 в Unity — это не совсем ВЕКТОР (отрезок, имеющий направление), здесь это прежде всего КООРДИНАТЫ x, y для Vector2 и x. y, z — для Vector3. Хотя наверное на вектор это похоже, т.к. начало его лежит в точке 0.
В документации Unity есть несколько статей про операции с векторами:
1. Понимание векторной арифметики
2. Направление и расстояние от одного объекта до другого
3. Вычисление нормали/перпендикуляра
4. Величина одного вектора, лежащая в направлении другого вектора
🎦 Видео
Unity C#. Vector3 Lerp. Справочник. Мусин Михаил.Скачать
Векторы и Манипуляции с ними, Vector3 - Unity урокиСкачать
Вращение, углы Эйлера, Кватернионы в UnityСкачать
Unity C#. Vector3 Angle. Справочник. Мусин Михаил.Скачать
Вектора в Unity. Простое объяснение за 20 минут! Часть (1/2)Скачать
Как находить угол между векторамиСкачать
Урок по Unity3D Дистанция между двумя объектамиСкачать
Угол между векторами. 9 класс.Скачать
Демонстрация работы векторной математики в UnityСкачать
ВСЕ про Quaternions в Unity - вращение объектовСкачать
Поворот объекта через углы Эйлера и кватернионы в Unity 3DСкачать
Unity Scripting API #2 - Класс Transform(позиция, угол поворота и масштаб объекта)Скачать
Unity 18 C# Урок 5 - Векторы и Манипуляции с ними, Vector3Скачать
Физика в Unity - 9. RaycastСкачать
Что такое Trigger и Collision | Взаимодействие объектов в UnityСкачать