Re[14]: Алгоритм уничтожения геометрии
От: Amon_RA Россия  
Дата: 22.07.05 09:15
Оценка:
Здравствуйте, kanz, Вы писали:

K>Абсолютно верно, я добавил пример

K>http://www.braun-soft.de/temp/pocketing2D.pdf

Ну так у меня и не будет никаких "островков". Если вы укажите большой отступ, то функция GetEquidistant вернет NULL, а не указатель на объект.
Вот например

Дальше внутрь создать эквидистанту не получится — тольок наружу.
Или я по прожнему не догоняю?
Re[14]: Алгоритм уничтожения геометрии
От: Amon_RA Россия  
Дата: 22.07.05 09:17
Оценка: +2
Здравствуйте, kanz, Вы писали:

Умеете вы, я гляжу, формулировать свои мысли
Re[15]: Алгоритм уничтожения геометрии
От: kanz  
Дата: 22.07.05 09:26
Оценка:
Здравствуйте, Amon_RA, Вы писали:

A_R>Здравствуйте, kanz, Вы писали:


K>>Абсолютно верно, я добавил пример

K>>http://www.braun-soft.de/temp/pocketing2D.pdf

A_R>Ну так у меня и не будет никаких "островков". Если вы укажите большой отступ, то функция GetEquidistant вернет NULL, а не указатель на объект.

A_R>Вот например
A_R>
A_R>Дальше внутрь создать эквидистанту не получится — тольок наружу.
A_R>Или я по прожнему не догоняю?

я Вам отослал как должно быть через майл.
Re[16]: Алгоритм уничтожения геометрии
От: Amon_RA Россия  
Дата: 22.07.05 09:33
Оценка: 1 (1)
Здравствуйте, kanz, Вы писали:
K>я Вам отослал как должно быть через майл.

Прежде чем решать какую-то задачу — нужна четкая формулировка. А не картинки, как хотелось бы
Вы сможете это ЧЕТКО сформулировать для произвольного контура?
Re[17]: Алгоритм уничтожения геометрии
От: kanz  
Дата: 22.07.05 09:49
Оценка:
Здравствуйте, Amon_RA, Вы писали:

A_R>Здравствуйте, kanz, Вы писали:

K>>я Вам отослал как должно быть через майл.

A_R>Прежде чем решать какую-то задачу — нужна четкая формулировка. А не картинки, как хотелось бы

A_R>Вы сможете это ЧЕТКО сформулировать для произвольного контура?

Сразу видно, что Вы сильно делаете акцент на теорию.
Была бы у меня точная формулировка, я нашел бы точную формулу через
Google и за пять минут запрограммировал.
На практике все совсем по-другому.
Есть клиент, ему надо решение данной проблемы, и остальное его не интересует.
Ему все равно, на чем работает алгоритм — VB или PL1.
Контур должен уничтожаться так, чтобы не было выпадающих частей.
Вот и вся формулировка.
Re[3]: Алгоритм уничтожения геометрии
От: McSeem2 США http://www.antigrain.com
Дата: 22.07.05 14:29
Оценка: +2
Здравствуйте, kanz, Вы писали:

K>здесь

K>http://www.braun-soft.de/temp/pocketing2D.pdf
K> я описал

Теперь объяснение длинное, противоречивое и точно так же не понятно, чего же надо.

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

Единственный непротиворечивый вариант достигается простым масштабированием относительно центра масс:


При этом, контур всегда вырождается в точку. Но это работает только для выпуклых полигонов.

На мой взгляд, надо сначала определить критерий того, что является "узким местом", а что — "широким местом". Причем эта "узость" является векторной величиной. И вот после того, как этот критерий определен, задача становится тривиальной.

А теперь вернемся к исходной постановке вопроса:

K>Нужен алгортим уничтожения закрытого 2D контура


Правильный ответ на этот вопрос таков:

if(contour->closed()) 
{
   delete contour;
}
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[18]: Алгоритм уничтожения геометрии
От: McSeem2 США http://www.antigrain.com
Дата: 22.07.05 14:50
Оценка: +1
Здравствуйте, kanz, Вы писали:

