Hi
So normally a distance check would be done by simply doing distance < range check. So lets say distance between character a from character b.
However to optimize one would do d^2 < r^2 check.
However if one has to include the radius of each of the characters then the check would be
distance - characterradii < range where characterradii = raidusofa + radiusofb
I'm trying to think of some way where I could keep the squared optimization and also be able to include the radii part.
Thoughts??
I'm discounting this one
(d^2 - r^2)/(d+r)
as that will need the square root value of d
Thanks.
4 replies to this topic
Sponsor:
#2 Members - Reputation: 6171
Posted 06 April 2012 - 01:12 PM
distance < range + sum_of_radii
distance^2 < range^2 + 2*range*sum_of_radii + sum_of_radii^2
You should be able to precompute everything on the right-hand side and then the check again becomes distance^2 < constant. So no square root needed.
distance^2 < range^2 + 2*range*sum_of_radii + sum_of_radii^2
You should be able to precompute everything on the right-hand side and then the check again becomes distance^2 < constant. So no square root needed.
#3 Members - Reputation: 122
Posted 06 April 2012 - 01:27 PM
Good suggestion.
Do you think its worth doing this addition and multiplication operations over doing square root of distance though?
Plus I will either have radius or radius^2. So if I have radius then I will have to square it and if I have radius^2 then I will have to root it. lol.
Or I would have to save both. Probably not a good idea to double data storage.
Do you think its worth doing this addition and multiplication operations over doing square root of distance though?
Plus I will either have radius or radius^2. So if I have radius then I will have to square it and if I have radius^2 then I will have to root it. lol.
Or I would have to save both. Probably not a good idea to double data storage.






