Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: Движение прямоугольника по окружности  (Прочитано 59501 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #30 : 10-06-2011 06:32 » 

Ну подытожим.

Совершенно очевидно, что на горизонтальных участках - где одна из сторон прямоугольника является касательной - это будут прямые отрезки.
Также можно доказать, что соединяющие их дуги не являются фрагментами одного эллипса, описанного вокруг окружности. Ну и ессно достаточно рассмотреть только один квадрант, все остальные будут зеркально симметричными.

У меня просто ща туго со временем, чтобы посидеть над ней. Пока решил так. В областях "дуг" построение прямоугольника делается не из центра, а от точки (угла) касания окружности для каждого из квадрантов. Угол смещения вектора от направления на центр определяется в крайних горизонтальных и вертикальных положениях. Те я сначала определяю в каком диапазоне находится заданный угол. Если он больше угла области скольжения, то вычисляется точка на окружности для угла данный - угол скольжения, из этой точки строится прямоугольник, например, для первого квадранта вправо вверх, для второго влево вверх и тд.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #31 : 10-06-2011 06:49 » 

углы можно найти


* 1_3.PNG (26.87 Кб - загружено 2345 раз.)
Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #32 : 10-06-2011 08:12 » 

В каждой четверти окружности прилегающая вершина описывает дугу в 90 градусов, совпадающую с этой четвертью (0..90..180..270..360).

Координаты центра прямоугольника:

Для четверти 1:
x=R*sin(B) + a/2
y=R*cos(B) + b/2

Для четверти 2:
x=R*sin(B) + a/2
y=R*cos(B) - b/2

Для четверти 3:
x=R*sin(B) - a/2
y=R*cos(B) - b/2

Для четверти 4:
x=R*sin(B) - a/2
y=R*cos(B) + b/2

Обобщенно:
x=R*sin(B) + sgn(sin(B)) * a/2
y=R*cos(B) + sgn(cos(B)) * b/2



Итого.

Углы совпадения функций кругового и прямолинейного движения:
B1 = atn(b/2 / (R + a/2))
B2 = atn(a/2 / (R + b/2))

Горизонтальное движение:
B = (-B1..B1) + PI * (0, 1).
AC = (R + b/2) / abs(cos(B))

Вертикальное движение:
B = (-B2..B2) + PI * (0.5, 1.5).
AC = (R + a/2) / abs(sin(B))

Круговое движение:
B = (B1..B2) + PI * (0, 0.5, 1, 1.5).
AC = sqrt((R*sin(B) + sgn(sin(B)) * a/2)^2 + (R*cos(B) + sgn(cos(B)) * b/2)^2)
« Последнее редактирование: 10-06-2011 08:19 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #33 : 10-06-2011 09:34 » 

Лёш, ещё вчера нашёл. Ага

Ром, посмотрю попозже, если время будет. Хотя дизайн опять поменяли - теперь тексты располагаются на окружности. Это я уже сделал, но сегодня опять мыло поулчили, что будут новые significant changes. Короче сделаю контрол опционально. Шеф сидел вчера весь день (это вобще-то его контрол) и сегодня всю ночь. Вроде чего-то наделал. Вчера вечером показал страшную формулу, но потом сказал, что она работает только для 75°.
У меня время только в поезде было. Ну сделал набросок для одной четверти для движения по дуге, типа:



Собственно для чего это надо. Есть некая круговая диаграмма, мы её называем "радар". Она состоит из секций объединённых в кластеры. Вот "подпися" к этим кластерам и надо сделать. Так он выглядит сейчас:




В первой версии (шеф перед отпуском делал) чегойн-то намудрил.



При изменении размеров контрола они разбегались кто куда. Ну и поскольку никто не знает, что день грядущий нам готовит, решили сделать опционально оба варианта.

* ss1.gif (13.88 Кб - загружено 2194 раз.)
* 123.png (108.21 Кб - загружено 2156 раз.)
* 456.png (131.03 Кб - загружено 2102 раз.)
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #34 : 10-06-2011 09:36 » 

да тут не нужна страшная формула. Можно тупо разбить угол на 12 участков , 4 из них - кусок окружности, остальные - линия. Эта функция вернёт нужное значение для любого угла
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #35 : 10-06-2011 09:38 » 

Лёш, на 8. Ага Такая ф-я называется кусочной.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #36 : 10-06-2011 09:41 » 

Джон,  я тут рисунок смотрю, всё же гораздо проще. По углу определить, какой угол касается (кроме участков с отрезками, см. предыдущий пост), затем из центра окружности продолжить луч под таким углом. Где он пересечётся сокружностью - оттуда как нужно отложить прямоугольник

Добавлено через 21 секунду:
Лёш, на 8. Ага Такая ф-я называется кусочной.
ну да, это я квадрант умножил ))

Добавлено через 10 минут и 6 секунд:
Джон, вот ещё мысль Улыбаюсь

по сути, тут вот что: берётся окружность, вычисляются координаты точки на ней для угла:

1)
x=R*cos(B)
y=R*sin(B)

2) затем, в зависимости от направления прибавляется a/2 и b/2 к нужной координате

3) Но для участков, где угол 1 или 3 нужно осевую координату зафиксировать (R+a/2 или R+b/2)


« Последнее редактирование: 10-06-2011 09:51 от Алексей1153 » Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #37 : 10-06-2011 09:52 » 

Лёш, внимательно прочитай мой #30. Ага
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #38 : 10-06-2011 09:52 » 

Вот эксельчик для игрищ.

Выбор формулы определяется не углом, а минимумом!

* Хитрый задачка - Джон.xls (145 Кб - загружено 1006 раз.)
« Последнее редактирование: 10-06-2011 09:56 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #39 : 10-06-2011 09:53 » 

Координаты центра прямоугольника:

Для четверти 1:
x=R*sin(B) + a/2
y=R*cos(B) + b/2



Ром, для икса должен быть косинус , у тебя наоборот вышло

Добавлено через 56 секунд:
Джон, да, не заметил ) Ну это самое простое и правильное решение как раз
« Последнее редактирование: 10-06-2011 09:54 от Алексей1153 » Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #40 : 10-06-2011 09:57 » new

Нифига, Леш.  Что, съел?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #41 : 10-06-2011 09:59 » 

Рома



смотри, где косинус угла отложен Улыбаюсь

нам эту диаграмму в универе вбили накрепко
Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #42 : 10-06-2011 10:15 » 

Леш, тут смотря откуда ты угол считаешь. Я считаю от оси Y по часовой.
В мире все относительно. Улыбаюсь
Ты считаешь от горизонтали-справа вверх, а я азимутально.
« Последнее редактирование: 10-06-2011 10:17 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #43 : 10-06-2011 10:17 » 

А, ну ежели так Улыбаюсь

Только у Джона угол показан именно так, как на диаграмме.
Записан

Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #44 : 10-06-2011 10:21 » 

ребятки! вы пытаетесь построить кривую в декартовой системе, а надо попытаться построить ее в полярных координатах. (так мне каааажеца)
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #45 : 10-06-2011 10:25 » 

да ну, в полярной это будет гораздо сложнее
Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #46 : 10-06-2011 10:59 » 

Ничуть. В файлике я как раз от угла расчеты делаю. (пост №38)

AB = f(B)
« Последнее редактирование: 10-06-2011 17:12 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines