Форум программистов, компьютерный форум, киберфорум
Геометрия
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
9 / 9 / 8
Регистрация: 02.01.2017
Сообщений: 262
1

Найти точки многоугольника с множеством вершин

02.02.2017, 08:01. Показов 2181. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток школу давно заканчивал, тяжело вспоминается), прошу совета . У меня есть множество точек(x,y) составляющих замкнутый многогранник(от 3-х до N точек) и надо написать универсальную формулу для расчета точек фигуры с тем же количеством точек и теми же углами,теми же пропорциями повторяющею эту фигуру.
Грубо говоря отмасштабировать многогранник в уменьшеном размере. И если для прямоугольников я еще как-то напишу сам, то для многогранников проблема.
P.S. честно говоря надо для програмки, расчет размеров вкладок в форму спасибо.
Миниатюры
Найти точки многоугольника с множеством вершин  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.02.2017, 08:01
Ответы с готовыми решениями:

Найти координаты всех вершин правильного многоугольника
Здрасте! Есть задача: Дан правильный N-угольник с центром в точке (X, Y) и с координатами...

Найти площадь многоугольника с заданными координатами вершин
. Даны натуральное число n, действительные числа x(0), y(0), x(1), y(1),...,x(n), y(n). ...

Найти внутренние углы многоугольника по координатам вершин
Всем добрый день. У класса Фигура есть метод, работающий с его коллекцией вершин. Метод должен...

Найти периметр многоугольника заданного координатами вершин
1)Координаты вершин многоугольника заданы массивами {Xi,Yi}, i=1,2,…,n Считается, что вершины...

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
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
02.02.2017, 10:42 6
Цитата Сообщение от imjonhson Посмотреть сообщение
многогранник
Небольшая путаница в терминах. Наверное, хотели сказать многоугольник ?

Не по теме:

Извиняюсь за занудство. Врожденное.:)

1
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
Цитата Сообщение от mathidiot Посмотреть сообщение
просто уменьшаете координаты всех вершин многогранника в одной пропорции, например, k=0,9. При этом сам многогранник одновременно немножко сдвинется и уменьшится в исходной системе координат. Ну, а центр проще простого найти - складываете координаты всех точек и делите на их полное число.
Если многоугольник чуть сложнее прямоугольника, то это может дать совсем не тот результат, которого хочет автор:
Цитата Сообщение от imjonhson Посмотреть сообщение
чтоб по всему периметру многогранник был меньше исходного на N (пусть будет мм)
0
9 / 9 / 8
Регистрация: 02.01.2017
Сообщений: 262
02.02.2017, 11:16  [ТС] 10
Цитата Сообщение от eropegov Посмотреть сообщение
imjonhson, а ваш многоугольник выпуклый?
да
Цитата Сообщение от Байт Посмотреть сообщение
Небольшая путаница в терминах. Наверное, хотели сказать многоугольник ?
да спасибо
Цитата Сообщение от Krasme Посмотреть сообщение
А форма ваша какой формы? :-) наверняка прямоугольной,пересечение диагоналей - центр масштабирования.
Если вкладки идут в форму, ориентируйтесь на неё.
не обязательно может быть и треугольник и выпуклый многоугольник.
Как можно осуществить проверку выпуклый ли многоугольник или нет?
0
Эксперт по математике/физике
505 / 465 / 100
Регистрация: 30.01.2017
Сообщений: 1,371
02.02.2017, 11:20 11
Цитата Сообщение от imjonhson Посмотреть сообщение
Как можно осуществить проверку выпуклый ли многоугольник или нет?
Если он задан набором координат вершин (вы же писали, что так), то, э-э-э... можно-то можно, но вот как бы сделать это попроще.

А, вот простой и изящный способ: 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
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
02.02.2017, 11:30 16
Цитата Сообщение от eropegov Посмотреть сообщение
вот простой и изящный способ
Да. Имхо, самое простое - через векторные произведения.
Есть другой способ. Но он, кажется, более трудоемкий. Для каждой стороны. Провести прямую через сторону. Все остальные вершины должны лежать по одну сторону, т.е. давать одинаковый знак при подстановке в уравнение прямой.
Однако, можно рассматривать не все вершины, а только соседние со стороной. Тогда по трудоемкости он примерно равен векторному.
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
Вездепух
Эксперт CЭксперт С++
11694 / 6373 / 1724
Регистрация: 18.10.2014
Сообщений: 16,066
03.02.2017, 00:03 19
Цитата Сообщение от imjonhson Посмотреть сообщение
с теми же пропорциями повторяющею эту фигуру.
Цитата Сообщение от imjonhson Посмотреть сообщение
чтоб по всему периметру многогранник был меньше исходного на N (пусть будет мм)
Ну вы тогда определитесь, что именно вам надо. Если вам надо "по всему периметру меньше исходного на N", то тогда ни о каком "с теми же пропорциями" речи быть не может. Никакие "пропорции" при таком преобразовании сохраняться не будут.

Цитата Сообщение от SSC Посмотреть сообщение
Для построения эквидистанты контур не обязательно иметь выпуклый
В такой ситуации - задача классическая, и весьма весьма весьма нетривиальная. Как несложно заметить, многоугольник в процессе уменьшения может распадаться на несколько.

Эта задача сопряжена с задачей построения скелетных линий многоугольника. И статей, кстати, больше именно на тему построения скелетных линий. Я в свое время решал эту задачу через кинетическую триангуляцию.
0
03.02.2017, 00:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.02.2017, 00:03
Помогаю со студенческими работами здесь

Текстовые файлы. Найти периметр многоугольника по координатам вершин из файла
Составить программу, которая находит периметр фигуры, заданной при помощи N точек (координатами на...

Подпрограммы: Даны координаты вершин многоугольника. Найти его периметр
Даны координаты вершин многоугольника (x1,y1,x2,y2,...x10,y10). Напишите программу для вычисления...

Найти периметр многоугольника, координаты вершин которого заданы в файле
Составить программу, которая находит периметр фигуры, заданной при помощи N точек (координатами на...

Найти наибольшее из расстояний между всеми возможными парами вершин многоугольника
Не могу никак решить задачу: Для многоугольника, заданного координатами вершин, найти наибольшее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru