


C++ пересечение 2-х окружностей
Даны данные 2-х окружностей, x1, y1,r1, x2, y2, r2 - x,y - координаты точек центра окружности, r - радиус окружности.
Требуется определить пересекаются ли эти окружности.
Я делаю так: Определяю длину от точки центра первой окружности до второй, и если эта длину больше чем сумма радиуса первой и второй окружности значет не пересекаются.
int x1, y1,r1, x2, y2, r2;
...
bool q = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2)) > (r1 + r2);
Правильно получится решение или нет?
Правильно, но:
а) размеры не обязательно должны быть целыми.
б) гораздо быстрее и эффективнее проверять
(x2-x1)*(x2-x1)+(y2-y1)*(y2-y1) > (r1+r2)*(r1+r2)
Умножение выполняется гораздо быстрее, чем извлечение корня и возведение в произвольную степень.
Ну конечно, это же так просто! Только приведение к типу double для аргумента pow нужно делать.
Да, правильно.
Если вам нужны точки пересечения, то их можно посчитать из системы или настроить треугольников.