Я думаю, что это лучше всего объяснить с каким-то псевдо-кодом:C++: Проверьте значение всех свойств объекта в векторе
std::vector<Yes> objs;
//The Yes Class constructor: Yes(x,y)
//Let's imagine I instantiated this vector with one object somewhere appropriately
void inSomeFunction()
{
for(int i = 0; i < 20; ++i)
{
int randX = rand() % mapWidth;
int randY = rand() % mapHeight;
for(int j = 0; j < objs.size(); ++j)
{
if(randX > x + threshold, for all objects in my vector && randY > y + threshold, for all objects in my vector)
{
objs.push_back(Yes(randX,randY));
}
}
}
}
Так что есть окно, размеры которого mapWidth и mapHeight и я в основном только пытаясь сделать 20 объектов, которые не перекрывают друг друга в плоскости xy.
Я также хочу убедиться, что randX и randY не перекрываются, а также на некотором расстоянии от всех других существующих объектов. Итак, скажем, мой порог = 20, тогда я хочу убедиться, что randX и randY не содержатся с кругом радиуса 20, окружающим любой/весь существующий объект (ы) в векторе.
Пример для ясности: сначала Да объект находится в (x, y) = (10,20) и мой порог = 20, я хочу создать второй объект, принимая randX и randY в качестве параметров, и вставляю его в свой вектор; однако я хочу убедиться, что точка (randX, randY) не лежит в круге радиуса 20 и центрирована на (10,20), которая является координатами моего первого объекта. Программа может либо генерировать другое случайное (x, y), либо просто генерировать randX и randY, чтобы соответствовать условиям, которые я хочу, но мне нужно, чтобы они проверяли это для всех объектов в моем векторе, когда я создаю больше объектов.
Я хочу знать, как это сделать? Также для большей ясности это для игры. Я пытаюсь создать несколько зданий на двумерной карте, но я, очевидно, не хочу, чтобы они перекрывались или были близки друг к другу. Как я могу это сделать?
Что вы думаете? Я не вижу вопросительного знака. – Blacktempel
Извинения, два последних абзаца - мои вопросы, что я хочу знать, как выполнить то, что я описал в этих параграфах. – rawa