wayne 发表于 2012-1-13 20:00:46

果树种植最优解精美图形作法探讨

2年前,数学爱好者们在 mathe的领导下完成了 20棵树种植问题。
emath如此伟大的壮举,如此巨大的革命成果 理应 让坛子外面更广大的人民群众所享有。
而要让更多的人欣赏此题的话,精美的图片展示应该是必要的。

目前本人尚有一点时间,打算完成这“赞”字 ,“叹”字,“美”字,的最后一捺。

但由于本人一直没好好学高等几何,也没完整的参与问题的讨论,所以肯定是有困难的,
但比起问题本身的解决来说,我这点工作根本算不了什么。

特开此贴。后面会有很多问题要请教mathe的。

看花容易绣花难,
预期在这过程中,
我能吸收到解决本题的所有精华。。。。

站内链接:
果树问题讨论
20棵树最优解计算
果树问题最优解大全
果树种植最优解精美图形作法探讨
植树问题王兴君解
植树问题蔡上人解


先睹为快:
https://bbs.emath.ac.cn/data/attachment/forum/month_1201/12011611351b054b15b71eb9ff.png

https://bbs.emath.ac.cn/data/attachment/forum/month_1201/1201181648cdcb9fcde04c4c06.png

https://bbs.emath.ac.cn/data/attachment/forum/month_1201/1201171206246cc60835eb602d.jpeg

https://bbs.emath.ac.cn/data/attachment/forum/month_1201/1201171137cbe9073ac035e25f.jpeg



可以直接看 #28

wayne 发表于 2012-1-13 20:25:23

目前mathe的代码输出格式是:
print(ADGJBEIJCDHKAFIKCEGLBFHLCJMODINODLMPAHNPGKOPBGMQFJNQAEOQEHMRBKNRCFPRILQRABCSDEFSGHITJKLTMNST);
solve([+1+3*T_Y+1*T_Y*T_Y,-3/5+1*R_Y-2/5*T_Y,-4/5+1*R_X-1/5*T_Y,-3+1*H_X-1*T_Y,-4+1*P_X-1*T_Y,+1+1*S_X,-2+1*Q_X-1*T_Y,+2+1*O_X+1*T_Y,-1+1*L_Y-1*T_Y,+1+1*P_Y,-3+1*M_Y-2*T_Y,+1+1*D_Y+1*T_Y,-2+1*S_Y-1*T_Y,+1*G_Y-1*T_Y,-1+1*Q_Y,+1+1*N_Y,-2+1*C_Y-1*T_Y,-2+1*B_Y-1*T_Y,-1+1*O_Y,+1+1*H_Y,+2+1*C_X+1*T_Y,-2+1*N_X-1*T_Y,-1+1*L_X,-1+1*T_X,+2+1*M_X+1*T_Y,-2+1*F_X-1*T_Y],);
print("A=(1,0,0) B_x=0 D=(1,D_y,0) E_x=0 E_y=1 F_y=0 G=(1,G_y,0) I_x=0 I_y=0 J=(0,1,0) K_x=1 K_y=0 ");
按照原型,可以认为:
输出解的描述由三大部分组成:

1) 点与点的集合关系,即四元集合:
如上:ADGJBEIJCDHKAFIKCEGLBFHLCJMODINODLMPAHNPGKOPBGMQFJNQAEOQEHMRBKNRCFPRILQRABCSDEFSGHITJKLTMNST
2)点与线的结合关系,即线性方程组
如上:就是solve函数里面的。
3)预设的几个点的坐标形式该如何输出?
   如上: print("A=(1,0,0) B_x=0 D=(1,D_y,0) E_x=0 E_y=1 F_y=0 G=(1,G_y,0) I_x=0 I_y=0 J=(0,1,0) K_x=1 K_y=0 ");

要不要 先探讨一下输出解的格式的 标准化?
让输出结果的表达 对计算机语言更加的中性化,对人更加的友好。
以后也就方便把问题推广一般化,比如,n棵树,每行m棵。。。。

wayne 发表于 2012-1-13 20:41:45

2# wayne
我的工作流程:
1)稍稍改动mathe的源程序,将数据的输出定制成方便Mathematica导入的格式
2)Mathematica作图。程序要具有普适性,不能有人工的介入,方便其他数据图案的批量生成。
3)仿射变换。仅根据原始数据,作出来的图形不一定美观清晰,需要做变换。
      这个是工作的重点,也是难点,办不到的话,批量产生精美图片也就无从谈起了。
4) 将公布14-20棵树每行4棵的所有最优解的美观的图案

wayne 发表于 2012-1-13 20:51:48

