我发现这个以/ (加上and )开头并计算旋转到/的优秀问题和答案。这个计算完美,但我想在相反的方向运行它;从/和开始,我想计算原始/和.x
y
center x/y
degrees/radians
x'
y'
x'
y'
degrees/radians
x
y
center x/y
(x', y') = new position
(xc, yc) = center point things rotate around
(x, y) = initial point
theta = counterclockwise rotation in radians (radians = degrees * Pi / 180)
dx = x - xc
dy = y - yc
x' = xc + dx cos(theta) - dy sin(theta)
y' = yc + dx sin(theta) + dy cos(theta)
或者,在 JavaScript/jQuery 中:
XYRotatesTo = function($element, iDegrees, iX, iY, iCenterXPercent, iCenterYPercent) {
var oPos = $element.position(),
iCenterX = ($element.outerWidth() * iCenterXPercent / 100),
iCenterY = ($element.outerHeight() * iCenterYPercent / 100),
iRadians = (iDegrees * Math.PI / 180),
iDX = (oPos.left - iCenterX),
iDY = (oPos.top - iCenterY)
;
return {
x: iCenterX + (iDX * Math.cos(iRadians)) - (iDY * Math.sin(iRadians)),
y: iCenterY + (iDX * Math.sin(iRadians)) + (iDY * Math.cos(iRadians))
};
};
上面的数学/代码解决了图A中的情况;它根据/ (红圈)、(蓝星)和 的已知值计算目的地x'
/ (绿圈)的位置。y'
x
y
center x/y
degrees/radians
但我需要数学/代码来解决图 B;我不仅可以找到目的地x
/ y
(绿色圆圈),还可以center x/y
从起始x
/ y
(灰色圆圈,尽管可能不需要)、目的地x'
/ y'
(红色圆圈)和degrees/radians
.
上面的代码将通过(感谢@andrew cooke 的答案,该答案已被他删除)解决了目的地x
/ y
(绿色圆圈) ,但为了做到这一点,我需要向其中输入目的地的位置(绿色星),这就是我目前缺少的计算,如下图 C 所示:iDegrees * -1
center x/y
那么......我如何找到给定的坐标?
/ ?
(绿色星)n
,A
(角度)和x'
/ y'
(红色圆圈)?