Задать вопрос
@GreatRash

Как раскидать объекты по определенному объему без пересечения?

Собственно сабж: есть некий объём XYZ, и N объектов, которые должны уместиться в этом объёме. Как их раскидать рандомно так, чтобы они гарантированно не пересекались? Я придумал решение в лоб:


1) генерим рандомные координаты

2) помечаем, что эти координаты заняты

3) на следующей итерации смотрим не заняты ли координаты

4) если заняты, то повторяем всё заново


Это решение хреновое, т.к. где-то после 50 объектов комп начинает ощутимо задумываться. Можно ли как-то быстрее это сделать?
  • Вопрос задан
  • 9982 просмотра
Подписаться 2 Оценить 3 комментария
Помогут разобраться в теме Все курсы
  • Skillbox
    Профессия Инженер
по тестированию
    10 месяцев
    Далее
  • Нетология
    Разработчик игр на Unity
    13 месяцев
    Далее
  • XYZ School
    Разработка игр на Unity
    5 месяцев
    Далее
Решения вопроса 1
demolishka
@demolishka
Если объекты единичного размера, то можно провести биекцию между точками в параллелепипеде объема XYZ и натуральными числами 1..XYZ, сгенерировать случайную перестановку и расставить объекты в позициях соответствующих первым N элементам перестановки. Сложность O(XYZ) и равномерное распределение.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@GreatRash Автор вопроса

Объекты не единичного размера, но пространство разбито на одинаковые "клетки", так что решение подойдёт. Спасибо.

Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы