Вы можете рассматривать это как статический случай в 3D со временем как дополнительную координату. Круг с траекторией стал усечённым, а луч находится в плоскости времени = t k . Если усеченные элементы расположены не слишком плотно, чем может помочь разбиение двоичного пространства (дерево k-d, ...).
Чтобы найти все разделы, пересекаемые лучом, сначала найдите раздел, где находится начало координат, а затем пройдите (в дереве) соседом раздела в направлении луча. Это зависит от используемого метода разделения. Он является линейным по количеству пересекаемых лучом перегородок.
Обновление: Идея состоит в том, чтобы помещать усеченный конус в каждый раздел, которого он касается. Один фрустум будет в нескольких разделах.
Это пример в 1 измерении плюс время. Все одинаково, круги имеют начальную и конечную точку, а также начальный и конечный радиус.
1 | E /
| . /
| . /
| . /
| . /
0 | S /
t/X
Разделение в направлении X:
| E : /
| . :/
| . :
| . /:
| . / :
| S / :
X
Эта трапеция будет проходить в обоих разделах.
Разделение по времени:
| E : /
| . :/
| . :
t-------------------
| . / :
| S / :
X
Трапеция из левого раздела X будет идти в обоих временных разделах, в то время как в правом разделе X она будет идти только в верхнем разделе.
Для его реализации необходимо рассчитать, есть ли пересечение между линией и плоскостью оси на некоторой плоской части и нет ли пересечения, на какой стороне плоскости находится линия. Расчет одинаков в случае 2D или даже в более высоких измерениях.