这就是我想要实现的目标:
所以给定灰色圆心坐标x=a
和x=b
以及直径d
,其他6个直径为d/2
的圆心的坐标是多少?
请注意,6个圆圈加上中间的第7个圆圈,覆盖了所有灰色圆圈的区域。
我试图用JavaScript计算它,我可以用其他语言移植它。
答案 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]