|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
20.10.2015, 09:32 | #1 |
Регистрация: 20.10.2015
Сообщений: 3
|
Отображение дуги внутри прямоугольника в зависимости от расстояния между границами
Здравствуйте,
Есть задача, не могли бы подтолкнуть к решению -- в какую сторону мыслить? Имеем прямоугольник, координаты нижнего левого угла -- (0, 0), правого верхнего (ширина прямоугольника, высота прямоугольника). Внутри этого прямоугольника есть точка с определёнными координатами. Нужно нарисовать вокруг этой точки такой сегмент окружности с определённой длиной дуги. Вычислить внутренний угол сегмента и радиус окружности. Сейчас проиллюстрирую: Вот так. Как видно из рисунка, если сегмент на помещается в данной части экрана (к примеру слева внизу), то нужно найти такой радиус, чтобы он удовлетворял нашу длину дуги. Подскажите, в какую сторону копать? Заранее спасибо. Последний раз редактировалось ababagalamaga; 20.10.2015 в 12:18. |
20.10.2015, 11:59 | #2 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
Цитата:
например такого Код:
P.S. данный алгоритм является ИСКЛЮЧИТЕЛЬНО примерным и посему является НЕВЕРНЫМ(в нем есть НЕДОРАБОТКИ).
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 20.10.2015 в 12:07. |
||
20.10.2015, 12:34 | #3 | |
Регистрация: 20.10.2015
Сообщений: 3
|
Цитата:
Алгоритм примерно такой: 1. Проверяем, можно ли описать окружность с радиусом по умолчанию вокруг данной точки. 2. Если да, то описываем, заканчиваем работу. Если нет, то переходим к пункту 3. 3. Проверяем по оси Х: можно ли описать окружность. Если нет, то ищем начальный угол сегмента для отрисовки, внутренний угол сегмента, вычисляем на основании угла радиус. 4. Проверяем по оси У: можно ли описать окружность. Если нет, то ищем начальный угол сегмента для отрисовки, внутренний угол сегмента. Если в пункте 3 не удалось описать окружность, то находим пересечение углов из 3 и 4 пунктов. Вычисляем на основании угла радиус. 5. Если удалось описать окружность в третьем пункте и не удалось в 4, то повторяем четвёртый пункт, но только с осью Х. 6. Имеем начальный угол для отрисовки, внутренний угол сегмента, радиус окружности. Рисуем сегмент. Только проблема в том, что радиус напрямую зависит от угла, который в свою очередь зависит от радиуса. Если мы не может описать окружность ни по оси Х, ни по У, то выливаются некоторые погрешности из-за того, которые решаются множеством итерация, в которых вычисляются внутренний угол и радиус. Только это уже не алгоритм, а говно. То, что я написал выше -- тоже попахивает, да только итерации это совсем уж не решение проблемы. Именно поэтому я пришёл сюда спросить: куда копать в данном случае? Последний раз редактировалось ababagalamaga; 20.10.2015 в 12:36. |
|
21.10.2015, 11:30 | #4 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
0. имеется идеальная дуга. (заданная размерами радиус + угол и направлением )
1. Она может поместиться в прямоугольник или же нет. 2. если поместилась, то все хорошо. 3. если не поместилась, то ее можно как-то поворачивать.(менять направление) 4. если после какого-то поворота, она поместилась то все опять таки хорошо. 5. если не поместилась (такое может быть в углу), то ее придется сжать(уменьшить её угол и увеличив радиус) КАК узнать ее новые габариты? она(новая дуга) в углу и ее концы упираются В две угловые стороны прямоугольника. что нам известно l требуемая длина дуги a1, a2 расстояния от центра дуги до двух интересующих нас сторон Цитата:
прилежащие углы дополняют угол дуги до 3/4 полного(2pi) итого есть система 2.JPG внимание! ai =rai читать как ai =r*cos(ai) второе и третье уравнения. решаем и получаем новые ПАРАМЕТРЫ дуги. 6. НО может и так случиться (при очень узком прямоугольнике) что мы не сможем увеличить радиус. в этом случае надо наоборот увеличить угол, чтобы уменьшить радиус. причем в этом случае нам известен новый максимальный радиус (это расстояние до какой-то стены). вычисляем новые ПАРАМЕТРЫ дуги. 7.если нам до сих пор не удалось, ТО видимо уже ничего не поделаешь. P.S. (такое) является дополнительным условием к если. если ... и (такое), то
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 21.10.2015 в 11:35. |
|
19.11.2015, 00:33 | #5 |
Регистрация: 20.10.2015
Сообщений: 3
|
Огромное спасибо за помощь, без Вас бы не справился.
Тему можно закрывать |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
stringgrid (delphi) - найти цену билета в зависимости от расстояния | Падаван | Помощь студентам | 3 | 05.12.2013 11:49 |
Поиск расстояния между двумя точками | owl1n | C# (си шарп) | 8 | 02.11.2013 12:47 |
Формула расстояния между координатами | DarkPower | Общие вопросы C/C++ | 2 | 12.09.2012 21:14 |
Задача в Exel (стоимость билета в зависимости от расстояния) | Phill | Помощь студентам | 9 | 30.11.2010 00:20 |
кратчайшие расстояния между вершинами | pum-pum-pum | Помощь студентам | 1 | 07.01.2010 11:30 |