如何计算圆圈在另一个圆圈内的位置?
How to calculate position of circle inside another circle?
我正在尝试计算一个圆在另一个圆内旋转时的 x,y 点,如图所示。
给定角度,计算内圆的 x,y 值所需的数学公式是什么?
javascript中的解决方案:
function innerX(angle) {
var rad = toRadians(angleOffset(angle));
var sx = cx + (R-r)*Math.cos(rad);
return sx;
}
function innerY(angle) {
var rad = toRadians(angleOffset(angle));
var sy = cy + (R-r)*Math.sin(rad);
return sy;
}
function topLeft(angle) {
var sx = innerX(angle);
var sy = innerY(angle);
var tl = [sx - r, sy -r];
return tl;
}
查看完整代码:
https://jsfiddle.net/axmjh45u/2/
大圆心cx, cy
,大圆心R
,小圆心r
,可以看出小圆心为
sx = cx + (R-r)*cos(angle - Pi/2)
sy = cy + (R-r)*sin(angle - Pi/2)
所以外接矩形坐标为
top = sx - r
left = sy - r
and similar for right, bottom
我加了-Pi/2
求和因为你的零角对应-Pi/2 (270 or -90 degrees)
方向
我正在尝试计算一个圆在另一个圆内旋转时的 x,y 点,如图所示。
给定角度,计算内圆的 x,y 值所需的数学公式是什么?
javascript中的解决方案:
function innerX(angle) {
var rad = toRadians(angleOffset(angle));
var sx = cx + (R-r)*Math.cos(rad);
return sx;
}
function innerY(angle) {
var rad = toRadians(angleOffset(angle));
var sy = cy + (R-r)*Math.sin(rad);
return sy;
}
function topLeft(angle) {
var sx = innerX(angle);
var sy = innerY(angle);
var tl = [sx - r, sy -r];
return tl;
}
查看完整代码: https://jsfiddle.net/axmjh45u/2/
大圆心cx, cy
,大圆心R
,小圆心r
,可以看出小圆心为
sx = cx + (R-r)*cos(angle - Pi/2)
sy = cy + (R-r)*sin(angle - Pi/2)
所以外接矩形坐标为
top = sx - r
left = sy - r
and similar for right, bottom
我加了-Pi/2
求和因为你的零角对应-Pi/2 (270 or -90 degrees)
方向