Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## Old
- // almost ready for 21 liners contest =)
- retrieveDirection: function(mPos) {
- var p = this.image.position, s = this.image.size, m = mPos, sh = this.snapH, sv = this.snapV;
- var isIn = m.x >= p.x && m.x <= p.x + s.x && m.y >= p.y && m.y <= p.y + s.y;
- this.dir = isIn &&
- (m.x >= p.x && m.x <= p.x + sh && m.y >= p.y && m.y < p.y + s.y / 2) ||
- (m.x >= p.x && m.x < p.x + s.x / 2 && m.y >= p.y && m.y <= p.y + sv)
- ? 'nw' :
- (m.x >= p.x + s.x / 2 && m.x <= p.x + s.x && m.y >= p.y && m.y <= p.y + sv) ||
- (m.x >= p.x + s.x - sh && m.x <= p.x + s.x && m.y >= p.y && m.y < p.y + s.y / 2)
- ? 'ne' :
- (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) ||
- (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)
- ? 'se' :
- (m.x >= p.x && m.x <= p.x + s.x / 2 && m.y >= p.y + s.y - sv && m.y <= p.y + s.y) ||
- (m.x >= p.x && m.x <= p.x + sh && m.y >= p.y + s.y / 2 && m.y <= p.y + s.y)
- ? 'sw' : null;
- if (isIn) {
- var a = m.x - p.x, b = m.y - p.y, c = s.x, d = s.y;
- var downDist = (a * d - c * b) / Math.sqrt(c * c + d * d);
- a = m.x - p.x; b = m.y - (p.y + s.y); c = s.x; d = -s.y;
- var upDist = (a * d - c * b) / Math.sqrt(c * c + d * d);
- this.axis = (downDist < 0 && upDist < 0) || (downDist >= 0 && upDist >= 0) ? 's' : 'w';
- }
- },
- ## New
- retrieveDirection: function(mouse) {
- var image = this.image.position, size = this.image.size, h = this.snapH, v = this.snapV;
- var right = image.x + size.x, bottom = image.y + size.y;
- var isIn = mouse.x >= image.x && mouse.x <= right && mouse.y >= image.y && mouse.y <= bottom;
- this.dir = isIn &&
- (mouse.y < image.y + size.y / 2) // is it north
- ? (mouse.x < image.x + size.x / 2) // is it west
- ? (mouse.x <= image.x + h && mouse.y <= image.y + v) && 'nw' // wihtin left knob
- : (mouse.x >= right - h && mouse.y <= image.y + v) && 'ne' // within right knob
- : (mouse.x < right / 2) // is it west
- ? (mouse.x <= image.x + h && mouse.y >= bottom - v) && 'sw' //within left knob
- : (mouse.x >= right - h && mouse.y >= bottom - v) && 'se' //within right knob
- if (isIn) {
- var a = mouse.x - image.x, b = mouse.y - image.y, c = size.x, d = size.y;
- var downDist = (a * d - c * b) / Math.sqrt(c * c + d * d);
- b = mouse.y - bottom; d = -size.y;
- var upDist = (a * d - c * b) / Math.sqrt(c * c + d * d);
- this.axis = (downDist < 0 && upDist < 0) || (downDist >= 0 && upDist >= 0) ? 's' : 'w';
- }
- }
Add Comment
Please, Sign In to add comment