Distance between two points
Is there any difference between:
distance = point1.subtract(poi开发者_运维百科nt2).length;
and
distance = Point.distance(point1, point2);
Disclaimer: I don't know much about ActionScript, but this is what I'd think the difference is:
point1.subtract(point2)
probably creates some vector object that represents the vector from point2
to point1
. Obviously, the distance between the points is the length of that vector.
I could imagine that the first line would be less efficient than the second line, because in the first line a temporary vector object is created, which is only needed because you need the length of the vector. In the second line, no temporary object needs to be made - the distance between the points is probably calculated from the coordinates of the points directly.
Since this question is tagged Optimization, the longhand for the pythagorean theorem will be the most efficient way to find the distance between two points in AS3, provided that you don't:
- Instantiate an object while doing it
- Call any more Math functions than necessary (manually do an Abs, for example)
- Don't actually call any functions if you can help it
Almost all the built-in methods are conveniences. They're not optimized for speed.
The result should be the same. The difference is that the subtract() function creates a temporary Point that you immediately throw away after getting its length, whereas the static function call just does the distance formula with the two points' coordinates and returns the scalar result.
Use the second version if all you need is the scalar distance, and you don't make any use of the x or y components of the extra Point (which is just the vector from point2 to point1).
精彩评论