У меня есть задача найти, какой круг пересекается с большинством других кругов.Как сравнить один элемент массива со всеми остальными элементами массива в цикле for?
У меня есть координаты x, y-координаты и радиусы многих разных кругов. Я поместил x-координаты в массив X[]
, y-координаты в Y[]
и радиус в R[]
. Я также нашел способ проверить, пересекается ли один круг с другим, как показано ниже.
Я знаю, что нужно использовать два цикла FOR, но я не могу найти способ, так что цикл сравнивает один элемент со всеми другими элементами массива, затем сравнивает другой элемент со всеми другими элементами и т. Д. Может быть, кто-то знает дорогу?
for (int i = 0; i < n; i++) // n is the number of circles
{
for (int j = 0; j < n - 1; j++)
{
// More code here...
}
}
Чтобы проверить, если круг i
пересекается с кругом i+1
, мой if
оценивает:
if (Distance (n, X, Y,i) < (Radius[i] + Radius[i+1])) // i is the index of the element
для (INT I = 0; <п; я ++) // п есть число кругов \t { \t \t для (Int J = 0, J <п - 1; j ++) Для того, чтобы проверить, если круг пересекает мой IF: if (Расстояние (n, X, Y, i) <(Радиус [i] + Радиус [i + 1])) // i - индекс элемента – feco
Прежде всего, что вы пробовали ? Можете ли вы показать нам? Во-вторых, хороший способ найти, пересекаются ли два круга, - это вычисление разности центров, а затем проверить, больше ли сумма радиуса окружности больше расстояния. Если расстояние больше суммы радиуса, круги не пересекаются. – KostasRim
Функция, которая находит расстояние: distance = sqrt (pow ((A [индекс + 1] - A [индекс]), 2) + pow ((B [индекс + 1] - B [индекс]), 2)); И функция, которая должна найти, если пересечение круга и какая окружность пересекается больше всего: for (int i = 0; i
feco