计算覆盖双直径圆的圆的坐标

时间:2015-07-23 16:38:27

标签: javascript geometry geospatial

这就是我想要实现的目标:

enter image description here

所以给定灰色圆心坐标x=ax=b以及直径d,其他6个直径为d/2的圆心的坐标是多少?

请注意,6个圆圈加上中间的第7个圆圈,覆盖了所有灰色圆圈的区域。

我试图用JavaScript计算它,我可以用其他语言移植它。

2 个答案:

答案 0 :(得分:1)

中心有一个直径为d / 2的圆圈,内有一个六边形,六角形边缘位于该圆与外部d / 2圆的交点处。 对于外部d / 2圆,它们的中心坐标偏移是:从主圆中心到六边形边(半径)的2 x距离,并考虑角度旋转。

编辑: 对不起,如果要算很多,但应该这样:
小圆直径为半圆直径:d = D / 2
六边形:s = d / 2
六角形半径:(d / 2)* sqrt(3)/ 2
抵消:(d / 2)* sqrt(3)
所以坐标是,考虑大圆圈0,0的中心:
左: - (d / 2)* sqrt(3),0
左上: - (d / 2)* sqrt(3)* cos60,(d / 2)* sqrt(3)* cos30
正确:(d / 2)* sqrt(3)* cos60,(d / 2)* sqrt(3)* cos * 30
右:+(d / 2)* sqrt(3),0
右下:(d / 2)* sqrt(3)* cos60, - (d / 2)* sqrt(3)* cos * 30
左下: - (d / 2)* sqrt(3)* cos60, - (d / 2)* sqrt(3)* cos30

答案 1 :(得分:0)

如果你有6 cicles and 360 degree,你可以从你的灰色圆圈边界的任何一点开始(这将是第一个圆圈的中心)。并且每次每次60°旋转此点以查找其他圆心。

实施例

  • 灰色圆圈中心点为:cx=0 & cy=0 with a ray R=2

  • 在灰色圆圈cx1=R && cy1=0的边框处取一个点 示例

现在你有了第一个中心点(R,0),你可以将这个点围绕灰色圆圈旋转60°,所以使用旋转公式:

x' = x*cos(theta)-y*sin(theta)

y' = y*sin(tetha)+x*cos(theta)

新观点将是:

cx2 = cx1*cos(60) - cy1*sin(60) = R/2 = 1
cy2 = cy1*sin(60) + cx1*cos(60) = R/2 = 1

依此类推,直到找到所有中心(cxk,cyk) where k in [1..6]