mrbig 100 Report post Posted August 19, 2006 I've implemented ropes in my simulation, but it gets really slow with many ropes and many particles. Does anyone know a way to quickly approximate the distance between two points, or maybe a fast square root approximation? Thanks in advance, Mr. Big 0 Share this post Link to post Share on other sites
daniel_i_l 295 Report post Posted August 19, 2006 Read this for a fast (and pretty exact) square root appriximation:http://www.math.purdue.edu/~clomont/Math/Papers/2003/InvSqrt.pdfIf you want code look at the end. 0 Share this post Link to post Share on other sites
mrbig 100 Report post Posted August 19, 2006 I found exactly what I needed on this page: http://en.wikipedia.org/wiki/Euclidean_distanceYour link is very useful too!Thanks! 0 Share this post Link to post Share on other sites
thooot 122 Report post Posted August 19, 2006 You might want to look into SSE. It has special operations for fast square root and fast inverse square root. Since you're simulating many ropes and particles you're probably applying the same algorithms to them. If this is the case using SSE could result in up to a 4x improvement in speed (assuming a good implementation) since it performs 4 floating point operations in parallel. 0 Share this post Link to post Share on other sites
Raghar 96 Report post Posted August 20, 2006 Quote:Original post by mrbigDoes anyone know a way to quickly approximate the distance between two points, or maybe a fast square root approximation?d = (A.a - B.a)*(A.a - B.a) + (A.b - B.b) * ...or d = (A - B) dot (A - B)Re SSEIf it will not be killed in throughput and latency. 0 Share this post Link to post Share on other sites
TheAdmiral 1122 Report post Posted August 20, 2006 Quote:Original post by Raghard = (A.a - B.a)*(A.a - B.a) + (A.b - B.b) * ...or d = (A - B) dot (A - B)This will compute |A-B|², the square of the distance.If you can tolerate a maximum error of 6.5%, you should use an octagonal approximation: Approximate the unit circle with an octagon, giving a case-analysis on eight linear functions. The hexadecagon approximation is better yet, but (although still considerably faster than a sqrt) is a fair bit slower than the octagonal function, and is a pain to code.More accurate approximations yet can be produced using Richardson Extrapolation (daniel_i_l's article seems like a good implementation) and if you are prepared to do the work yourself, you can tailor the speed/error tradeoff to suit your needs.RegardsAdmiral 0 Share this post Link to post Share on other sites