求圆上点的度数 (0-360º)

发布于 2024-11-19 09:04:05 字数 700 浏览 3 评论 0原文

我正在开发一个小型网络应用程序,我需要在其中旋转形状。我 想通过抓住圆上的一个点来实现这一点 拖动它来旋转图像。

这里有一个快速说明来帮助解释事情:

two point on Circle, i'mlooking to find the Degrees of p1

我的主要圆可以拖动到画布上的任何位置。我知道这是 半径 (r) 且 12 点钟方向 (p0) 始终为 (cx, cy - r)。什么 我需要知道 p1 的度数是多少(0-360°),这样我就可以旋转 主圆的内容与 Raphael.rotate() 相应。

我运行了一堆不同的 JavaScript 公式来找到这个(示例),但似乎没有一个能给我 0-360 之间的值以及我的基本数学技能 都严重不足。

颜色选择器演示(沿着右侧的环滑动光标)具有我想要的行为,但即使在仔细研究源代码,我似乎无法准确地复制它。

任何能指引我正确方向的事情将不胜感激。

I'm working on a small webapp in which I need to rotate shapes. I
would like to achieve this by grabbing a point on a circle and
dragging it around to rotate the image.

Here's a quick illustration to help explain things:

two points on circle, i'm looking to find the degrees of p1

My main circle can be dragged anywhere on the canvas. I know it's
radius (r) and where 12 o'clock (p0) will always be (cx, cy - r). What
I need to know is what degree p1 will be (0-360º) so I can rotate the
contents of the main circle accordingly with Raphael.rotate().

I've run through a bunch of different JavaScript formulations to find this (example), but none seem to give me values between 0-360 and my basic math skills
are woefully deficient.

The Color Picker demo (sliding the cursor along the ring on the right) has the behavior I want, but even after poring over the source code I can't seem to replicate it accurately.

Anything to point me in the correct direction would be appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

星軌x 2024-11-26 09:04:05
// Angle between the center of the circle and p1,
// measured in degrees counter-clockwise from the positive X axis (horizontal)
( Math.atan2(p1.y-cy,p1.x-cx) * 180/Math.PI + 360 ) % 360

圆心与 p0 之间的角度始终为 +90°。有关更多信息,请参阅 Math.atan2细节。

// Angle between the center of the circle and p1,
// measured in degrees counter-clockwise from the positive X axis (horizontal)
( Math.atan2(p1.y-cy,p1.x-cx) * 180/Math.PI + 360 ) % 360

The angle between the center of the circle and p0 will always be +90°. See Math.atan2 for more details.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文