У меня есть таблица, созданная путем добавления случайных x, y и r (радиуса), которые я использую для рисования кругов. Сначала они проверяются, чтобы новые круги не перекрывали существующие. Затем эти круги медленно растут с течением времени. Я пытаюсь понять, как проверить мою таблицу колец, когда они вырастают настолько, что пересекаются.
Я не могу найти способ протестировать первый против всех остальных в таблице, затем 2-й против всех остальных и т. д. Удалив все, что перекрывается.
Начал с этого, но понял, что в лучшем случае он не будет работать, он будет сравнивать себя только со следующим кругом, но вылетит, когда окажется в конце стола.
local function newRing()
while true do -- infinite loop to create new rings
for i, v in ipairs(rings) do
--[[ collision calculations on all rings in table until a collision
is detected using Pythagoras to calculate distance]]
if not collides then
rX= v.x
rY = v.y
rR = v.r
local dx = rX - rings[i+1].x
local dy = rY - rings[i+1].y
local distCalc = dx * dx + dy * dy
if distCalc <= ((rings[i+1].r + ringWidth) + (rR + ringWidth))^2 then
collides = true
break -- restarts while loop once one collision is found
end -- end if distCalc block
end -- i,v block
break
end -- end if not collides block
end -- end while loop
end