K>Сразу видно, что Вы сильно делаете акцент на теорию.


Какая теория? Надо сначала с элементарной терминологией разобраться. "Уничтожение геометрии" — вот уж термин, так термин.

K>Есть клиент, ему надо решение данной проблемы, и остальное его не интересует.

K>Ему все равно, на чем работает алгоритм — VB или PL1.

Значит надо допросить его с пристрастием, чего же именно он хочет. Либо послать.

K>Контур должен уничтожаться так, чтобы не было выпадающих частей.

K>Вот и вся формулировка.

Вот опять. Что такое "выпадающие части"?

- Кто на ком стоял?! Потрудитесь излагать Ваши мысли яснее (Собачье сердце)


Контур должен оставаться односвязным?
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[19]: Алгоритм уничтожения геометрии
От: kanz  
Дата: 22.07.05 15:06
Оценка: -2
Здравствуйте, McSeem2, Вы писали:

MS>Здравствуйте, kanz, Вы писали:


K>>Сразу видно, что Вы сильно делаете акцент на теорию.


MS>Какая теория? Надо сначала с элементарной терминологией разобраться. "Уничтожение геометрии" — вот уж термин, так термин.


K>>Есть клиент, ему надо решение данной проблемы, и остальное его не интересует.

K>>Ему все равно, на чем работает алгоритм — VB или PL1.

MS>Значит надо допросить его с пристрастием, чего же именно он хочет. Либо послать.


K>>Контур должен уничтожаться так, чтобы не было выпадающих частей.

K>>Вот и вся формулировка.

MS>Вот опять. Что такое "выпадающие части"?

MS>

MS>- Кто на ком стоял?! Потрудитесь излагать Ваши мысли яснее (Собачье сердце)


MS>Контур должен оставаться односвязным?



Да забудьте Вы эту тему, Вас вначале обучать CAD надо.
У меня к — сожалению ни времени не желания к этому нет.
Терминология — это то, что переводится с
английской техн.литературы на русский?
Re: Алгоритм уничтожения геометрии
От: volk  
Дата: 22.07.05 15:52
Оценка: :))
Искомый алгоритм:

Тот, кто желает, но не делает, распространяет чуму.
Re[20]: Алгоритм уничтожения геометрии
От: McSeem2 США http://www.antigrain.com
Дата: 22.07.05 16:04
Оценка: 10 (2)
Здравствуйте, kanz, Вы писали:

K>Да забудьте Вы эту тему, Вас вначале обучать CAD надо.

K>У меня к — сожалению ни времени не желания к этому нет.

Возможно. Но не надо хамить, это нехорошо. Прежде, чем высказывать подобные суждения, не мешало бы ознакомиться с элементарными общепринятыми понятиями в геометрии, безотносительно к каким-либо кадам.
Что, CAD — это какое-то тайное знание, в котором используются зашифрованные термины, чтобы никто не догадался?

Таким образом, товарищ kanz теперь имеет право судить об RSDN как о сборище ламеров, неспособных ответить на элементарный вопрос, "как уничтожить геометрию". Я угадал?

K>Терминология — это то, что переводится с

K>английской техн.литературы на русский?

Не хочу объяснять смысл слова "терминология" — можно посмотреть с толковом словаре. Но чисто ради любопытства, можно набрать в гугле "Уничтожение геометрии" и посмотеть на результат. О какой вообще постановке задачи может идти речь в подобных "терминах"?

Тем не менее, решение задачи представляется следующим — после долгих выяснений с вытаскиванием истины пассатижами и благодаря моей неординарной интуиции .
Итак. Сначала надо найти скелет контура:

