Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2022, 03:08   #1
hehehehe
Новичок
Джуниор
 
Регистрация: 10.01.2022
Сообщений: 2
По умолчанию Посчитать, сколько кругов имеют хотя бы одну общую точку с прямоугольником

Нужно написать программу по заданию.
На плоскости задан прямоугольник со сторонами, параллельными осям,
и множество различных кругов. Посчитать, сколько кругов имеют хотя бы
одну общую точку с прямоугольником.
Язык: C++

Последний раз редактировалось hehehehe; 10.01.2022 в 19:13.
hehehehe вне форума Ответить с цитированием
Старый 10.01.2022, 12:21   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

1. Наверно, всё-таки не кругов, а окружностей.
2. Язык программирования, конечно, секретный - что-то навроде Lua, Brainfuck, Алгамс ?
Даю подсказку: для каждой окружности вычислить расстояния от центра до вершин прямоугольника.
Если хотя бы одно из них меньше радиуса - то есть общие точки. Но вот если все 4 расстояния меньше - фигушки, таких точек нет, бо прямоугольник унутре окружности.
Но подумавши - тут есть одна засада: если центр окружности внутри прямоугольника, то могут быть пересечения, а все расстояния больше радиуса. Тогда надо считать расстояния не до вершин, а до сторон.
Задача не так проста, как на первый взгляд. Баксов на 10.

Последний раз редактировалось digitalis; 10.01.2022 в 13:16.
digitalis вне форума Ответить с цитированием
Старый 11.01.2022, 01:07   #3
hehehehe
Новичок
Джуниор
 
Регистрация: 10.01.2022
Сообщений: 2
По умолчанию

digitalis, C++
hehehehe вне форума Ответить с цитированием
Старый 11.01.2022, 19:02   #4
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Вчера переводил одну статью о столкновениях шаров и натолкнулся на такое понятие, как "сумма Минковского".
Если коротко, то:
1. Для окружности, центр которой вне прямоугольника:
- "раздуваем" прямоугольник на радиус окружности, а окружность "сдуваем" до точки.
Теперь у вас есть новый прямоугольник и точка.
Если точка внутри прямоугольника или на его границах то окружность имеет пересечение, хотя бы одну точку, с прямоугольником.

Тут нет всех проверок.
Это только для случая, когда центр круга вне прямоугольника и прямоугольник не лежит внутри круга целиком.
...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 12.01.2022, 20:22   #5
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

digitalis
Цитата:
1. Наверно, всё-таки не кругов, а окружностей.
Не обратил внимание в начале.
Если всё же кругов, то это пересечение фигур.
Тогда предложенный вариант, с суммой Минковского, подходит лучше.
Случаи, когда круг внутри прямоугольника или прямоугольник охватывается кругом проверяются проще.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 13.01.2022, 11:45   #6
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

ТС махнул лапой уже на все эти круги, неинтересно стало ему. А пересечение фигур - конечно, проще.
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как перенести данные таблиц в одну общую finik83 Microsoft Office Excel 2 20.04.2019 17:09
всё тот же SQL ) нужно разом влить данные в 4 таблицы и вывести в одну общую SanekWK БД в Delphi 1 08.09.2016 01:12
Определить сколько членов последовательности с номерами 1,2,4,8,16,.. имеют значение Kat9 Паскаль, Turbo Pascal, PascalABC.NET 2 22.05.2013 21:23
копирование ячеек из книг в одну(общую) DEsh Microsoft Office Excel 3 12.11.2010 12:38
Все ли пары элементов линейного массива имеют только одну общую цифру в своей записи? с++ agent007 Visual C++ 3 07.07.2010 02:36