| 1 | // Get angle on circle from mouse position |
| 2 | function getAngleOnCircleFromOffsetMouse(evt) { |
| 3 | const x = (evt.pageX - element.offset().left); |
| 4 | const y = (evt.pageY - element.offset().top); |
| 5 | |
| 6 | // https://math.stackexchange.com/a/127615 |
| 7 | const center = { x: width / 2, y: width / 2 }; |
| 8 | const xCenter = (x - center.x); |
| 9 | const yCenter = (y - center.y); |
| 10 | const circlePoint = { |
| 11 | x: center.x + radius * (xCenter / Math.sqrt(xCenter * xCenter + yCenter * yCenter)), |
| 12 | y: center.y + radius * (yCenter / Math.sqrt(xCenter * xCenter + yCenter * yCenter)), |
| 13 | }; |
| 14 | |
| 15 | const angle = Math.atan2(circlePoint.y - center.y, circlePoint.x - center.x) + Math.PI / 2; |
| 16 | return angle < 0 ? Math.PI * 2 - Math.abs(angle) : angle; |
| 17 | } |
evert / Point-on-sphere
Last active 4 months ago
Revision 91799eee434573fd444b483392cf59e5246ab4de