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

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

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2009, 12:22   #1
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию Есть ли тут конструктора - как рассчитывается инволюта?

Люди кто знаком с конструированием выручайте не вьеду откуда эвольвентная функция берет значения, есть вот такая формула
inv=tan(a)-a
так вот я никак не пойму что это за "а", как оно рассчитывается?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.02.2009, 12:43   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

http://www.bru.mogilev.by/students/m..._TMM/part5.htm
Пункт 5.5 УРАВНЕНИЕ ЭВОЛЬВЕНТЫ В ПОЛЯРНЫХ КООРДИНАТАХ

Еще вот тут можно почитать:
http://www.info.instrumentmr.ru/inst...l_koles2.shtml

Последний раз редактировалось mihali4; 24.02.2009 в 12:46.
mihali4 вне форума Ответить с цитированием
Старый 24.02.2009, 13:03   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Эх... это я прокачал...
Вот трабла млин не пойму где бока - считаю вродь правильно но с табличными данными н сходится... формула то плевая...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.04.2009, 04:17   #4
April
Новичок
Джуниор
 
Регистрация: 10.04.2009
Сообщений: 2
Хорошо

inv=tan(a)-a - формула верная . Только угол нужно в радианах писать, а не в градусах. Перевод угла из градуса в радианы осуществляется по формуле Ar = Ad * пи / 180, Где Ad — угол в градусах, Ar — угол в радианах.
April вне форума Ответить с цитированием
Старый 10.04.2009, 04:23   #5
April
Новичок
Джуниор
 
Регистрация: 10.04.2009
Сообщений: 2
Радость

Например, inv(20)=tan(20*3.14159265/180)-20*3.14159265/180=0.01490438381, что соответствует табличному значению. (точнее будет, если Пи полное брать )
April вне форума Ответить с цитированием
Старый 10.04.2009, 08:18   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Угу. Я уж допер сам )
И обратное уже сделал - получение угла с минутами по инволюте. )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.10.2009, 00:44   #7
Lab
Новичок
Джуниор
 
Регистрация: 23.10.2009
Сообщений: 1
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Угу. Я уж допер сам )
И обратное уже сделал - получение угла с минутами по инволюте. )
Расскажите каким образом решили обратную задачу. Сам столкнулся, ищу оптимальное решение
Lab вне форума Ответить с цитированием
Старый 23.10.2009, 04:26   #8
Serg Belyaev
Пользователь
 
Аватар для Serg Belyaev
 
Регистрация: 22.01.2008
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Lab Посмотреть сообщение
Расскажите каким образом решили обратную задачу. Сам столкнулся, ищу оптимальное решение
Стандартными методами матанализа решение находится. Применяется инволюта при расчете зуборезного инструмента, например. Специально для них я включил её в свой "куркулятор" - можете посмотреть http://svb-sokoban.narod.ru/txc.htm
Всего доброго,
<SVB>
Serg Belyaev вне форума Ответить с цитированием
Старый 23.10.2009, 09:28   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот пример рассчета инволюты:
Код:
function involuta;begin alpha:=(alpha*(pi/180));result:=tan(alpha)-alpha; end;
involuta(20) даст 0,0149043838673364

А вот получение угла по инволюте:
Код:
// FUNCTION ********************************
  function InvolutaToGrad(Inva:double):double;
 function evoluta(Alpha:Double):double; begin result:=tan(alpha)-alpha; end;
var invmin,invmax,inv,g:Double;i:integer;
begin
invmin:=0;invmax:=-6.28318531;//evoluta(2*pi);
//g:=pi/2;inv:=evoluta(g);

g:=90;inv:=involuta(g);
if {(inva>invmin)or}(inva<invmax) then exit;
while (abs(inv-inva)>=0.000001)and(g>1) do begin
 if inv<inva then i:=1 else i:=-1;
 g:=g+i*(g/2);
 //g:=trunc(g)+(g-trunc(g))*60/100;
 //inv:={roundto(}involuta(g){,-7)};
 inv:=involuta(g); //evoluta(g);
end;
 //result:=radTodeg(g);
 result:=g;
 inv:=roundTo((result-trunc(result))*60/100,-2);
 if abs((inv*100)-60)<0.0001 then inv:=1;
 result:=trunc(result)+inv;
end;
// END FUNCTION ********************************
И вот результат InvolutaToGrad( 0.0149043838673364) даст 20 градусов
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переопределение конструктора формы daunito Общие вопросы Delphi 5 23.11.2008 01:58
Как проверить, есть ли файл? Dux Общие вопросы Delphi 3 02.04.2008 23:18
есть ли тут знатоки шарпа? Alek86 Общие вопросы .NET 3 26.09.2007 15:49