接下来,我先做一下试探性的工作,以上面的例子数据作分析:
暂时将格式转换成:ADGJBEIJCDHKAFIKCEGLBFHLCJMODINODLMPAHNPGKOPBGMQFJNQAEOQEHMRBKNRCFPRILQRABCSDEFSGHITJKLTMNST
+1+3*Ty+1*Ty*Ty,-3/5+1*Ry-2/5*Ty,-4/5+1*Rx-1/5*Ty,-3+1*Hx-1*Ty,-4+1*Px-1*Ty,+1+1*Sx,-2+1*Qx-1*Ty,+2+1*Ox+1*Ty,-1+1*Ly-1*Ty,+1+1*Py,-3+1*My-2*Ty,+1+1*Dy+1*Ty,-2+1*Sy-1*Ty,+1*Gy-1*Ty,-1+1*Qy,+1+1*Ny,-2+1*Cy-1*Ty,-2+1*By-1*Ty,-1+1*Oy,+1+1*Hy,+2+1*Cx+1*Ty,-2+1*Nx-1*Ty,-1+1*Lx,-1+1*Tx,+2+1*Mx+1*Ty,-2+1*Fx-1*Ty
Ty,Ry,Rx,Hx,Px,Sx,Qx,Ox,Ly,Py,My,Dy,Sy,Gy,Qy,Ny,Cy,By,Oy,Hy,Cx,Nx,Lx,Tx,Mx,Fx
Ax=1,Ay=0,Az=0,Bx=0,Bz=1,Dx=1,Dz=0,Ex=0,Ez=1,Ey=1,Ez=1,Fy=0,Fz=1,Gx=1,Gz=0,Ix=0,Iz=1,Iy=0,Iz=1,Jx=0,Jy=1,Jz=0,Kx=1,Kz=1,Ky=0,Kz=1,
规定缺失的z坐标为1,
定制后的C++代码

wayne 发表于 2012-1-14 09:28:29

Mathematica代码出来了,加了注释:
Clear["Global`*x"]; Clear["Global`*y"];Clear["Global`*z"];
(*读入数据*)
ans = Flatten];
chars = Union]]];
(*载入预设坐标的值*)
ToExpression], ","]];
(*计算出齐次坐标*)
sol = Solve], ","]] == 0];
tmp1 = {Symbol[# <> "x"], Symbol[# <> "y"], Symbol[# <> "z"]} & /@ chars /. sol[] /. Map &, DeleteCases & /@ chars], _Integer]];
(*做随机仿射变换,并转换成笛卡尔坐标*)
rm = RandomReal;
tmp = Table]/ii[], {ii, tmp1.rm}];
(*代入到线段的各个端点求出坐标值*)
lines = Partition], {ii, ToCharacterCode]] - 64}], 4];
(*画图*)
Graphics[{Line, Table], Red, 24], tmp[] + .031], {ii, 20}], Blue, PointSize[.01], Point}, AspectRatio -> 1]
例子数据我也附带上来,方便感兴趣的人亲自执行 ,见:


计算出在mathe规范的空间下各个点的齐次坐标为:
A        {1,0,0}
B        {0,1/2 (1-Sqrt),1}
C        {1/2 (-1+Sqrt),1/2 (1-Sqrt),1}
D        {1,1/2 (1+Sqrt),0}
E        {0,1,1}
F        {1/2 (1-Sqrt),0,1}
G        {1,1/2 (-3-Sqrt),0}
H        {1/2 (3-Sqrt),-1,1}
I        {0,0,1}
J        {0,1,0}
K        {1,0,1}
L        {1,1/2 (-1-Sqrt),1}
M        {1/2 (-1+Sqrt),-Sqrt,1}
N        {1/2 (1-Sqrt),-1,1}
O        {1/2 (-1+Sqrt),1,1}
P        {1/2 (5-Sqrt),-1,1}
Q        {1/2 (1-Sqrt),1,1}
R        {1/10 (5-Sqrt),-(1/Sqrt),1}
S        {-1,1/2 (1-Sqrt),1}
T        {1,1/2 (-3-Sqrt),1}

我们不妨先将这些点所在的平面,即mathe解题时所规范的空间,称作 mathe的alpha 解空间。

wayne 发表于 2012-1-14 09:43:52

将mathe的alpha 解空间做变换:
{{80, 80, 84}, {50, 80, 97}, {12, 50, 34}}
得到:

若变换是{{6.59076, 6.55043, 4.11067}, {4.97772, 1.15536, 2.79758}, {4.48417, 9.34313, 9.79811}},得到

wayne 发表于 2012-1-14 10:34:57

现在一切就绪,问题来了,也是问题的中心,
由给定点集构成的图形,该如何选取祂的变换矩阵,使得变换后的图形看上去更美?

这个时候,由于涉及到人的感官问题,因而无需严格意义的精确,模糊即可,
我认为,变换后的矩阵至少同时满足两个性质才叫美:
1)对称才美。
   至少有一个近似的对称轴。对称轴越多就越美。
2)紧凑均匀才叫美。
   数据坐标点的绝对的大小无关紧要,但要相对差不多,即分散均匀,不能扎堆。

在对于美的评价上,大家怎么看,需要补充的吗,
我打算2天后才继续

数学星空 发表于 2012-1-14 12:26:51

对于数学几何美的定义,我赞同楼上的观点:
1)对称才美。
   至少有一个近似的对称轴。对称轴越多就越美。
2)紧凑均匀才叫美。
   数据坐标点的绝对的大小无关紧要,但要相对差不多,即分散均匀,不能扎堆。

数学星空 发表于 2012-1-14 12:37:39

本帖最后由 数学星空 于 2012-1-14 12:39 编辑

数学美的主要特征:
简洁而精确,对称而和谐,普适而深刻!

wayne 发表于 2012-1-14 13:05:03

6# wayne
将第二个图形的变换矩阵稍稍修正,得到很不错的图形:
由{{6.59076, 6.55043, 4.11067}, {4.97772, 1.15536, 2.79758}, {4.48417, 9.34313, 9.79811}}
微调成
{{6, 6, 3}, {6, 1, 3}, {4, 4, 9}}
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 果树种植最优解精美图形作法探讨