Форум программистов, компьютерный форум, киберфорум
Java: GUI, Графика
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 11.02.2017
Сообщений: 212
1

Угол между векторами

21.01.2021, 15:01. Просмотров 1982. Ответов 3
Метки нет (Все метки)

Java LWJGL3.2.3 OpenGL
1.Есть два единичных вектора вектор1 и вектор2. Как найти угол между ними в радианах по осям x,y,z?
2.Формула предполагает
cos α =a·b /|a|·|b|
как в Java вычислить модуль вектора Vector3f?
3. Как получить Quaternionf для поворота на основе этого? Нужно ли устанавливать кватернион для каждой оси а потом перемножать их?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.01.2021, 15:01
Ответы с готовыми решениями:

Java. Найти скалярное произведение и угол между двумя векторами (подпрограммы)
Доброго времени суток! Моя задача состоит в том, чтобы в двух подпрограммах найти скалярное...

Вычисление векторного произведения и вычисления угла между векторами
написать программу для вычисления векторного произведения и вычисления угла между векторами

Известны ориентированные углы между векторами: угол(АВ,АС)=120 и угол (АВ,АД)=-60. Определите угол (АС,АД)
Известны ориентированные углы между векторами: угол(АВ,АС)=120 и угол (АВ,АД)=-60. Определите угол...

Угол между лучами. Угол между векторами. Решение треугольника.
1. Найдите угол между лучом ОД и положительной полуосью OX , если Д(-2;2). 2. Решите треугольник...

3
0 / 0 / 0
Регистрация: 11.02.2017
Сообщений: 212
22.01.2021, 09:13  [ТС] 2
Беда, не могу понять как повернуть
0
Модератор
1418 / 419 / 139
Регистрация: 11.08.2017
Сообщений: 1,430
22.01.2021, 12:57 3
Лучший ответ Сообщение было отмечено EugeneV как решение

Решение

EugeneV, Тут ничего сложного нет, школьный курс геометрии и базовые знания библиотеки joml
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        Vector3f v1 = new Vector3f(4, 0, 0);
        System.out.println("v1: " + v1);
        System.out.println("Length: " + v1.length());
        Vector3f vn = new Vector3f();
        v1.normalize(vn);
        System.out.println("vn: " + vn);
        System.out.println("Length: " + vn.length());
        Vector3f vn2 = new Vector3f(0, 1, 0);
        System.out.println("vn2: " + vn2);
        System.out.println("Length: " + vn2.length());
        Vector3f v2 = new Vector3f(0, 5, 0);
        System.out.println("v2: " + v2);
        System.out.println("Length: " + v2.length());
        System.out.println("Angle (vn, vn2): " + Math.toDegrees(vn.angle(vn2)));
        System.out.println("Angle (v1, v2): " + Math.toDegrees(v1.angle(v2)));
        System.out.println("Cos (vn, vn2): " + vn.dot(vn2));
        System.out.println("Arccos (vn, vn2): " + Math.toDegrees(Math.acos(vn.dot(vn2))));
Если вектора единичные (то есть нормализованы), то их длины равны 1. Нормализация это метод .normalize() а нахождение длины метод .length() оба метода есть у всех векторов (Vector2f, Vector3f, Vector4f и тд). В числителе дроби стоит скалярное произведение векторов, метод .dot(vec in) возвращает число, но есть еще готовый метод который находит угол между векторами .angle(vec in) который тоже возвращает число, равное углу между векторами в радианах

С кватернионами не сталкивался и нету жедания в них влезать, мне и углов Эйлера хватает, а вообще для поворота стоит использовать матрицы поворота, желательно в шейдерах, передавая в них матрицу модели. А в программе работать с моделью в локальных ее координатах
1
0 / 0 / 0
Регистрация: 11.02.2017
Сообщений: 212
22.01.2021, 17:05  [ТС] 4
Если долго мучаться что-нибудь получиться:-) Без кватернионов все четко получилось. Спасибо
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.01.2021, 17:05

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Угол между векторами
найти угол между векторами 2а и в, если угол между векторамы а б = 40 градусов

Угол между векторами
2. Заданы векторы a (-1, 2, 0) и j (0, 1, 0). Вычислить: Cos (a^j). (Ответ: 2/√5).

Угол между векторами
Правила, 5.18. Запрещено размещать задания и решения в виде картинок и других файлов с их текстом.

Угол между векторами
Написать программу, которая высчитывает угол между векторами a и b a=(x1,y1) b=(x2,y2)

Угол между векторами
Даны два вектора: a=(x1,y1) b=(x2,y2) Написать функцию, которая высчитывает угол между векторами...

Угол между векторами
помогите пожалуйста,очень срочно нужно:help: Найти угол между векторами A(n) и B(n) используя...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.