| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Програмное определение направления вращения момента

Програмное определение направления вращения момента

Ответ
Поиск в этой теме
Непрочитано 15.04.2009, 17:32 #1
Програмное определение направления вращения момента
Eximius
 
аспирант
 
Волгоградская область
Регистрация: 17.12.2008
Сообщений: 49

Здравствуйте уважаемые форумчане.
Мне необходима функция, которая програмно определяет момент по заданной силе, двум точкам задающим силу и точке относительно которой нужно посчитать момент. С расчетом самого значения момента проблем не возникает: сначала вот такая короткая функция определения расстояния от точки до прямой, куда я передаю точки силы и точку относительно которой считать момент:
Код:
[Выделить все]
(defun rastpr (po t1 t2)
  (distance po (inters t1 t2 po (polar po (+ (angle t1 t2) (/ pi 2)) 20) nil))
)
Далее считаю момент так:
Код:
[Выделить все]
;---------=========================Считает момент силы=========================----------
(defun moment (silad ts1 ts2 plus);silad - значение силы в Н t1, t2 точки силы t1 - откуда вектор силы выходит t2 - куда вектор попадает
  ;plus - точка относительно которой считается момент
  (if (> (angle plus ts2) (angle plus (inters ts1 ts2 plus (polar plus (+ (angle ts1 ts2) (/ pi 2)) 20) nil)))
    (* silad (rastpr plus ts1 ts2))
    (* silad (rastpr plus ts1 ts2) -1)
  );end of if
)
которая вроде бы считает момент, но знак момента (должен быть минус, если по часам), возвращает неправильно, особенно если точки силы попадают одна в 1-ю другая в 4-ю четверти, или наоборот.
Помогите разобраться со знаками моментов, а то с клавиатуры так лень будет вводить
Просмотров: 3459
 
Непрочитано 15.04.2009, 18:52
#2
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Так пойдет?
Код:
[Выделить все]
(defun clockwise-p (p1 p2 p3)
;;;;;; Clockwise-p
;;;;;; Returns T if p1 p2 and p3 are clockwise
  (< (sin (- (angle p1 p3) (angle p1 p2))) -1e-14)
)
Пример
Код:
[Выделить все]
;;;Пример
(defun C:TEST()
  (and
    (setq p1 (getpoint "\nТочка от которой направлена сила:"))
    (setq p2 (getpoint "\nТочка куда направлена сила:"))
    (setq p3 (getpoint "\nТочка относительно которой считеатся момент:"))
    (if (clockwise-p p1 p2 p3)
      (alert "Момент положительный \n (по часовой)")
      (alert "Момент отрицательный \n (против часовой)")
      )
    )
  )
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 15.04.2009, 21:25
#3
Eximius

аспирант
 
Регистрация: 17.12.2008
Волгоградская область
Сообщений: 49
Отправить сообщение для Eximius с помощью Skype™


Благодарю, VVA. Работает как надо.
Сразу и в голову не пришло, что можно через тригонометрию попробовать.
Eximius вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Програмное определение направления вращения момента

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение момента ветровой нагрузки obidenov Расчетные программы 3 31.03.2009 16:04
Определение момента в колонне Nastya.Ti Конструкции зданий и сооружений 6 29.03.2009 18:57