Перейти к публикации

Программирование в NX. Определение направления измерения угла.


irina

Рекомендованные сообщения

Здравствуйте,

Подскажите как решить задачу, связанную с определением направления измерения угла между двумя векторами (против часовой стрелки или против).

Угол определяю след. образом:

 

UF_VEC3_cross(dir1, dir2, ccw);

UF_VEC3_angle_between(dir1, dir2, ccw, &angleRad);

 

Получаю значение угла. Теперь нужно в зависимости от направления измерения поставить "+" если вращение по часовой стрелке,  либо "-"  - если против. Подскажите как мне понять  это направление?

Ссылка на сообщение
Поделиться на других сайтах


По правилу "правой руки". Большой палец вдоль положительного направления оси вращения. Сгиб указательного и среднего пальцев указывает на положительное значение угла.

Ссылка на сообщение
Поделиться на других сайтах

UF_VEC3_angle_between - специально для этого и сделана, и именно для определения направления третий вектор вводится. Угол всегда от 0 до 360, и исходя из этого, и из того, что смотришь на два вектора с кончика третьего - вот и вычисляй направление.

Ссылка на сообщение
Поделиться на других сайтах

Я не знаю как вычислить направление, поэтому и прошу помощи. Если возможно приведите пример как это сделать

Ссылка на сообщение
Поделиться на других сайтах

Сделай три вектора
 
1. double v1[3] = {200.0, 10.00, 0.0};
2. double v2[3] = {2.000, 100.0, 0,0};
 
Эти два на бумажке карандашиком для себя нарисуй. В масштабе, на глазок. 
 
3. double v3[3] = {0.0, 0.0, 1.0} ; - это ссылочный вектор, на его острие ты "сидишь" и смотришь на первые два и поворот от первого ко второму будет ПРОТИВ часовой стрелки, как и положено в аналитической геометрии. Сидишь на Z, смотришь на X и Y, и поворот от Х к Y - против часовой.
 
Засовываешь свои векторы в функцию.

UF_VEC3_angle_between (v1, v2, v3, &angle );
 
Порядок имеет значение для v1 и v2.
 
И смотри на возвращенный угол, который означает, что чтобы получить вектор v2 нужно v1 повернуть ПРОТИВ часовой стрелки на именно этот угол. Угол меньше PI? Отлично, значит кратчайший поворот от v1 к v2 - против часовой стрелки.
 
Еще раз вызови функцию:

UF_VEC3_angle_between (v2, v1, v3, &angle );

 

О-па! А угол-то другой, и уже сильно больше PI. Значит, против часовой - длинный путь, и от v2 к v1 кратчайший поворот - по часовой.

 

Не благодари меня.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...