http://www.ph.tn.tudelft.nl/Courses/FIP/noframes/fip-Morpholo.html
Там речь идет о морфологических операциях с растровыми изображениями, я привожу эту ссылку лишь для того, чтобы не объяснять смысл термина "скелет". Скелет в общем случае представляет собой ненаправленный граф. Для односвязных полигонов, этот граф к тому же будет ациклическим, то есть, не будет иметь циклов. Сама по себе эта операция в векторном представлении является нетривиальной. И вот после того, как скелет найден, мы выполняем операцию эрозии (erosion) с учетом локальных расстояний до скелета. Все.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[21]: Алгоритм уничтожения геометрии
От: kanz  
Дата: 22.07.05 16:38
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>Здравствуйте, kanz, Вы писали:


K>>Да забудьте Вы эту тему, Вас вначале обучать CAD надо.

K>>У меня к — сожалению ни времени не желания к этому нет.

MS>Возможно. Но не надо хамить, это нехорошо. Прежде, чем высказывать подобные суждения, не мешало бы ознакомиться с элементарными общепринятыми понятиями в геометрии, безотносительно к каким-либо кадам.

MS>Что, CAD — это какое-то тайное знание, в котором используются зашифрованные термины, чтобы никто не догадался?

MS>Таким образом, товарищ kanz теперь имеет право судить об RSDN как о сборище ламеров, неспособных ответить на элементарный вопрос, "как уничтожить геометрию". Я угадал?


K>>Терминология — это то, что переводится с

K>>английской техн.литературы на русский?

MS>Не хочу объяснять смысл слова "терминология" — можно посмотреть с толковом словаре. Но чисто ради любопытства, можно набрать в гугле "Уничтожение геометрии" и посмотеть на результат. О какой вообще постановке задачи может идти речь в подобных "терминах"?


MS>Тем не менее, решение задачи представляется следующим — после долгих выяснений с вытаскиванием истины пассатижами и благодаря моей неординарной интуиции .

MS>Итак. Сначала надо найти скелет контура:
MS>
MS>http://www.ph.tn.tudelft.nl/Courses/FIP/noframes/fip-Morpholo.html
MS>Там речь идет о морфологических операциях с растровыми изображениями, я привожу эту ссылку лишь для того, чтобы не объяснять смысл термина "скелет". Скелет в общем случае представляет собой ненаправленный граф. Для односвязных полигонов, этот граф к тому же будет ациклическим, то есть, не будет иметь циклов. Сама по себе эта операция в векторном представлении является нетривиальной. И вот после того, как скелет найден, мы выполняем операцию эрозии (erosion) с учетом локальных расстояний до скелета. Все.


Кстати я ламерами никого не называл.
Надеюсь, здесь таких нет, (кроме меня)
И ширина не является векторной, а скорее всего скалярной величиной.
Насчет скелета Вы абсолютно правы, его надо найти.
Я нахожу его тоже, но другим способом.
Проблема- алгортим выскаивает на острых углах контура.
Вот как расчитать точно этот скелет?
Он должен быть замкнутым и циклическим (периодическим).

Теперь небольшой вывод:
У меня была 2D геометрия , мне надо было ее правильно уничтожить,
и в итоге получается скелет.
Черт побери, я был все — таки прав
Но разве нормальный человек это поймет?
Re[22]: Алгоритм уничтожения геометрии
От: McSeem2 США http://www.antigrain.com
Дата: 22.07.05 17:29
Оценка:
Здравствуйте, kanz, Вы писали:
K>Насчет скелета Вы абсолютно правы, его надо найти.
K>Я нахожу его тоже, но другим способом.
K>Проблема- алгортим выскаивает на острых углах контура.
K>Вот как расчитать точно этот скелет?

Для начала надо ответить на более простой вопрос — что является скелетом треугольника. Очевидно, что для равностороннего треугольника — это точка. А для произвольного? Во что должен в конечном итоге выродиться произвольный треугольник, при "уничтожнении" его геометрии?

K>Он должен быть замкнутым и циклическим (периодическим).


Нет. Скелет — это скелет. Я снова чувствую здесь недопонимание. В случае односвязного полигона скелет не может иметь никаких циклов. По определению. Скелет может иметь циклы только в том случае, если полигон многосвязный, то есть, имеет дыры.

