Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Расчет угла поворота, Расчет угла поворота 
:(
    Опции темы
evg08
Дата 22.9.2010, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 22.9.2010

Репутация: нет
Всего: нет



Здравствуйте.
Требуется найти угол поворота моста(Мостом на картинке обозначена линия).Мост может двигаться по часовой стрелке на 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;
//Вычисление фактического положения центра моста 

user posted image
user posted image

Это сообщение отредактировал(а) evg08 - 22.9.2010, 20:02
PM MAIL   Вверх
nmn
Дата 22.9.2010, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



Цитата(evg08 @  22.9.2010,  19:58 Найти цитируемый пост)

Например,сторона x1 повернулась на 190 градусов против часовой стрелки(рис.2)(тот угол ,который и нужно нам найти),а по расчетам получится,что угол равен 170 градусам.

"тот угол" и 190 градусов это одно и тоже?

Цитата(evg08 @  22.9.2010,  19:58 Найти цитируемый пост)
т.о нам известен какой угол пройден стороной моста от начала координат.Но задача состоит найти реально пройденный угол.

"известен какой угол пройден стороной моста" разве не равен "реально пройденный угол"?
PM Skype   Вверх
evg08
Дата 22.9.2010, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 22.9.2010

Репутация: нет
Всего: нет



Цитата

"тот угол" и 190 градусов это одно и тоже?

Да ,это одно и тоже.

Цитата

известен какой угол пройден стороной моста" разве не равен "реально пройденный угол"

Нет,они неодинаковые.
Например,мост был в начальном положении (рис 1): х1 в положении 0 градусов,х2 в положении 180 градусов.Далее он повернулся на некий угол,что  x2 стал в положение 10 градусов от начала координат -0 градусов,а x1 в положение 190 градусов.
Эти переменные показывают положение моста в мм:
Код

x1: REAL; //длина дуги 1 (мм)
x2: REAL; //длина дуги 2 (мм)

Известен радиус rad
Далее по 2 известным величинам вычисляем углы
Код

//вычисление углов
angle1 := x1 / rad;
angle2 := x2 / rad;

Если посмотреть по картинке,то  сторона x2 повернулась совсем не на 10 градусов,а на 190,как и сторона x1.вот нужно и найти реальный угол поворота моста.
PM MAIL   Вверх
nmn
Дата 22.9.2010, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



начальное положение моста какое?
датчики стоят в каких местах? в 0 и 180 или только в 0?
PM Skype   Вверх
evg08
Дата 22.9.2010, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 22.9.2010

Репутация: нет
Всего: нет



По идее начальное положение там ,где стоит датчик оборота ,т.е он является нулем,в данном случае получается,что в нуле,хотя начало измерительной ленты(мм),которая накладывается на круг может быть смещено и начинаться она будет совсем не в нуле.
Датчик только один.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0718 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.