Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.01.31;
Скачать: CL | DM;

Вниз

Расширение фигуры   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.014 c
15-1259357418
Юрий
2009-11-28 00:30
2010.01.31
С днем рождения ! 28 ноября 2009 суббота


2-1260256589
AIK
2009-12-08 10:16
2010.01.31
приложение не передаёт в ms SQl русские буквы


3-1233777154
Noir
2009-02-04 22:52
2010.01.31
Обновление


2-1260199511
erko
2009-12-07 18:25
2010.01.31
работа с таблицами dbase


4-1227769550
Ort
2008-11-27 10:05
2010.01.31
Дерево файлов на winapi