J'ai une table qui est créée en ajoutant aléatoire x, y et r (rayon), que j'utilise pour dessiner des cercles. D'abord, ils sont testés pour s'assurer que les nouveaux cercles ne chevauchent pas ceux qui existent déjà. Ces cercles se développent ensuite lentement au fil du temps. J'essaye de trouver comment tester ma table d'anneaux quand ils se développent tellement qu'ils se croisent.Comment faire pour vérifier Tableau de cercles ne pas entrer en collision à mesure qu'ils grandissent
Je ne trouve pas un moyen de tester le premier par rapport à tous les autres dans la table, puis le second par rapport à tous les autres, etc. Supprimez tout chevauchement.
Commencé avec ceci mais réalisé qu'il ne fonctionnera pas au mieux il se comparera au prochain cercle seulement mais écraser quand à la fin de la table.
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
Vive fonctionne comme un charme. Je n'ai jamais vu cette construction avant [[pour k = #rings, 1, -1 do]] –