Я в ужасном состоянии с просьбой о последней минуте в консалтинговом проекте, над которым я работаю.Получение области перекрытия двух окружностей
По сути вот что я пытаюсь сделать:
У меня есть SurfaceView, который рисует серию случайным образом размера кругов. Каждый круг может иметь радиус от 50 до 100.
х, у значения генерируется случайным образом наряду со случайным радиусом
Каждый круг создается как объект, представляющий этот круг (х, у COORD х и радиус), и он добавляется в список.
Как только все они созданы, они нарисованы.
Проблема в том, что я хочу убедиться, что ни одна из этих кругов не перекрывается.
Я немного борюсь. Кажется, что это не должно быть так сложно, но это для меня, к сожалению.
Вот мой код до сих пор (я знаю, что это не близко ... быть добрым):
x = 100 + (int) (Math.random() * (mCanvasWidth - 200));
y = 100 + (int) (Math.random() * (mCanvasHeight - 200));
radius = 50 + (int) (Math.random() * 99);
color[0] = (float) (Math.random() * 360);
color[1] = 1;
color[2] = 1;
String radVal = String.valueOf(radius);
circle circ = new circle(x, y, radius, Color.HSVToColor(128, color), radVal);
boolean addit = true;
for (dot d : Dots) {
int leftSide = d.get_x() - radius;
int rightSide = d.get_x() + radius;
int xBoundary = x + radius;
int yBoundary = y + radius;
int exist_xLeft = d.get_x() - d.get_radius();
int exist_xRight = d.get_x() + d.get_radius();
int exist_yTop = d.get_y() - d.get_radius();
int exist_yBottom = d.get_y() + d.get_radius();
if ((xBoundary > exist_xLeft) && (xBoundary < exist_xRight))
{
if (yBoundary > (exist_yTop) && (yBoundary < exist_yBottom)) {
addit = false;
break;
}
}
}
if (addit)
circles.add(mdot);
if (circles.size() >= 5)
running = false;
Затем он перебирает список кругов и рисует их на холст.
Любые предложения о том, где я не могу обнаружить обнаружение столкновения?
Этот ответ дал мне, что мне нужно: http://stackoverflow.com/questions/306316/determine-if-two-rectangles-overlap-each- другое – tronious
@markE Не могли бы вы объяснить больше? Я пытался проверить выражение, предполагающее следующие значения: 'cx1 = 0; Cy1 = 0; R1 = 5; CX2 = 9; су2 = 0; r2 = 5; '. В этом случае не сталкиваются круги? –
@markE - Спасибо за ваше предложение. Я попробовал ваше решение, и оно не работает. Я все еще сталкиваюсь с перекрытиями ... хотя и второстепенными перекрытиями ... все еще есть перекрытия. – tronious