9 / 9 / 8
Регистрация: 02.01.2017
Сообщений: 262
|
|
1 | |
Найти точки многоугольника с множеством вершин02.02.2017, 08:01. Показов 2181. Ответов 18
Метки нет (Все метки)
Доброго времени суток школу давно заканчивал, тяжело вспоминается), прошу совета . У меня есть множество точек(x,y) составляющих замкнутый многогранник(от 3-х до N точек) и надо написать универсальную формулу для расчета точек фигуры с тем же количеством точек и теми же углами,теми же пропорциями повторяющею эту фигуру.
Грубо говоря отмасштабировать многогранник в уменьшеном размере. И если для прямоугольников я еще как-то напишу сам, то для многогранников проблема. P.S. честно говоря надо для програмки, расчет размеров вкладок в форму спасибо.
0
|
02.02.2017, 08:01 | |
Ответы с готовыми решениями:
18
Найти координаты всех вершин правильного многоугольника Найти площадь многоугольника с заданными координатами вершин Найти внутренние углы многоугольника по координатам вершин Найти периметр многоугольника заданного координатами вершин |
6830 / 4890 / 2065
Регистрация: 02.02.2014
Сообщений: 13,048
|
|
02.02.2017, 09:03 | 2 |
Вариант:
1. Определить базовую точку, она будет иметь координаты (0;0) 2. Составить массив координат " вершина многоугольника". 3. Умножить массив на коэффициент масштаба, получится новый массив - вершины нового многоугольника.
1
|
9 / 9 / 8
Регистрация: 02.01.2017
Сообщений: 262
|
|
02.02.2017, 10:05 [ТС] | 3 |
так будет же смещение к точке 0.0
Не до конца сформулировал цель, простите,надо расчитать чтоб по всему периметру многогранник был меньше исходного на N (пусть будет мм). ага допер)) надо найти геометрический центр всех углов(точка 0.0) на линии от любой точки до центра отминусовать N найти процентное отношение целой к обрезанной и умножить на.... А как найти центр????
0
|
10441 / 6925 / 3769
Регистрация: 14.01.2014
Сообщений: 15,912
|
|
02.02.2017, 10:35 | 4 |
Можно и не искать этот центр, просто уменьшаете координаты всех вершин многогранника в одной пропорции, например, k=0,9. При этом сам многогранник одновременно немножко сдвинется и уменьшится в исходной системе координат. Ну, а центр проще простого найти - складываете координаты всех точек и делите на их полное число.
0
|
505 / 465 / 100
Регистрация: 30.01.2017
Сообщений: 1,371
|
|
02.02.2017, 10:39 | 5 |
imjonhson, а ваш многоугольник выпуклый?
0
|
9 / 9 / 8
Регистрация: 02.01.2017
Сообщений: 262
|
|
02.02.2017, 11:08 [ТС] | 7 |
Спасибо, так просто?,я уже читаю про центры тяжести многоугольников и многогранников)), центр нужен для того чтоб смещения не было это важно для вывода на монитор корректной картинки, многоугольник а внутри с определенным зазором внутренний многоугольник.
(сравнение)Грубо говоря надо расчитать многоугольную дверь которая меньше многоугольной рамы на пару мм и вывести на экран
0
|
6830 / 4890 / 2065
Регистрация: 02.02.2014
Сообщений: 13,048
|
|
02.02.2017, 11:10 | 8 |
imjonhson, А форма ваша какой формы? :-) наверняка прямоугольной,пересечение диагоналей - центр масштабирования.
Если вкладки идут в форму, ориентируйтесь на неё.
0
|
505 / 465 / 100
Регистрация: 30.01.2017
Сообщений: 1,371
|
|
02.02.2017, 11:14 | 9 |
Если многоугольник чуть сложнее прямоугольника, то это может дать совсем не тот результат, которого хочет автор:
0
|
9 / 9 / 8
Регистрация: 02.01.2017
Сообщений: 262
|
|
02.02.2017, 11:16 [ТС] | 10 |
да
да спасибо не обязательно может быть и треугольник и выпуклый многоугольник. Как можно осуществить проверку выпуклый ли многоугольник или нет?
0
|
505 / 465 / 100
Регистрация: 30.01.2017
Сообщений: 1,371
|
|
02.02.2017, 11:20 | 11 |
Если он задан набором координат вершин (вы же писали, что так), то, э-э-э... можно-то можно, но вот как бы сделать это попроще.
А, вот простой и изящный способ: http://delphid.dax.ru/www/exampl20.htm
2
|
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
|
|
02.02.2017, 11:22 | 12 |
Сообщение было отмечено imjonhson как решение
Решение
imjonhson, похоже Вы пытаетесь построить так называемую внутреннюю эквидистанту. Линию расстояние от каждой точки которой до некоторой линии или контура составляет некоторую величину d.
Если в контур входят только прямые (отрезки прямой) и нет дуг, частей эллипса и др., то задача значительно упрощается. Примерный алгоритм для контура: 1. Выбираем стартовую вершину. В качестве стартовой берем самую нижнюю, если их несколько, то берем самую левую. 2. Определяем угол между ребрами у выбранной вершины и определяем биссектрису угла между прилегающими стронами (угол альфа). 3. В направлении внутрь многоугольника по биссектрисе от вершины откладываем расстояние l=d/sin(альфа/2) и получаем вершину эквидистанты. 4. Если вершина не последняя повторяем пп 2-3. 5. Проводим анализ на вырожденные вершины и удаляем их. 6. Контур эквидистанты получен.
1
|
9 / 9 / 8
Регистрация: 02.01.2017
Сообщений: 262
|
|
02.02.2017, 11:23 [ТС] | 13 |
В теории может быть и невыпуклый и с дугами, но пока хотя бы с этим разобраться)))
0
|
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
|
|
02.02.2017, 11:25 | 14 |
Замечание:
Для построения эквидистанты контур не обязательно иметь выпуклый
0
|
1471 / 826 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
02.02.2017, 11:28 | 15 |
То что вы хотите называется внутренняя эквидистанта.
http://lab18.ipu.ru/projects/conf2009/3/20..htm Добавлено через 1 минуту SSC, ахаха… опять ответы совпали надаже...тока печатают пост и сразу выпадает еще 5 ответов =)).
1
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
02.02.2017, 11:30 | 16 |
Да. Имхо, самое простое - через векторные произведения.
Есть другой способ. Но он, кажется, более трудоемкий. Для каждой стороны. Провести прямую через сторону. Все остальные вершины должны лежать по одну сторону, т.е. давать одинаковый знак при подстановке в уравнение прямой. Однако, можно рассматривать не все вершины, а только соседние со стороной. Тогда по трудоемкости он примерно равен векторному.
0
|
9 / 9 / 8
Регистрация: 02.01.2017
Сообщений: 262
|
|
02.02.2017, 11:43 [ТС] | 17 |
Всем спасибо дальше уж сам, а эквидистанта это какой уровень подготовки школа/вуз/аспирантура?
0
|
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
|
|
02.02.2017, 11:48 | 18 |
Excalibur921, спасибо - хороший материал по эквидистантам
0
|
Вездепух
11694 / 6373 / 1724
Регистрация: 18.10.2014
Сообщений: 16,066
|
|
03.02.2017, 00:03 | 19 |
Ну вы тогда определитесь, что именно вам надо. Если вам надо "по всему периметру меньше исходного на N", то тогда ни о каком "с теми же пропорциями" речи быть не может. Никакие "пропорции" при таком преобразовании сохраняться не будут.
В такой ситуации - задача классическая, и весьма весьма весьма нетривиальная. Как несложно заметить, многоугольник в процессе уменьшения может распадаться на несколько. Эта задача сопряжена с задачей построения скелетных линий многоугольника. И статей, кстати, больше именно на тему построения скелетных линий. Я в свое время решал эту задачу через кинетическую триангуляцию.
0
|
03.02.2017, 00:03 | |
03.02.2017, 00:03 | |
Помогаю со студенческими работами здесь
19
Текстовые файлы. Найти периметр многоугольника по координатам вершин из файла Подпрограммы: Даны координаты вершин многоугольника. Найти его периметр Найти периметр многоугольника, координаты вершин которого заданы в файле Найти наибольшее из расстояний между всеми возможными парами вершин многоугольника Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |