mathe
发表于 2021-10-5 13:58:41
上面的代码发现包含一些非法解,最后发现存在bug,修复了两个bug后,得到如附件更多的结果:
其中第六个圆分为半径为$\sqrt{2}$和$\sqrt{5}$俩大类。
比如可以如下面几个图,初始点A和B,其中红色的是最后一步圆和正方形第三个顶点H(但是第二个图H标错了)(6个圆做出正方形第三个顶点),其它各圆的半径为图中同色线段的长度
mathe
发表于 2021-10-5 22:14:14
另外我一直在考虑另外一种做图方案,在做好5个圆以后,前面的方案总是在第6个圆做出一个正方形的顶点,然后第7个圆做出另外一个顶点。
那么有没有可能第7个圆直接做出两个正方形的顶点呢?这个步骤需要第7个圆的圆心在已知边的中垂线上,而且半径长度为这个圆心到正方形另外两个顶点的距离。而这些方案也是现在前面搜索过程唯一可能遗漏的方案。
然后添加搜索方案以后,发现找出了非常多的解,原来对于任何一个前面的方案(第6个圆做出一个正方形的顶点后,由于我们总是已经找出一些点在已知边的中垂线上,那么一这些点为圆心,它们到第6个圆做出的顶点的距离为半径,就可以得到一个同时经过最后两个顶点的圆),但是这些方案显然是平凡的,不是我们需要的。
过滤掉这些方案以后,果然可以发现新的做图方法,比如
如下附件,共可以找到490种不同做图方案(应该有很多类似的做图方案),其中新方案只有8种
ejsoon
发表于 2021-10-6 01:47:43
mathe 发表于 2021-10-5 13:58
上面的代码发现包含一些非法解,最后发现存在bug,修复了两个bug后,得到如附件更多的结果:
其中第六个 ...
我忘記加一個限制條件了,在Euclidea這個遊戲的4.11出現這道題時,還不能量長度。亦即只能通過現有的點作為圓心,經過另一個點畫圓。
mathe
发表于 2021-10-6 09:32:07
加上限制以后,只找到44个解,但是两种方案都存在,
比如其中第一个方案就是第7个圆同时产生两个顶点,人工挺难构造的。
Find 6th circle center P(1.213525,-0.165396) R0.756934
7th circles center (0.500000,0.866025), Radius 0.517638 to (0.695909,0.386892)
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,-0.866025) R1.000000
Circle center P(-0.500000,0.866025) R2.000000
Circle center P(-0.500000,-0.866025) R1.732051
Find 6th circle center P(-0.463525,-1.133642) R1.981679
7th circles center (0.500000,0.866025), Radius 0.517638 to (-0.012896,0.796121)
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,-0.866025) R1.000000
Circle center P(-0.500000,0.866025) R2.000000
Circle center P(-0.500000,-0.866025) R1.732051
Find 6th circle center P(2.000000,0.000000) R2.236068
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.000000
Circle center P(0.500000,-0.866025) R1.732051
Circle center P(-1.000000,0.000000) R2.524338
Find 6th circle center P(2.000000,0.000000) R2.236068
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.732051
Circle center P(0.500000,-0.866025) R1.000000
Circle center P(-1.000000,0.000000) R2.524338
Find 6th circle center P(2.000000,0.000000) R2.236068
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.000000
Circle center P(0.500000,-0.866025) R1.732051
Circle center P(-1.000000,0.000000) R0.792287
Find 6th circle center P(2.000000,0.000000) R2.236068
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.732051
Circle center P(0.500000,-0.866025) R1.000000
Circle center P(-1.000000,0.000000) R0.792287
Find 6th circle center P(1.213525,0.165396) R0.756934
7th circles center (0.500000,-0.866025), Radius 1.931852 to (1.231142,0.922125)
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.000000
Circle center P(-0.500000,0.866025) R1.732051
Circle center P(-0.500000,-0.866025) R2.000000
Find 6th circle center P(-0.463525,1.133642) R1.981679
7th circles center (0.500000,-0.866025), Radius 1.931852 to (-1.414155,-0.605138)
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.000000
Circle center P(-0.500000,0.866025) R1.732051
Circle center P(-0.500000,-0.866025) R2.000000
Find 6th circle center P(1.000000,0.000000) R1.414214
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,-0.866025) R1.732051
Circle center P(1.500000,0.866025) R1.732051
Circle center P(2.000000,0.000000) R1.000000
Find 6th circle center P(1.000000,0.000000) R1.414214
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,-0.866025) R1.732051
Circle center P(1.500000,0.866025) R1.732051
Circle center P(2.000000,0.000000) R1.000000
Find 6th circle center P(1.463525,-1.133642) R1.981679
7th circles center (0.500000,0.866025), Radius 0.517638 to (1.012896,0.796121)
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,-0.866025) R1.000000
Circle center P(1.500000,0.866025) R2.000000
Circle center P(1.500000,-0.866025) R1.732051
Find 6th circle center P(-0.213525,-0.165396) R0.756934
7th circles center (0.500000,0.866025), Radius 0.517638 to (0.304091,0.386892)
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,-0.866025) R1.000000
Circle center P(1.500000,0.866025) R2.000000
Circle center P(1.500000,-0.866025) R1.732051
Find 6th circle center P(1.000000,0.000000) R1.414214
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.732051
Circle center P(2.000000,0.000000) R1.000000
Circle center P(1.500000,-0.866025) R1.732051
Find 6th circle center P(1.000000,0.000000) R1.414214
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.732051
Circle center P(2.000000,0.000000) R1.000000
Circle center P(1.500000,-0.866025) R1.732051
Find 6th circle center P(1.463525,1.133642) R1.981679
7th circles center (0.500000,-0.866025), Radius 1.931852 to (2.414155,-0.605138)
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.000000
Circle center P(1.500000,0.866025) R1.732051
Circle center P(1.500000,-0.866025) R2.000000
Find 6th circle center P(-0.213525,0.165396) R0.756934
7th circles center (0.500000,-0.866025), Radius 1.931852 to (-0.231142,0.922125)
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.000000
Circle center P(1.500000,0.866025) R1.732051
Circle center P(1.500000,-0.866025) R2.000000
Find 6th circle center P(2.000000,0.000000) R2.236068
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.000000
Circle center P(0.500000,-0.866025) R1.732051
Circle center P(1.457427,0.577350) R1.732051
Find 6th circle center P(2.000000,0.000000) R2.236068
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.000000
Circle center P(0.500000,-0.866025) R1.732051
Circle center P(-0.457427,0.577350) R1.732051
Find 6th circle center P(2.000000,0.000000) R2.236068
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.732051
Circle center P(0.500000,-0.866025) R1.000000
Circle center P(1.457427,-0.577350) R1.732051
Find 6th circle center P(2.000000,0.000000) R2.236068
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.732051
Circle center P(0.500000,-0.866025) R1.000000
Circle center P(-0.457427,-0.577350) R1.732051
Find 6th circle center P(1.000000,-1.732051) R2.236068
7th circles center (0.500000,0.866025), Radius 0.517638 to (0.866025,0.500000)
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,-0.866025) R1.000000
Circle center P(-0.500000,-0.866025) R1.732051
Circle center P(-0.500000,0.866025) R2.524338
Find 6th circle center P(1.000000,-1.732051) R2.236068
7th circles center (0.500000,0.866025), Radius 0.517638 to (0.866025,0.500000)
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,-0.866025) R1.000000
Circle center P(-0.500000,-0.866025) R1.732051
Circle center P(-0.500000,0.866025) R0.792287
Find 6th circle center P(1.000000,1.732051) R2.236068
7th circles center (0.500000,-0.866025), Radius 1.931852 to (-0.866025,0.500000)
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.000000
Circle center P(-0.500000,0.866025) R1.732051
Circle center P(-0.500000,-0.866025) R2.524338
Find 6th circle center P(1.000000,1.732051) R2.236068
7th circles center (0.500000,-0.866025), Radius 1.931852 to (-0.866025,0.500000)
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.000000
Circle center P(-0.500000,0.866025) R1.732051
Circle center P(-0.500000,-0.866025) R0.792287
Find 6th circle center P(0.000000,-1.732051) R2.236068
7th circles center (0.500000,0.866025), Radius 0.517638 to (0.133975,0.500000)
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,-0.866025) R1.000000
Circle center P(1.500000,-0.866025) R1.732051
Circle center P(1.500000,0.866025) R0.792287
Find 6th circle center P(0.000000,-1.732051) R2.236068
7th circles center (0.500000,0.866025), Radius 0.517638 to (0.133975,0.500000)
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,-0.866025) R1.000000
Circle center P(1.500000,-0.866025) R1.732051
Circle center P(1.500000,0.866025) R2.524338
Find 6th circle center P(0.000000,1.732051) R2.236068
7th circles center (0.500000,-0.866025), Radius 1.931852 to (1.866025,0.500000)
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.000000
Circle center P(1.500000,0.866025) R1.732051
Circle center P(1.500000,-0.866025) R0.792287
Find 6th circle center P(0.000000,1.732051) R2.236068
7th circles center (0.500000,-0.866025), Radius 1.931852 to (1.866025,0.500000)
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.000000
Circle center P(1.500000,0.866025) R1.732051
Circle center P(1.500000,-0.866025) R2.524338
Find 6th circle center P(0.000000,-1.732051) R2.236068
7th circles center (0.500000,0.866025), Radius 0.517638 to (0.133975,0.500000)
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,-0.866025) R1.000000
Circle center P(1.500000,-0.866025) R1.732051
Circle center P(0.728714,0.684819) R1.732051
Find 6th circle center P(0.000000,1.732051) R2.236068
7th circles center (0.500000,-0.866025), Radius 1.931852 to (1.866025,0.500000)
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.000000
Circle center P(1.500000,0.866025) R1.732051
Circle center P(0.728714,-0.684819) R1.732051
Find 6th circle center P(0.000000,1.732051) R2.236068
7th circles center (0.500000,-0.866025), Radius 1.931852 to (1.866025,0.500000)
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.000000
Circle center P(1.500000,0.866025) R1.732051
Circle center P(-0.228714,0.973494) R1.732051
Find 6th circle center P(0.000000,-1.732051) R2.236068
7th circles center (0.500000,0.866025), Radius 0.517638 to (0.133975,0.500000)
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,-0.866025) R1.000000
Circle center P(1.500000,-0.866025) R1.732051
Circle center P(-0.228714,-0.973494) R1.732051
Find 6th circle center P(1.000000,1.732051) R2.236068
7th circles center (0.500000,-0.866025), Radius 1.931852 to (-0.866025,0.500000)
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.000000
Circle center P(-0.500000,0.866025) R1.732051
Circle center P(1.228714,0.973494) R1.732051
Find 6th circle center P(1.000000,-1.732051) R2.236068
7th circles center (0.500000,0.866025), Radius 0.517638 to (0.866025,0.500000)
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,-0.866025) R1.000000
Circle center P(-0.500000,-0.866025) R1.732051
Circle center P(1.228714,-0.973494) R1.732051
Find 6th circle center P(1.000000,-1.732051) R2.236068
7th circles center (0.500000,0.866025), Radius 0.517638 to (0.866025,0.500000)
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,-0.866025) R1.000000
Circle center P(-0.500000,-0.866025) R1.732051
Circle center P(0.271286,0.684819) R1.732051
Find 6th circle center P(1.000000,1.732051) R2.236068
7th circles center (0.500000,-0.866025), Radius 1.931852 to (-0.866025,0.500000)
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.000000
Circle center P(-0.500000,0.866025) R1.732051
Circle center P(0.271286,-0.684819) R1.732051
Find 6th circle center P(2.000000,0.000000) R2.236068
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.732051
Circle center P(0.000000,0.000000) R2.000000
Circle center P(-1.000000,1.732051) R2.645751
Find 6th circle center P(2.000000,0.000000) R2.236068
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.732051
Circle center P(0.000000,0.000000) R2.000000
Circle center P(-1.000000,1.732051) R2.645751
Find 6th circle center P(2.000000,0.000000) R2.236068
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.732051
Circle center P(-1.000000,0.000000) R1.732051
Circle center P(-1.000000,1.732051) R2.645751
Find 6th circle center P(2.000000,0.000000) R2.236068
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,0.866025) R1.732051
Circle center P(-1.000000,0.000000) R1.732051
Circle center P(-1.000000,1.732051) R2.645751
Find 6th circle center P(2.000000,0.000000) R2.236068
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,-0.866025) R1.732051
Circle center P(0.000000,0.000000) R2.000000
Circle center P(-1.000000,-1.732051) R2.645751
Find 6th circle center P(2.000000,0.000000) R2.236068
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,-0.866025) R1.732051
Circle center P(0.000000,0.000000) R2.000000
Circle center P(-1.000000,-1.732051) R2.645751
Find 6th circle center P(2.000000,0.000000) R2.236068
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,-0.866025) R1.732051
Circle center P(-1.000000,0.000000) R1.732051
Circle center P(-1.000000,-1.732051) R2.645751
Find 6th circle center P(2.000000,0.000000) R2.236068
Circle center P(0.000000,0.000000) R1.000000
Circle center P(1.000000,0.000000) R1.000000
Circle center P(0.500000,-0.866025) R1.732051
Circle center P(-1.000000,0.000000) R1.732051
Circle center P(-1.000000,-1.732051) R2.645751
mathe
发表于 2021-10-6 14:48:23
结果做成svg格式的html文件在附件中,可以直接用浏览器打开
比如如下的两个图,所有点按照被使用到的顺序予以字母标号
比如下面第一个图中先做了虚线圆A和圆B,两者都过C点。然后做圆D,也过C点。
然后做圆E过F点 (E为圆A和圆D交点,F为圆C和圆D交点).
然后做圆C过A点。
最后做第六圆圆G过H点(G为圆B和圆D交点, H为圆E和圆C交点)
红色圆G和圆A交点I就是所求正方形第三个顶点。最后可以通过第7圆做出正方形另外一个顶点(但是图中没有给出)
图上面存在一点误差,是由于做图过程中四舍五入引起,不是因为计算的原因。原始数据可以看14#
mathe
发表于 2021-10-7 09:47:01
如上图,对结果做了如下更新:
i)坐标使用浮点数,结果图片可以发现更加精确,不会出现看上去圆不经过点的情况
ii)每个图下面按顺序加上了各个圆的圆心和对应的圆上一点,比如第一个总是A(B)代表以A为圆心,过B点做的圆。
可以看到上面复制下来的两个图几乎一模一样,咋一看以为重复了,仔细查看才发现标的G点不同,可以有两个不同的选择。当然两种方案没有本质的区别
mathe
发表于 2021-10-7 16:15:32
可以对于做图后得到的前五个圆相同的方案看成一样的,那么可以减少到只有34种
ejsoon
发表于 2021-10-8 09:01:17
mathe 发表于 2021-10-7 16:15
可以对于做图后得到的前五个圆相同的方案看成一样的,那么可以减少到只有34种
這個是正解的圖,左右對稱,非常美妙。好像我在你的4.2html裏面沒有見到?
mathe
发表于 2021-10-8 14:54:52
知道4.html里面为什么没有上面的结果了,是因为这几个圆搜索结果如下:
Circle (0,0), 1.0
Circle (1,0), 1.0
Circle(0.5,0.866025), 1.732051
Circle, (-1,0) 2.0
Dep (0,1,3,25)
...
Circle, (2,0) 2.0
Dep (0,1,3,47)
Dep (0, 1, 5,47)
...
而后面继续搜索时,我偷懒直接一个圆的的依赖集出发搜索,而由于我们这里圆25和圆47不会相互依赖,所以就找不到同时使用它们俩的解了。
下面附件简单添加了双圆依赖,从34个增加到40个,其中5,6个就是你上面的方案
还有第三个解也超级对称:
mathe
发表于 2021-10-8 15:29:30
引入递归机制,支持多圆,又添加两个结果,但是仔细比较,发现增加的是重复的解(还没有找原因),所以上面40个解应该全了。