evert revised this gist 2 years ago. Go to revision
1 file changed, 17 insertions
point-on-sphere.js(file created)
| @@ -0,0 +1,17 @@ | |||
| 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 | + | } | |
Newer
Older