| 123456789101112131415161718192021222324 |
- function intersectEllipse (node, rx, ry, point) {
- // Formulae from: http://mathworld.wolfram.com/Ellipse-LineIntersection.html
- const cx = node.x
- const cy = node.y
- const px = cx - point.x
- const py = cy - point.y
- const det = Math.sqrt(rx * rx * py * py + ry * ry * px * px)
- let dx = Math.abs(rx * ry * px / det)
- if (point.x < cx) {
- dx = -dx
- }
- let dy = Math.abs(rx * ry * py / det)
- if (point.y < cy) {
- dy = -dy
- }
- return {x: cx + dx, y: cy + dy}
- }
- export default intersectEllipse
|