K>Теперь небольшой вывод:

K>У меня была 2D геометрия , мне надо было ее правильно уничтожить,
K>и в итоге получается скелет.

То есть, чтобы получить скелет, надо "уничтожить геометрию". А чтобы правильно это сделать, нужен заранее вычисленный скелет. Замкнутый круг...
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[2]: Алгоритм уничтожения геометрии
От: kanz  
Дата: 23.07.05 04:45
Оценка:
Здравствуйте, volk, Вы писали:

V>Искомый алгоритм:


V>


Передлагаю другой
1) Взял карандаш, лист бумаги. Построил пару контуров.
Подумал, как их уничтожить, чтобы от них ничего не осталось.
Посмотрел здесь http://www.buildingblock.com/pock1s.gif
Придумал правильный алгортим
2) Запрограммировал
3) Отослал
4) Получил бабуси
5) Порядок
Re[23]: Алгоритм уничтожения геометрии
От: kanz  
Дата: 25.07.05 14:29
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>Здравствуйте, kanz, Вы писали:

K>>Насчет скелета Вы абсолютно правы, его надо найти.
K>>Я нахожу его тоже, но другим способом.
K>>Проблема- алгортим выскаивает на острых углах контура.
K>>Вот как расчитать точно этот скелет?

MS>Для начала надо ответить на более простой вопрос — что является скелетом треугольника. Очевидно, что для равностороннего треугольника — это точка. А для произвольного? Во что должен в конечном итоге выродиться произвольный треугольник, при "уничтожнении" его геометрии?


K>>Он должен быть замкнутым и циклическим (периодическим).


MS>Нет. Скелет — это скелет. Я снова чувствую здесь недопонимание. В случае односвязного полигона скелет не может иметь никаких циклов. По определению. Скелет может иметь циклы только в том случае, если полигон многосвязный, то есть, имеет дыры.


K>>Теперь небольшой вывод:

K>>У меня была 2D геометрия , мне надо было ее правильно уничтожить,
K>>и в итоге получается скелет.

MS>То есть, чтобы получить скелет, надо "уничтожить геометрию". А чтобы правильно это сделать, нужен заранее вычисленный скелет. Замкнутый круг...







Вот, расчитал скелеты, все неправильно.
Проблемы создают углы контура.
http://files.rsdn.ru/43375/skeleton.doc
Re[24]: Алгоритм уничтожения геометрии
От: kanz  
Дата: 25.07.05 15:03
Оценка:
Здравствуйте, kanz, Вы писали:

K>Здравствуйте, McSeem2, Вы писали:


MS>>Здравствуйте, kanz, Вы писали:

K>>>Насчет скелета Вы абсолютно правы, его надо найти.
K>>>Я нахожу его тоже, но другим способом.
K>>>Проблема- алгортим выскаивает на острых углах контура.
K>>>Вот как расчитать точно этот скелет?

MS>>Для начала надо ответить на более простой вопрос — что является скелетом треугольника. Очевидно, что для равностороннего треугольника — это точка. А для произвольного? Во что должен в конечном итоге выродиться произвольный треугольник, при "уничтожнении" его геометрии?


K>>>Он должен быть замкнутым и циклическим (периодическим).


MS>>Нет. Скелет — это скелет. Я снова чувствую здесь недопонимание. В случае односвязного полигона скелет не может иметь никаких циклов. По определению. Скелет может иметь циклы только в том случае, если полигон многосвязный, то есть, имеет дыры.


K>>>Теперь небольшой вывод:

K>>>У меня была 2D геометрия , мне надо было ее правильно уничтожить,
K>>>и в итоге получается скелет.

MS>>То есть, чтобы получить скелет, надо "уничтожить геометрию". А чтобы правильно это сделать, нужен заранее вычисленный скелет. Замкнутый круг...







K>Вот, расчитал скелеты, все неправильно.

