Подскажите, чем лучше нарисовать многоульник.

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

Также интересуют мысли о таком рисовании))

А еще, рассмотрю варианты покупки такого алгоритма на С#

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Я и не решал что вы мне должны помогать. И не сомневался в вашем ответе. Замете я не просил мне давать решение, я просто предложил вам решить. Просто нехрен ерундой страдать, уважаемые, если в тему ни чего писать не собираетесь.

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

Я в общем то не спрашивал как считать углы и рисовать линии я спросил что есть из удобных либ на эту тему. Сами же начали умничать и сами же жалуетесь что много прошу.

Раз все это элементарно и просто — то попробуйте сделать.

Может вместо вас еще и на работу ходить?

Или оно вам не надо и времени у вас нет ткоей ерундой страдать?

Как то так «решите мне мою проблему, иначе вы полные лузеры».

С чего вы решили что вам кто-то должен помогать? Особенно если задача простая.

надо же 15 час. назад

оло 15 час. назад

они издеваются 14 час. назад

Давайте так.
Раз все это элементарно и просто — то попробуйте сделать.
Пользователь получает эскиз с размерами и на основании его на форме задает количество вершин. Он именно добавляет их по одной и тянет мышью нужную (на его взгляд) точку. Таким образом, расставляет их приблизительно, так как видит на рисунке. Рисунок тоже нарисован от «фонаря» Только размеры правильные. Дальше пользователю нужно поправить все в соответствии с размерами.
Нужно выделить сторону и задать ей размер. А вся фигура должна измениться с учетом измененного ребра.

Или оно вам не надо и времени у вас нет ткоей ерундой страдать? А время пиписками на форумах меряться есть?

1
пользователь должен указать количество сторон (или вершин) и их размер, а программа это все нарисовать.
Здесь я имел ввиду, что пользователь задает количество! Акцент на «количестве», а не та слове «стороны». По условию это многоугольник. То-есть все вершины соеденены. Что тут доказывать?

2Если найдены точки фигуры с нужным расстоянием между ними, о каком «не нарисуется» речь?

пользователь должен указать количество сторон (или вершин) и их размер, а программа это все нарисовать.

Во-первых нужно доказать что такой многоугольник существует, а потом уже рисовать. (Или не нужно?)

Даже в случае с тремя сторонами размера. 1 2 4 ничего не нарисуется.

СПАСИБО. ОГРОМНОЕ!!! учитель геометрии иDmitry за нормальный человеческий подход! За понятное обьяснение! Буду реализовывать. Кстати если ребра на одной прямой то они будут объеденены в одно ребро в любом случае.

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

В целом, идея ясна. Думаю, можно приступать к реализации.:)

Например, нужно построить четырехугольник ABCD. Известны стороны AB, BC, CD, DA и диагонали AC и BD.

Ставишь точку А. Отмериваешь в любом направлении расстояние AB, ставишь точку В. Потом строишь две окружности: первая с центром в А и радиусом АС, вторая с центром в В и радиусом ВС. Там, где они пересекаются, будет твоя точка С. Дальше строишь такие же окружности (С; CD) и (A; DA). Они пересекутся в двух точках. Та из них, расстояние от которой до т. В будет таким, как в данных, и будет точкой D. Решение легко формализуется и экстраполируется на сколь угодно большие многоугольники.

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

Если не 9 класс, то уж точно не далее первого курса.

Я конечно не подробно объяснил, но почему-то одним ясно, а другие выпендриваются.

Что за специфика говорить не буду, дабы не уводить от темы.


оло:
Образование: 9 классов
Место работы: Electronic BUG Studio
Должность: Программист
Год рождения: 1983

бгггг.

, а вы не логинились чтоб про вас так не писали? может подскажете, что-нидь путнее?
В координатах весь вопрос верно подметил (а) школота

Данные в массивах. Трапеция будет выглядить как массив вершин с номерами по часовой (или против) и во втором массиве в том же порядке стороны. Точку старта можно выбрать любую.

Элементарная задача на построение. Если не 9 класс, то уж точно не далее первого курса.

А есть ли какой-то порядок в описании данных, я имею в виду даные последовательно идут или в разброс?

Вот например как будет выглядеть описание трапеции со сторонами: верх: 5; бока: по 3; низ: 7?

Ему надо сначала координаты по длинам найти

оло:
Образование: 9 классов
Место работы: Electronic BUG Studio
Должность: Программист
Год рождения: 1983

бгггг

GDI+ может строить многоугольник с заполнением по массиву координат (список вершин). Заполнение может быть как цветом (градиент и пр) так и текстурой.

А говорят, в ВУЗе учиться не надо

Сколько предлагаете за алгоритм?

Многоугольник любой. Мне, по сути, нужно найти точки на расстоянии равном сторонам. Визуально пользователь приблизительно ставит вершины многоугольника. А для уточнения указывает точные длины сторон. Для точности углов он может указывает любые расстояния между вершинами. Но самих углов пользователь не знает. Пытаюсь нарисовать средствами OpenGL, не могу придумать как фиксировать размер одной стороны и менять ее положение в то время как меняется размер другой примыкающей к ней стороны.

Теорема синусов и теорема о сумме величин углов треугольника помогут найти углы, если многоугольник выпуклый.

Если в условии сказано, что многоугольник выпуклый — то задача довольно простая (достаточно использовать только длины сторон и расстояния между вершинами, между которыми есть только одна промежуточная вершина). Результатом будет два симметричных многоугольника.

Или многоугольник может быть невыпуклым?

Підписатись на коментарі