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

Программирование в 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 пользователей

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




  • Сообщения

    • maxx2000
      Да вот так ему хочется. Вот такие гады разработчики. Небось и в мануале всё это описали. Я негодую вместе с тобой.
    • Максим604
      Поэтому и вопрос. почему шопмилл подачу меняет, когда пишешь через него(макропеременые), а когда через G код не меняется. как шопмилл просчитывает новую подачу я понимаю, но не понимаю как прравильно и почему именно так правильно, а не наоброт. почему шопмилл переводит подачу с движения по траектории на движение по центру?     
    • Snake 60
      Так а зачем, если вот эта кнопка  сохраняет все детали и подсборки входящие в нее: При желании можно повесить на горячую кнопку через Настройка-Клавиатура Или пересохранить имеется ввиду создать копию с новым именем? Если да, то для этих целей я бы посоветовал крутой макрос с именем Коперник от @tompsongun См. пост выше.
    • maxx2000
      ну хотя бы то что одна написана через макропеременные, вторая в джи кодах. Ты считаешь что при одинаковом результате у них одинаковые алгоритмы?  
    • Максим604
      А что должно смущать?
    • maxx2000
      Ничего не смущает?
    • Максим604
      разные уп, но смысл одинаковый. в первом варианте подача меняется, во втором сохраняется.   Это то что не устраивает   M0 E_MI_TR(1,0,0,"REZBA_D11.9_P2_VARGUS","",1,0.05,2,50,2,1297,-16.2,91,2,10,14,1.0826,1.083,0.1,0,3,0.03937,0.31831,,,,1,0,"ISO_METRIC","M14");*RO* E_MI_TR(1,0,0,"REZBA_D11.9_P2_VARGUS","",1,0.05,2,50,2,1298,-16.2,91,2,10,14,1.0826,1.083,0.1,0,3,0.07874,0.63662,,,,-1,0,"ISO_METRIC","M14");*RO* _E_P002: E_PS_CIR(1,0,0,-14,90,0,,0,,102.5,12.857,30,8,10,0,,);*RO* CALL "END.SPF";#SM;*RO* E_END(0,1,0);*RO* M30 ;#SM;*RO* _____________________________________________   это устраивает N104 T=" ФРЕЗ. РЕЗЬБЫ - 12" N106 M6 N108 G0 X0. Y0. S1326 M3 D1 N110 Z50. N112 Z5. N114 G1 Z-25. F198.9 N116 G41 Y-4.95 N118 G3 X9.95 Y0. Z-24.5 I3.74372 J4.95 N120 Z-22.5 I-9.95 J0. N122 Z-20.5 I-9.95 J0. N124 Z-18.5 I-9.95 J0. N126 Z-16.5 I-9.95 J0. N128 Z-14.5 I-9.95 J0. N130 Z-12.5 I-9.95 J0. N132 Z-10.5 I-9.95 J0. N134 Z-8.5 I-9.95 J0. N136 Z-6.5 I-9.95 J0. N138 Z-4.5 I-9.95 J0. N140 Z-2.5 I-9.95 J0. N142 Z-.5 I-9.95 J0. N144 X0. Y9.95 Z0. I-9.95 J0. N146 X-4.95 Y0. Z.5 I0. J-6.20628 N148 G1 G40 X0.
    • sklide008
      Да точно, подзабыл уже все. а можно ли горячими клавишами открыть деталь из сборки и пересохранить не открывая деталь?
    • maxx2000
      наверное пришло время выложить программу которая устраивает и которая не устраивает
    • Максим604
      Резьбу фрезерует. Просто выходит что подача меняется в разы.    Писал в мастеркаме  и крео. Там всё понятно. Подача=обороты*кол-во зубьев*подача на зуб. И с такой скоростью режет.    А когда пишешь через шопмилл ( стойка синумерик). То подача меняется от написаной
×
×
  • Создать...