Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public function calculateIntersection(line: Line) : Point
- {
- const x11: Number = this.point1.x;
- const y11: Number = this.point1.y;
- const x12: Number = this.point2.x;
- const y12: Number = this.point2.y;
- const x21: Number = line.point1.x;
- const y21: Number = line.point1.y;
- const x22: Number = line.point2.x;
- const y22: Number = line.point2.y;
- if (this.isSegment && line.isSegment)
- {
- if (Math.min(x11, x12) > Math.max(x21, x22) || Math.max(x11, x12) < Math.min(x21, x22)) return null;
- if (Math.min(y11, y12) > Math.max(y21, y22) || Math.max(y11, y12) < Math.min(y21, y22)) return null;
- }
- const fseX: Number = x12 - x11;
- const fseY: Number = y12 - y11;
- const sseX: Number = x22 - x21;
- const sseY: Number = y22 - y21;
- const sfsX: Number = x11 - x21;
- const sfsY: Number = y11 - y21;
- const denominator: Number = fseX * sseY - fseY * sseX;
- const a: Number = sseX * sfsY - sfsX * sseY;
- if (denominator == 0) return null;
- var u: Number = a / denominator;
- if (this.isSegment && (u < 0.0 || u > 1.0)) return null;
- const b: Number = fseX * sfsY - sfsX * fseY;
- var u2: Number = b / denominator;
- if (line.isSegment && (u2 < 0.0 || u2 > 1.0)) return null;
- const rx: Number = x11 + fseX * u;
- const ry: Number = y11 + fseY * u;
- return new Point(MathUtils.round(rx, 10), MathUtils.round(ry, 10));
- }
Add Comment
Please, Sign In to add comment