Найближче розташування до точки буде або на точці, або дотику до кола.
тому спочатку перевірте крапку, потім оберніть нове коло навколо краю кожного наявного кола, обчисливши відстань від точки і якщо ви перекриваєтесь під час проходження та стежите за точкою мінімальної відстані. Зупиніться, коли ви пройшли кожне коло.
тобто. перевірити всі точки на зелених лініях, плюс біле коло. де зелена лінія - це коло з радіусом червоного плюс синього
вам потрібно перевірити всю зелену лінію, а не лише перехрестя, щоб ви покривали ці крайові корпуси.
Очевидно, що крок розміру вашого обходу буде важливим з точки зору продуктивності. Але оскільки ви заявляєте, що ефективність не є проблемою, виберіть значення, що відповідає роздільній здатності вихідного значення. тобто плавати, довго?
уточнення:
моя пропозиція полягає в тому, щоб змусити всі точки навколо кожного кола тестувати на збіг з усіма іншими колами в кожній точці. ніякої кмітливості.
Якщо приклад pic вказує на кількість кіл та роздільну здатність, це не повинно бути проблемою для стандартного ПК
маємо 20 кіл середнього радіуса 200, так що приблизно 20 * 2 π * 200 балів * 20 тестів перетину = 4800000 ітерацій
Примітка:
Такі ітеративні підходи недосконалі в тому, що ваш розмір кроків, в даному випадку роздільна здатність вашого результату, може сильно вплинути на результат.
Скажіть, у мене є два червоних кола на відстані 2 пікселі та синє коло з радіусом 1 пікселя. Очевидно, що один із двох пікселів як центр синього кола перекриє один із червоних. але, очевидно, є місце для кола, якщо центр лежить між двома пікселями.
Звідси мій коментар із запитанням про дозвіл результату. про які ви сказали, може бути чим завгодно.
Ви також можете вирішити одночасне рівняння для кожної пари кіл із збільшенням радіуса на радіус синього кола.
це дасть вам точки, коли синє коло буде чіткіше торкатися обох червоних кіл, ніж повторювати.
Однак. є кілька умов, коли, якщо ви це робите, ви отримуєте неправильну чи відсутність відповіді. тобто.
1 або без кіл
2 або більше кіл, але з цільовою точкою далеко та поза ними.
багато кіл, але з цільовою точкою близько до поверхні