K>Проблемы создают углы контура.
K>http://files.rsdn.ru/43375/skeleton.jpg
Re[25]: Алгоритм уничтожения геометрии
От: McSeem2 США http://www.antigrain.com
Дата: 25.07.05 16:22
Оценка: :)
Здравствуйте, kanz, Вы писали:

K>>Вот, расчитал скелеты, все неправильно.

K>>Проблемы создают углы контура.
K>>http://files.rsdn.ru/43375/skeleton.jpg

Ну и какой отсюда вывод? Если острые углы создают проблемы, значит надо их обрезать, то бишь скруглить до такой степени, чтобы контур вообще не имел ни одного острого угла. Операция тривиальна. Если эта идея поможет, половину денег — мне
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[26]: Алгоритм уничтожения геометрии
От: obukolov  
Дата: 25.07.05 19:37
Оценка: 10 (2)
Здравствуйте, McSeem2, Вы писали:

MS>Здравствуйте, kanz, Вы писали:


K>>>Вот, расчитал скелеты, все неправильно.

K>>>Проблемы создают углы контура.
K>>>http://files.rsdn.ru/43375/skeleton.jpg

MS>Ну и какой отсюда вывод? Если острые углы создают проблемы, значит надо их обрезать, то бишь скруглить до такой степени, чтобы контур вообще не имел ни одного острого угла. Операция тривиальна. Если эта идея поможет, половину денег — мне


Существует достаточно много алгоритмрв построения скелета, например Medial Axis Transform, Distance Transform, Hierarchic Voronoi Skeletons. Идеального с точки зрения практики скелета не дает ни один (потому что нет формального определения такого скелета), но в большинстве случаев результат вполне приличный. Если объекты линейные, можно использовать специализированные алгоритмы: SPV (Sparse pixel vectorization), OOPSV. Возможно, это поможет.
Re[25]: Алгоритм уничтожения геометрии
От: McSeem2 США http://www.antigrain.com
Дата: 27.07.05 05:53
Оценка:
Здравствуйте, kanz, Вы писали:

K>>Вот, расчитал скелеты, все неправильно.

K>>Проблемы создают углы контура.
K>>http://files.rsdn.ru/43375/skeleton.jpg

Кстати, чтобы понять задачу, хорошо бы просто представить, каков должен быть конечный результат в случаях 1 и 2 и какая между ними принципиальная разница.


При этом, надо учесть, что случай 1 — треугольник, а случай 2 — трапеция, которая может бесконечно приближаться к треугольнику (но никогда не становится им). Какая между ними принципиальная разница? Надо задать этот вопрос заказчику. Тогда, возможно, станет более понятно, что значит "уничтожение геометрии". А если не станет, значит заказчик сам не знает чего хочет.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[26]: Алгоритм уничтожения геометрии
От: kanz  
Дата: 27.07.05 06:56
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>Здравствуйте, kanz, Вы писали:


K>>>Вот, расчитал скелеты, все неправильно.

K>>>Проблемы создают углы контура.
K>>>http://files.rsdn.ru/43375/skeleton.jpg

MS>Кстати, чтобы понять задачу, хорошо бы просто представить, каков должен быть конечный результат в случаях 1 и 2 и какая между ними принципиальная разница.

MS>

MS>При этом, надо учесть, что случай 1 — треугольник, а случай 2 — трапеция, которая может бесконечно приближаться к треугольнику (но никогда не становится им). Какая между ними принципиальная разница? Надо задать этот вопрос заказчику. Тогда, возможно, станет более понятно, что значит "уничтожение геометрии". А если не станет, значит заказчик сам не знает чего хочет.



У меня пока другая поблема — self intersection.
Контур не должен сам с собой пересекаться, с такими данными я не могу дальше работать


Re: Алгоритм уничтожения геометрии
От: kanz  
Дата: 27.07.05 13:08
Оценка:
Здравствуйте, kanz, Вы писали:

K>Нужен алгортим уничтожения закрытого 2D контура.

K>Знает кто что-нибудь ?


Вот, уже кое — что работает .

А вы все мне — лямер, лямер
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.