Форум: "Прочее";
Текущий архив: 2010.01.31;
Скачать: [xml.tar.bz2];
ВнизРасширение фигуры Найти похожие ветки
← →
Yura (2009-11-29 20:39) [0]Господа. Такой вопрос. Мне надо ламаную фигуру расширить на высоту "H".
В наличии имеются только координаты вершын фигуры и думаю координаты центра фигуры если нужно получить не трудно. Имея координаты вершын и координаты центра могу спокойно росшырить фигуру но это будет только примерно на "Н" а вот точно незнаю как. Жду ответов.
← →
Юрий Зотов © (2009-11-29 21:26) [1]1. Найти самую верхнюю (с Ymin) и самую нижнюю (с Ymax) вершины.
2. Пересчитать координаты всех вершин по формуле:
Yнов = Ymin + H * (Yстар - Ymin) / (Ymax - Ymin)
3. Пропорции проходят в школе. Не стыдно?
← →
Yura (2009-11-29 22:12) [2]Не совсем понятно Ymin и Ymax вершины. У одной вершины только один Y. Возможно имееш ввиду самая верхняя вершына и самая нижняя? И еще что такое Yстар.
← →
TUser © (2009-11-29 22:30) [3]Что значит "расширить на высоту Н"? Удалить вершины от центра или все ребра передвинуть на Н наружу?
← →
Yura (2009-11-29 22:37) [4]Все вершины передвинуть на Н от центра. В результате должна выйти практически такая же фигура но чуть больше.
← →
0x00FF00 (2009-11-29 22:41) [5]Так... а что должно в итоге стать, скажем, с П-образной фигурой, если Н/2 больше чем расстояние между "ногами" этой П?
Если она обязана выродиться в прямоугольник, то без удаления вершин не обойтись.
← →
0x00FF00 (2009-11-29 22:42) [6]А, стоп. Снова прочитал не то, что написано... =(
← →
Плохиш © (2009-11-29 23:02) [7]Да... тут бес руская язЫка не обайтиси...
← →
test © (2009-11-29 23:04) [8]Ищи в Гугле масштабирование.
← →
Yura (2009-11-30 00:36) [9]Yнов = Ymin + H * (Yстар - Ymin) / (Ymax - Ymin)
Сделал и оказалось что это не верно. Народ да помогите же((
← →
Yura (2009-11-30 00:54) [10]Напишыте пожалуйста пример масштабирования многоугольника если известны только координаты вершин. Сроки поджимаю..(
← →
Германн © (2009-11-30 01:02) [11]
> Yura (30.11.09 00:36) [9]
>
> Yнов = Ymin + H * (Yстар - Ymin) / (Ymax - Ymin)
> Сделал и оказалось что это не верно.
Тогда два вопроса:
1. Центр должен остаться на месте?
2. Что значит "Имея координаты вершын и координаты центра могу спокойно росшырить фигуру но это будет только примерно на "Н" а вот точно незнаю как"?
← →
Yura (2009-11-30 01:37) [12]1. Да центр должен остаться на месте тоесть фигура должна біть чуть больше чем нарисованная и разстояние между бывшей вершиной и новой равна Н.
2. Это значит что в такой способ я могу перенести вершины от центра фигуры но расстояние между старыми вершинами и новыми не будет равно Н а только приблизительно, а мне надо как можно точнее. Ну и это не всегда будет правильным выходом если многоугольник будет не похож на круг.
3. Yнов = Ymin + H * (Yстар - Ymin) / (Ymax - Ymin) Действительно увеличивает или уменьшает фигуру но она немного смещена, пробовал подстроить её путём смещения новых координат вершин но плоховато получается, в одних случаях выходит что рёбра пересекаются в других вершины не находятся на одинаковых расстояниях от старых.
← →
Игорь Шевченко © (2009-11-30 01:38) [13]
> Сроки поджимаю..(
Чьи сроки-то ?
← →
test © (2009-11-30 01:49) [14]Yura (30.11.09 00:54) [10]
В Гугле забанили?
← →
Германн © (2009-11-30 02:36) [15]
> Yura (30.11.09 01:37) [12]
Будем считать, что ты не сдал.
"Садись. - Два"!
← →
Yura (2009-11-30 03:04) [16]Всё понятно могли бы сказать что не знаете.
← →
Германн © (2009-11-30 03:10) [17]
> Yura (30.11.09 03:04) [16]
>
> Всё понятно могли бы сказать что не знаете.
Не. Мы знаем, но не понимаем какую шпаргалку ты просишь. :)
← →
MBo © (2009-11-30 06:03) [18]Если не принимать во внимание сложные места, как в [5], например, то можно так:
Обходим многоугольник против часовой стрелки.
Для каждого отрезка берем внешнюю единичную нормаль n к нему, и считаем прямую, сдвинутую на n*H. Считаем точки пересечения этой прямой с прямыми соседних сторон. Совокупность точек пересечения есть вершины искомого "расширенного" многоугольника.
Если новый контур должен быть всех точках отстоять на заданное расстоянии от исходного, то это будет уже не многоугольник, а в районе вершин будут дуги окружностей.
← →
Юрий Зотов © (2009-11-30 09:32) [19]> Yura (30.11.09 00:36) [9]
> Yнов = Ymin + H * (Yстар - Ymin) / (Ymax - Ymin)
> Сделал и оказалось что это не верно.
Это плохо. Это даже ОЧЕНЬ плохо.
> Yura (30.11.09 01:37) [12]
> 1. Да центр должен остаться на месте
Для этого надо всего лишь немножко подумать и свинуть все вершины, полученные по формуле из [1] на H/2.
← →
Думкин © (2009-11-30 09:46) [20]> MBo © (30.11.09 06:03) [18]
Тут момент есть. :) Автор пишет, что даны только координаты вершин, но как обстоит дело с порядоком - ничего не пишет. В случае порядка мысль идет к тому, что пишешь ты, в случае одних вершин - смысл приобретают его рассуждения про некий центр и увеличении по радиусам этого центра на заданную величину.
Пусть курит преподавателя и постановку задачи.
← →
Виктор Щербаков © (2009-11-30 09:49) [21]Для таких "увеличений" обычно используются скелеты. И, конечно, не обойтись без последующих обходов получившихся вершин.
http://www.graphicon.ru/2005/proceedings/papers/Mestetskiy.pdf
← →
Виктор Щербаков © (2009-11-30 10:20) [22]По смыслу вопроса это может быть также сумма Минковского (известная в ГИС как буферная зона). О чем уже написано в [18]. И тут все не менее тоскливо. В общем случае решается как построение многоугольника для каждого отрезка границы с последующим их объединением. И объединением с исходной фигурой. Если есть отлаженный механизм объединения полигонов - проблем никаких.
← →
Юрий Зотов © (2009-11-30 10:34) [23]Эт-та... может, конечно, я чего не понимаю, но я действительно не понимаю, зачем нужны высшие материи для простенькой лабораторки на первом курсе, где всего-то требуется изменить масштаб?
← →
йцукен (2009-11-30 10:56) [24]
> Юрий Зотов © (30.11.09 10:34) [23]
Горе от ума?
← →
Виктор Щербаков © (2009-11-30 11:07) [25]
> Юрий Зотов © (30.11.09 10:34) [23]
Нужны только для уточнения формулировок. Понятное дело, что в рамках лабы глупо требовать реализовать такое. И, вроде бы, из того, что пишет автор ветки про расстояние между старыми и новыми вершинами, никак не следует банальное изменение масштаба.
← →
Думкин © (2009-11-30 11:19) [26]> Юрий Зотов © (30.11.09 10:34) [23]
> Эт-та... может, конечно, я чего не понимаю, но я действительно
> не понимаю, зачем нужны высшие материи для простенькой лабораторки
> на первом курсе, где всего-то требуется изменить масштаб?
Так, при описанно вами подходе ни о каком изменении масштаба речи в общем случае не идет, кроме фигур имеющих точку такую, что все вершины лежат на окружности с центром в этой точке - и по этой точке и производится "масштабирование". (Из петуха получаем крокодила. Особенно играя центром.)
← →
Yura (2009-11-30 12:54) [27]Уточнил у консультанта. Она сказала что ето нужно делать путём переноса всех ребер на Н паралельно старым новые вершины будут в точках их пересекания. Но не совсем понимаю как их перенести именно на Н.
Спасибо всем за старание помочь и извеняюсь если поставил не совсем коректную задачу.
P.S. На мой русский не обращайте внимания, я его никогда не изучал, только инет.
← →
Виктор Щербаков © (2009-11-30 13:36) [28]Тогда похоже на сумму Минковского. Но с "хитрым" соединением линий.
> Но не совсем понимаю как их перенести именно на Н.
Построив перпендикуляры длины Н. Но это отнюдь не основная сложность.
← →
Виктор Щербаков © (2009-11-30 13:57) [29]Исходные данные какие? Контур один или больше? Известна ли их ориентация (по/против часовой стрелки)? Могут ли быть самопересечения/самокасания?
Ну... и те же вопросы относительно результата...
Если граница не содержит особенностей, известна ориентация ее контуров, самопересечения в результате - не проблема, то тогда (и только тогда) школьная геометрия. Иначе надо разбираться с топологией, а это быстро сделать (и даже объяснить) не получится.
← →
clickmaker © (2009-11-30 15:09) [30]кстати, сабж прозвучал несколько забавно.
Обычно озабочены сужением фигуры...
← →
Думкин © (2009-11-30 15:44) [31]
> Виктор Щербаков © (30.11.09 13:57) [29]
Ну, тут уже к гадалке не ходи, что
1. Фигуры будут либо выпуклы
2. Если и не выпуклы, то ширина прибавляемая будет сохранять "топологию".
Это из анализа того, что зачет сдается. Мне кажется, что тут надо студня в свободное плавание отпустить уже. Хотя, если он этот зачет вырастит в большее и поразит препода - то было бы весьма неплохо.
← →
Yura (2009-11-30 18:01) [32]Задаются вершины многоугольника путём кликания мышкой на "полотне" они соединяются рёбрами. Никаких направлений и выпуклостей нету. Просто замкнутая ламаная.
← →
Думкин © (2009-11-30 18:10) [33]> Yura (30.11.09 18:01) [32]
Так ломаная или все-таки многоугольник? Тебе тоесть на скелет мясо нарастить надо что ли? Аналитика была? В чем конкретность вопросов тогда?
← →
Yura (2009-11-30 18:21) [34]По сути єто многоугольник но без віпуклостей, вгнутостей и направлений.
← →
Alx2 © (2009-11-30 20:42) [35]Жесть... Разобраться б теперь во всем этом. Не знал, что гомотетия настолько многогранна... 8-)
> Yura
Нифига себе, сходил за хлебушком, да? :))
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2010.01.31;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.004 c