Point.hx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package h2d.col;
  2. import hxd.Math;
  3. class Point {
  4. public var x : Float;
  5. public var y : Float;
  6. public inline function new(x = 0., y = 0.) {
  7. this.x = x;
  8. this.y = y;
  9. }
  10. public inline function distanceSq( p : Point ) {
  11. var dx = x - p.x;
  12. var dy = y - p.y;
  13. return dx * dx + dy * dy;
  14. }
  15. public inline function distance( p : Point ) {
  16. return Math.sqrt(distanceSq(p));
  17. }
  18. public function toString() {
  19. return "{" + Math.fmt(x) + "," + Math.fmt(y) + "}";
  20. }
  21. public inline function sub( p : Point ) {
  22. return new Point(x - p.x, y - p.y);
  23. }
  24. public inline function add( p : Point ) {
  25. return new Point(x + p.x, y + p.y);
  26. }
  27. public inline function dot( p : Point ) {
  28. return x * p.x + y * p.y;
  29. }
  30. public inline function lengthSq() {
  31. return x * x + y * y;
  32. }
  33. public inline function length() {
  34. return Math.sqrt(lengthSq());
  35. }
  36. public function normalize() {
  37. var k = lengthSq();
  38. if( k < Math.EPSILON ) k = 0 else k = Math.invSqrt(k);
  39. x *= k;
  40. y *= k;
  41. }
  42. public inline function set(x,y) {
  43. this.x = x;
  44. this.y = y;
  45. }
  46. public inline function scale( f : Float ) {
  47. x *= f;
  48. y *= f;
  49. }
  50. }