|
0 / 0 / 0
Регистрация: 18.02.2016
Сообщений: 25
|
|
Как можно нарисовать многоугольник15.11.2016, 13:15. Показов 2572. Ответов 39
Метки нет (Все метки)
Доброе время суток.
Как можно нарисовать многоугольник на canvas, если есть размеры сторон углы в градусах и размеры диагоналей. Какие есть идеи!?
0
|
|
| 15.11.2016, 13:15 | |
|
Ответы с готовыми решениями:
39
нарисовать многоугольник Хочу нарисовать многоугольник с некоторыми координатами углов. Как?! можно и не правильный Как нарисовать многоугольник? |
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
|
|
| 16.11.2016, 12:49 | |
|
serjekat, как приложение поймет в какую из вершин вы ведете диагональ? из какой - я думаю за это отвечает ввод хотя уже ничему не удивлюсь если будет сказано что программа "догадывается" сама. а вот в какую из вершин... ?
0
|
|
|
0 / 0 / 0
Регистрация: 18.02.2016
Сообщений: 25
|
|
| 16.11.2016, 13:34 [ТС] | |
|
у каждой вершины есть номер и имя, пользователь нажимает к примеру на угол A затем нажимает на угол C выводится диалоговое окно где пользователь вводит размер диагонали.
Проблема не в том как ввести данные, а в том как поменять координаты углов исходя из данных. Если это треугольник или прямоугольник все получается нормально а вот если углов больше то уже не получается. Есть размеры углы в цикле я могу изменить координаты всех углов, но не всегда правильно меняет... (считаем что пользователь вводит все правильные размеры) Добавлено через 7 минут Проблема я так понимаю в системе координат нужно наверное использовать Методы scale() , translate() ,rotate() и restore() вот это я как раз и не понимаю....
0
|
|
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
|
|
| 16.11.2016, 13:44 | |
|
serjekat, если бы пользователь задавал только ребра всегда можно было бы построить замкнутый несамопересекающейся даже выпуклый многоугольник. а вот эти "диагонали" которые на самом деле непойми что получается все портят)
Добавлено через 9 минут serjekat, кажется я понял давайте код которым вы рисуете
0
|
|
|
0 / 0 / 0
Регистрация: 18.02.2016
Сообщений: 25
|
||||||
| 16.11.2016, 14:04 [ТС] | ||||||
distanse расcтояние на canvas от угла betta до следующего угла todoStoronas.get(0).getRazmer() - размер на canvas первой стороны razmerAb- размер введенный первой стороны betta -угол между сторонами cr-размер введенной диагонали Добавлено через 47 секунд todoPoints.size() - кол вершин многоугольника
0
|
||||||
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
|
| 16.11.2016, 14:56 | |
|
У тебя же есть набор треугольников, у которых две стороны - это стороны многоугольника, и одна сторона - "диагональ". Ты эти треугольники соединяешь через одну точку. То есть есть треугольник АБС и БДЕ, будет фигура АБСДЕ, где Б общая, угол между АБ и БД у тебя известен, значит поворот этого треугольника и положение в пространстве можно определить, вот так и рисуешь, пока последний треугольник не придёт в точку С. При этом не вижу ничего плохого в том, что стороны и диагонали могут пересекаться, когда, например, угол между стороной и диагональю больше, чем угол между этой же стороной и соседней. Диагонали можно сделать немного прозрачными для удобства.
0
|
|
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
|
|
| 16.11.2016, 15:12 | |
|
serjekat, нарисовал я это на бумаге и все там очень печально. не знаю как вы это в 10 строк засунули. видимо какую-то стратегию неведомую мне применяете. на бумаге у меня получается такой пример - есть
-вершина A -расстояние до B -расстояние до C -расстояние до D -диагональ AD пытаемся строить ломаную ABCD. если AB + BC + CD < AD то очевидно что это ошибка ибо мы не дотянемся от A до D даже если выложим ребра в линию. этот случай мы не рассматриваем. тогда мы можем КАК УГОДНО вести ломаную. я принимал стратегию что ломаная при прохождении вершины загибается на один и тот же угол с таким расчетом что бы мы пришли в конечную точку. однако, если из вершин которые проходит ломаная выпущены другие диагонали, то как быть с их углами? Добавлено через 2 минуты ...можно их не трогать и играть только с углами которые выходят за уже построенную часть но это ++доп условий ...а если у нас из одной из внутренних вершин проведена диагональ к другой внутренней вершине это вообще ппц ...а если в одной из вершин финишируют несколько диагоналей %)
0
|
|
|
0 / 0 / 0
Регистрация: 18.02.2016
Сообщений: 25
|
|
| 16.11.2016, 15:47 [ТС] | |
|
код конечно больше. Диагонали изначально нужны что бы высчитать углы, после того как знаешь углы в градусах то диагонали не принципиальны. если к углу приходит несколько диагоналей к примеру 2 то это 3 треугольника и тогда угол будет сумма углов, так же с внутренними углами, расчеты углов в итоге координаты нужно определить зная углы и размеры сторон
0
|
|
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
|
|
| 16.11.2016, 15:52 | |
|
serjekat, мда.... *вкрадчиво* это, конечно, поздно спрашивать, но что у вас за задача такая странная?
0
|
|
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
||
| 16.11.2016, 16:19 | ||
|
serjekat,
0
|
||
|
0 / 0 / 0
Регистрация: 18.02.2016
Сообщений: 25
|
|
| 16.11.2016, 16:31 [ТС] | |
|
Задача не странная, по размерам сделать чертеж. Изначально пользователь динамически сам рисует чертеж, на глаз. А при введении размеров чертеж должен просо с масштабировать все стороны многоугольника.
Добавлено через 56 секунд Задача именно что бы программа изменила размеры сторон на чертеже а не пользователь.
0
|
|
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
|
| 16.11.2016, 16:36 | |
|
1
|
|
|
0 / 0 / 0
Регистрация: 18.02.2016
Сообщений: 25
|
|
| 16.11.2016, 16:44 [ТС] | |
|
Изначально пользователь рисует сам предполагаемый чертеж, затем вводит размеры сторон и программа должна сама с масштабировать стороны чертежа согласно введенным размерам.
Добавлено через 2 минуты если взять чертеж выше, то тогда он должен перирисоваться так что бы CD стало больше DE уменьшилось и т.д и т.п
0
|
|
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
|
| 16.11.2016, 16:44 | |
|
Сделай как в автокаде, нарисуй сетку, а многоугольник будет, последовательность линий, произвольного либо указанного размера, проводя эти линии, пользователь сам увидит, если они не соединяются.
0
|
|
|
0 / 0 / 0
Регистрация: 18.02.2016
Сообщений: 25
|
|
| 16.11.2016, 16:46 [ТС] | |
|
чертеж выше нарисовал пользователь, затем ввел размеры нужно что бы чертеж стал согласно размерам.
0
|
|
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
|
| 16.11.2016, 16:49 | |
|
serjekat, ну и измени размеры сторон этого рисунка.
0
|
|
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
|
|
| 16.11.2016, 16:50 | |
|
serjekat, если программа сама правит чертеж то просто всегда рисуйте что вам угодно выдавая это за правку ибо алгоритм по которому программа должна будет ранжировать множество условий влияющих на правильность того что мы должны получить непонятен. это как система уравнений которая то ли имеет множество решений то ли не одного
0
|
|
|
0 / 0 / 0
Регистрация: 18.02.2016
Сообщений: 25
|
|
| 16.11.2016, 17:05 [ТС] | |
|
берем просто прямоугольник, если пользователь ввел размеры сторон 100 и диагональ 141 то программа должна начертить квадрат, если диагональ будет меньше или больше то это будет ромб, если стороны прямоугольника будут введены 100 200 100 200 и диагональ 223 то программа должна нарисовать прямоугольник так что бы стороны где 200 были в 2 раза больше чем сторон 100. и тд итп
0
|
|
|
104 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 474
|
|
| 16.11.2016, 17:49 | |
|
0
|
|
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
||
| 16.11.2016, 18:24 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 18.02.2016
Сообщений: 25
|
|
| 16.11.2016, 19:02 [ТС] | |
|
в прямоугольнике проблем нет, а если углов 10 штук!!! и углы разные острые тупые прямые.... тогда координаты углов у меня не получается вычислить...
откуда пользователь берет данные это его проблемы главное что бы рисовало исходя из его размеров
0
|
|
| 16.11.2016, 19:02 | |
|
Помогаю со студенческими работами здесь
40
Как нарисовать правильный многоугольник?
На графике не выводит все точки, в чем ошибки? Как нарисовать по этим точкам многоугольник? Нарисовать многоугольник Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|