[CDR 2017-2021] какая самая быстрая функция поиска чего-либо по координате точки?

DukereD

макрософил
Топикстартер
Сообщения
462
Реакции
114
Вопрос в тему поиска.
какая самая быстрая функция поиска чего-либо по координате точки?
ActivePage.FindShapeAtPoint
или тот же ActiveLayer.FindShapes лучше?
или shape.IsOnShape можно использовать?
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 209
Реакции
10 848

DukereD

макрософил
Топикстартер
Сообщения
462
Реакции
114
необходимо узнать есть ли в этой координате что-то т.е. линия или точка или внутренность объекта. а еще неплохо бы узнать если это дырка объекта.
 

DukereD

макрософил
Топикстартер
Сообщения
462
Реакции
114
ну а чо.. по координате пустота, но это пустота внутри объекта. об этом конечно тоже хотелось бы знать.
тут получается тогда нужны два способа..
один самый быстрый т.е внутри объекта или нет. и второй самый подробный если внутри, то где именно, на границе, на точке или в дырке )
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 209
Реакции
10 848
Формализовать понятие "дырка обьекта" с математической точки зрения весьма нетривиально.
По поводу остального - кореловские алгоритмы обнаружения обьектов в данной точке ужасно глючны. В итоге сам делал так - растрировал изображение с заданной точностью и проверял попиксельно. Тем более, корел внутри себя, как выяснилось, тоже так делает, только менее предсказуемо.
 
  • Спасибо
Реакции: NatalieRedFox_333

DukereD

макрософил
Топикстартер
Сообщения
462
Реакции
114
Формализовать понятие "дырка обьекта" с математической точки зрения весьма нетривиально.
По поводу остального - кореловские алгоритмы обнаружения обьектов в данной точке ужасно глючны. В итоге сам делал так - растрировал изображение с заданной точностью и проверял попиксельно. Тем более, корел внутри себя, как выяснилось, тоже так делает, только менее предсказуемо.
растрировать вектор для проверки ? ого.. средством корела или своими алгоритмами? это же капец как затратно должно быть.

а по поводу "дырки" то тут проще. считаю считать дыркой контур внутри контура т.е. считаем сколько "вложенностей" у курвы и если количество вложенности четное - то это дырка.

в общем я так понял надо делать таймер и самому проверять кто быстрее работает )
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 209
Реакции
10 848
растрировать вектор для проверки ? ого.. средством корела или своими алгоритмами? это же капец как затратно должно быть.

а по поводу "дырки" то тут проще. считаю считать дыркой контур внутри контура т.е. считаем сколько "вложенностей" у курвы и если количество вложенности четное - то это дырка.
Как бы не так. Субконтура могут пересекаться, контура могут самопересекаться, то есть внутри одного субконтура могут быть как дырки так и не дырки, вдобавок, зависит от направления обхода и правила заливки, глубина кроличьей норы весьма велика.

Я не просто так сказал про растрирование - реально встроенные алгоритмы негодные совсем. Когда я столкнулся с реализацией подобного контроля, то на реальных задачах баги сыпались как из рога изобилия, пока не плюнул и сделал свою реализацию, такие дела.
 

DukereD

макрософил
Топикстартер
Сообщения
462
Реакции
114
Как бы не так. Субконтура могут пересекаться, контура могут самопересекаться, то есть внутри одного субконтура могут быть как дырки так и не дырки, вдобавок, зависит от направления обхода и правила заливки, глубина кроличьей норы весьма велика.

Я не просто так сказал про растрирование - реально встроенные алгоритмы негодные совсем. Когда я столкнулся с реализацией подобного контроля, то на реальных задачах баги сыпались как из рога изобилия, пока не плюнул и сделал свою реализацию, такие дела.
так.. с определением куда именно попал дела обстоят плохо .. как и с подсчетом площади собственно ))))

а что на счет просто самого быстрого поиска вообще. каким лучше определять находится ли там что-либо.
может просто selectrectangle или как там ее?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 209
Реакции
10 848
так.. с определением куда именно попал дела обстоят плохо .. как и с подсчетом площади собственно ))))

а что на счет просто самого быстрого поиска вообще. каким лучше определять находится ли там что-либо.
может просто selectrectangle или как там ее?
Самый быстрый и надежный способ (по сути, и единственно верный) - выводить из корела в натив.
 

DukereD

макрософил
Топикстартер
Сообщения
462
Реакции
114

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 209
Реакции
10 848
Это уж как реализуете. Самому с нуля реализовывать, конечно, болт - это охрененный матан, но, по счастью, есть готовые библиотеки векторной графики.
 

DukereD

макрософил
Топикстартер
Сообщения
462
Реакции
114
Это уж как реализуете. Самому с нуля реализовывать, конечно, болт - это охрененный матан, но, по счастью, есть готовые библиотеки векторной графики.
матан не то слово. я только нахождение пересечения двух безье с трудом осилил понять математику ))))
 

DukereD

макрософил
Топикстартер
Сообщения
462
Реакции
114
так а все же по теме.
какая самая быстрая?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 209
Реакции
10 848
Вопрос лишен смысла. Если вся система глючная зачем искать среди глючных функций самую быструю? Для меня компромис был именно в растрировании.
 

DukereD

макрософил
Топикстартер
Сообщения
462
Реакции
114
Вопрос лишен смысла. Если вся система глючная зачем искать среди глючных функций самую быструю? Для меня компромис был именно в растрировании.
сказать, что глючная и забить конечно проще всего. но есть же много встроенных функций какая-то же все же работает лучше.
так можно и на корел сказать, что он глючный и что теперь с нуля свой корел писать чтоли?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 209
Реакции
10 848
Что прделать, вся наша жизнь построена из компромиссов. Растрирование работает более-менее устойчиво, но относительное положение точек и контуров сделано откровенно на отделись.
Так же, кстати, как и вычисление площади.