Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2010, 20:49   #1
evg08
Новичок
Джуниор
 
Регистрация: 22.09.2010
Сообщений: 3
По умолчанию Расчет угла поворота

Здравствуйте.
Требуется найти угол поворота моста(Мостом на картинке обозначена линия).Мост может двигаться по часовой стрелке на 190 градусов и против часовой на 190 градусов.С обоих сторон моста стоят датчики,они показывают координату данной стороны моста в мм ,т.е сколько мм проходит сторона моста от начала координат- 0 градусов.Радиус известен,т.о нам известен какой угол пройден стороной моста от начала координат.Но задача состоит найти реально пройденный угол.
Например,сторона x1 повернулась на 190 градусов против часовой стрелки(рис.2)(тот угол ,который и нужно нам найти),а по расчетам получится,что угол равен 170 градусам.
Еще есть условие,что когда сторона моста проходит ноль градусов срабатывает датчик(устанавливается в 1),при повторном прохождении стороной моста сбрасывается.
Необходимо найти реально пройденный угол моста.Спасибо.
Ниже привожу код,как я придумала это реализовать.
Но дело в том ,Что все у меня получается очень частно,а нужно в общем виде и для любого максимального угла поворота моста не обязательно 190 градусов,а может и 390.

Код:
x1: REAL; //длина дуги 1 (мм)
  x2: REAL; //длина дуги 2 (мм) 
  t:=pi/180;   
  //вычисление углов
  angle1 := x1 / rad;
  angle2 := x2 / rad;
  ////если датчик номера оборота активен
  IF TurnDirection THEN          
    IF x2<x1 then
    //x2 прошел 190 по часовой
    angle1:=angle1;
    angle2:=angle2+180*t;
    END_IF;
    IF x2>x1 then
    //x2 прошел 190 против часовой
    angle1:=-(360*t-angle1);
    angle2:=angle2-540*t;//(angle2-180*t)-360*t;
    END_IF;
 ELSE//если датчик номера оборота не активен
  IF x2<x1 THEN
    //x2 против 190 по часовой
    angle1:=-(360*t-angle1);
    angle2:=-(180*t-angle2);
  END_IF;
  IF x2>x1 THEN
     //x2 прошел 190 по часовой
    angle1:=angle1;//110
    angle2:=angle2-180*t;//290-180
  END_IF;

  END_IF;
               //Вычисление угла моста
   Bridge_Angle:= (angle1+ angle2)/2;
        //Вычисление фактического положения центра моста
Изображения
Тип файла: jpg 1.jpg (42.8 Кб, 141 просмотров)
Тип файла: jpg 2.jpg (42.6 Кб, 130 просмотров)

Последний раз редактировалось Stilet; 23.09.2010 в 10:39.
evg08 вне форума Ответить с цитированием
Старый 23.09.2010, 22:44   #2
evg08
Новичок
Джуниор
 
Регистрация: 22.09.2010
Сообщений: 3
По умолчанию

Например,мост был в начальном положении (рис 1): х1 в положении 0 градусов,х2 в положении 180 градусов.Далее он повернулся на некий угол по часовой стрелке,что x2 стал в положение 10 градусов от начала координат -0 градусов,а x1 в положение 190 градусов.
Если посмотреть по картинке,то сторона x2 повернулась совсем не на 10 градусов,а на 190,как и сторона x1.вот нужно и найти реальны углы поворота сторон моста,т.е в данном случае этот угол равен 190.
evg08 вне форума Ответить с цитированием
Старый 24.09.2010, 09:08   #3
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Мне конечно странно, что у вас угол откладывается по часовой стрелке, ну да ладно.

Цитата:
Но дело в том ,Что все у меня получается очень частно,а нужно в общем виде и для любого максимального угла поворота моста не обязательно 190 градусов,а может и 390.
Поясните еще, evg08, я не понял, как мост может повернутся на 390º. В вашем же условии сказано
Цитата:
Мост может двигаться по часовой стрелке на 190 градусов и против часовой на 190 градусов
Sibedir вне форума Ответить с цитированием
Старый 24.09.2010, 23:34   #4
evg08
Новичок
Джуниор
 
Регистрация: 22.09.2010
Сообщений: 3
По умолчанию

Мост может крутиться на 190 градусов туда и обратно.
Про 390 градусов я имела ввиду как написать нечто универсальное ,независимое от максимального угла поворота,будь то максимальное движение на 190 туда и обратно или 390 туда и обратно.
А про движение по часовой это было сказано для примера.


Меня интересует такой вопрос как бы так изловчиться,чтобы не использовать в расчетах углов такого типа вычисления(т.к мы получаем значения в мм ,которое проходит сторона моста и оно каждый раз ,например при углах в 10 и 190 градусах,проходимых стороной моста одинаковое):

angle1:=-(360*t-angle1);
angle2:=-(180*t-angle2);


Т.е константы 360 градусов в радианах и т.п.
Есть еще датчик в нуле,который меняет свое состояние (о или 1) при переходе стороны моста через него(на базе этого и строятся вычисления углов).
И еще сделать это универсальным для любого угла поворота,не обязательно для максимального 190 градусов,а может и больше,например для 390 градусов.
evg08 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Угол поворота KoBRaAndrey Общие вопросы Delphi 7 29.08.2010 18:08
Биссектрисса угла треугольника Igoressicus Помощь студентам 3 19.05.2010 09:20
Программа динамического поворота 3D-графика функции (delphi) Казанцев Андрей Помощь студентам 2 13.04.2009 19:57
Процедура поворота изображения Илья PHoeNiX Общие вопросы Delphi 3 08.06.2008 13:59