Guest User

Untitled

a guest
May 24th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.48 KB | None | 0 0
  1. ## Old
  2.  
  3. // almost ready for 21 liners contest =)
  4. retrieveDirection: function(mPos) {
  5. var p = this.image.position, s = this.image.size, m = mPos, sh = this.snapH, sv = this.snapV;
  6. var isIn = m.x >= p.x && m.x <= p.x + s.x && m.y >= p.y && m.y <= p.y + s.y;
  7. this.dir = isIn &&
  8. (m.x >= p.x && m.x <= p.x + sh && m.y >= p.y && m.y < p.y + s.y / 2) ||
  9. (m.x >= p.x && m.x < p.x + s.x / 2 && m.y >= p.y && m.y <= p.y + sv)
  10. ? 'nw' :
  11. (m.x >= p.x + s.x / 2 && m.x <= p.x + s.x && m.y >= p.y && m.y <= p.y + sv) ||
  12. (m.x >= p.x + s.x - sh && m.x <= p.x + s.x && m.y >= p.y && m.y < p.y + s.y / 2)
  13. ? 'ne' :
  14. (m.x >= p.x + s.x - sh && m.x <= p.x + s.x && m.y >= p.y + s.y / 2 && m.y <= p.y + s.y) ||
  15. (m.x > p.x + s.x / 2 && m.x < p.x + s.x && m.y >= p.y + s.y - sv && m.y <= p.y + s.y)
  16. ? 'se' :
  17. (m.x >= p.x && m.x <= p.x + s.x / 2 && m.y >= p.y + s.y - sv && m.y <= p.y + s.y) ||
  18. (m.x >= p.x && m.x <= p.x + sh && m.y >= p.y + s.y / 2 && m.y <= p.y + s.y)
  19. ? 'sw' : null;
  20. if (isIn) {
  21. var a = m.x - p.x, b = m.y - p.y, c = s.x, d = s.y;
  22. var downDist = (a * d - c * b) / Math.sqrt(c * c + d * d);
  23. a = m.x - p.x; b = m.y - (p.y + s.y); c = s.x; d = -s.y;
  24. var upDist = (a * d - c * b) / Math.sqrt(c * c + d * d);
  25. this.axis = (downDist < 0 && upDist < 0) || (downDist >= 0 && upDist >= 0) ? 's' : 'w';
  26. }
  27. },
  28.  
  29. ## New
  30.  
  31. retrieveDirection: function(mouse) {
  32. var image = this.image.position, size = this.image.size, h = this.snapH, v = this.snapV;
  33. var right = image.x + size.x, bottom = image.y + size.y;
  34. var isIn = mouse.x >= image.x && mouse.x <= right && mouse.y >= image.y && mouse.y <= bottom;
  35. this.dir = isIn &&
  36. (mouse.y < image.y + size.y / 2) // is it north
  37. ? (mouse.x < image.x + size.x / 2) // is it west
  38. ? (mouse.x <= image.x + h && mouse.y <= image.y + v) && 'nw' // wihtin left knob
  39. : (mouse.x >= right - h && mouse.y <= image.y + v) && 'ne' // within right knob
  40. : (mouse.x < right / 2) // is it west
  41. ? (mouse.x <= image.x + h && mouse.y >= bottom - v) && 'sw' //within left knob
  42. : (mouse.x >= right - h && mouse.y >= bottom - v) && 'se' //within right knob
  43. if (isIn) {
  44. var a = mouse.x - image.x, b = mouse.y - image.y, c = size.x, d = size.y;
  45. var downDist = (a * d - c * b) / Math.sqrt(c * c + d * d);
  46. b = mouse.y - bottom; d = -size.y;
  47. var upDist = (a * d - c * b) / Math.sqrt(c * c + d * d);
  48. this.axis = (downDist < 0 && upDist < 0) || (downDist >= 0 && upDist >= 0) ? 's' : 'w';
  49. }
  50. }
Add Comment
Please, Sign In to add comment