- 注册时间
- 2009-2-12
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 26526
- 在线时间
- 小时
|
发表于 2016-10-15 16:27:44
|
显示全部楼层
枚举一下前面提及的13个非平凡路径,计算得知只有一个解,124635.
解的一般条件是 入射直线在起点1号平面的交点的坐标${x_0,y_0,z_0}$,切线向量是${n,p,k}$
则$ 0 < z_0 < 1, 1 - z_0 < y_0 < 1, n:p:k = 1:-1:1$
光线路径分别经过的反射点是$ {0, y_0, z_0}, {1 - z_0, y_0 + z_0-1, 1}, {y_0, 0, 2 - y_0 - z_0}, {1, 1 - y_0, 1 - z_0}, {z_0, 2 - y_0 - z_0, 0}, {1 - y_0, 1, y_0 + z_0-1}, {0, y_0, z_0}}$
计算得知,每一个顶点处的夹角余弦是$1/3$
由于枚举的是全集, 所以说 不存在对边不相等的回路了。
- GetReflectedLine[{{lineVector_,linePoint_},{surfaceVector_,surfacePoint_}}]:=Module[{p0=linePoint(*入射直线的决定点*),v0=lineVector(*入射直线的决定向量,即切向量*),p1=surfacePoint(*反射面的决定点*),v1=surfaceVector(*反射面的决定向量,即法向量*),X,Y,Z,P(*辅助计算的变量*),tmp},P={X,Y,Z};tmp=Solve[Flatten[{Dot[P-p1,v1]==0,Map[#==0&,Cross[P-p0,v0],1]}],P][[1,All,2]];{Solve[{Dot[P,v1]+Dot[v0,v1]==0,Cross[v0,-v1]==Cross[v1,P]},P][[1,All,2]],tmp}];
- paths={162345,162435,162354,123456,123546,124356,126345,126435,134562,143562,123645,132645,124635};
- faces={{{1,0,0},{0,0,0}},{{0,0,1},{0,0,1}},{{0,0,1},{0,0,0}},{{0,1,0},{0,0,0}},{{0,1,0},{0,1,0}},{{1,0,0},{1,0,0}}};p0={x0,y0,z0};ans=Table[{j,paths[[j]],IncidentLine={{n,p,k},p0};data=Table[{i,IncidentLine=GetReflectedLine[{IncidentLine,faces[[i]]}]},{i,RotateLeft[IntegerDigits[paths[[j]]]]}];Reduce[Flatten[{Map[Less[0,#,1]&,Drop[Union[Flatten[data[[All,2,2]]]],2]],Thread[data[[-1,2,2]]==p0],Map[Less[0,#,1]&,Rest[p0]]}]/.List->And],data},{j,Length[paths]}];ans[[All,1;;3]]
复制代码 |
|