![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 10.08.2010
Сообщений: 3
|
![]()
Нужно написать программу которая бы по заданным координатам рисовала n-угольник при нажатии одной кнопки, а при нажатии на другую кнопку внутри первого n-угольника на заданном растоянии рисовался идентичный ему n-угольник и чтобы все стороны внутреннего n-угольника были параллельны сторонам первого n-угольника. Пример для квадрата:
Код:
Последний раз редактировалось Stilet; 11.08.2010 в 08:52. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 16.08.2008
Сообщений: 276
|
![]()
А в чем проблема? Вот ты рисуешь полигон:
Код:
Код:
Искусственный интеллект - фигня по сравнению с естественной глупостью
|
![]() |
![]() |
![]() |
#3 | |
Новичок
Джуниор
Регистрация: 10.08.2010
Сообщений: 3
|
![]() Цитата:
Задача состоит не в том чтобы нарисовать пятиугольник а в том чтобы внутри одного многоугольника был нарисован второй причем на указанном растоянии и чтобы все стороны второго были параллельны сторонам первого как в примере |
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 16.08.2008
Сообщений: 276
|
![]()
Не знаю на сколько это будет уместно, но можно попробовать так:
1. Разрезаем многоугольник на четыре равные части (вдоль и поперек) Далее идем по четвертям: 1 Четверть: Все точки смещаем в низ и влево на K 2 Четверть: Все точки смещаем в низ и вправо на K 3 Четверть: Все точки смещаем в верх и вправо на K 4 Четверть: Все точки смещаем в верх и влево на K Точки, лежащие на линиях, разрезающих многоугольник: Верх: Смещаем в низ Низ: Смещаем в верх Лево: Смещаем в право Право: Смещаем в лево Сию идею на практике я не проверял, но на листике у меня вроде бы получалось уменьшить любой многоугольник.
Искусственный интеллект - фигня по сравнению с естественной глупостью
|
![]() |
![]() |
![]() |
#5 |
Новичок
Джуниор
Регистрация: 10.08.2010
Сообщений: 3
|
![]()
Попробуй пятиугольник с такими координатами:
1(60;80) 2(220;60) 3(260;160) 4(160;140) 5(40;200) Я брал за одну клеточку 20ед. |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 04.05.2010
Сообщений: 495
|
![]()
набери в википедии: правильный многоугольник.
Там есть формулы для расчета координат вершин многоугольников в зависимости от числа вершин, радиуса описанной окружности и центра. И все : только меняй радиусы окружности, получишь хоть тысячу соосных многоугольников.
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948 |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 03.02.2008
Сообщений: 213
|
![]()
Все довольно таки просто!
1. 360 / n, где n количество углов многоугольника, так мы узнаем шаг смещения(шаг угла) передвижения точки по окружности. Вычислить координаты точки после смещения на угол (а) можно по формуле: x = r*cos(a) + u y = r*sin(a) + v Где r радиус окружности, а - угол заданый в радианах, (u, v) - координаты центра окружности. 2. Чтобы вписать нужно просто уменшить радиус окружности, и повторить действия описание в 1 шаге. И потом вконце соединить все точки отрезками.
Пишу программы на заказ, контакты под аватаром!
Отзывы тут |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Borland C++ | DenVall | Помощь студентам | 5 | 04.07.2010 13:27 |
не могу запустить ехешник ,Borland 5 и Borland 6 | error_13 | Общие вопросы C/C++ | 0 | 31.01.2010 14:04 |
Выпуклый N-угольник | 6AZblJlb | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 08.12.2008 21:35 |
Выпуклый N-угольник и его диагонали | 6AZblJlb | Помощь студентам | 4 | 08.12.2008 00:15 |
Вписанная в выпуклый n-угольник окружность | Nixond | Паскаль, Turbo Pascal, PascalABC.NET | 10 | 15.10.2008 13:28 |