Yar*_*tov 4 geometry wolfram-mathematica polyhedra
假设我们有一组点,其限制是对于每个点,所有坐标都是非负的,并且坐标之和等于1.这将点限制在三维单形中,因此尝试映射是有意义的它回到三维空间进行可视化.
我正在寻找的地图将采取极值点(1,0,0,0),(0,1,0,0),(0,0,1,0)和(0,0,0,1)到"定位良好"的正四面体的顶点.特别地,四面体的中心位于原点,一个顶点位于z轴上,一个面平行于x,y平面,一个边缘平行于x轴.
这里的代码对三维中的点做了类似的事情,但似乎并不明显如何将它扩展到4.基本上我正在寻找4-d等价函数tosimplex(它将4维成3)并且它是反向的fromsimplex
A = Sqrt[2/3] {Cos[#], Sin[#], Sqrt[1/2]} & /@
Table[Pi/2 + 2 Pi/3 + 2 k Pi/3, {k, 0, 2}] // Transpose;
B = Inverse[A];
tosimplex[{x_, y_, z_}] := Most[A.{x, y, z}];
fromsimplex[{u_, v_}] := B.{u, v, Sqrt[1/3]};
(* checks *)
extreme = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}};
Graphics[Polygon[tosimplex /@ extreme]]
fromsimplex[tosimplex[#]] == # & /@ extreme
回答:
根据矩阵直接重新设计deinst的答案给出了以下内容.(1/sqrt [4]作为第4坐标,因为它是到单面中心的距离)
A = Transpose[{{-(1/2), -(1/(2 Sqrt[3])), -(1/(2 Sqrt[6])),
1/Sqrt[4]}, {1/2, -(1/(2 Sqrt[3])), -(1/(2 Sqrt[6])),
1/Sqrt[4]}, {0, -(1/(2 Sqrt[3])) + Sqrt[3]/2, -(1/(2 Sqrt[6])),
1/Sqrt[4]}, {0, 0, Sqrt[2/3] - 1/(2 Sqrt[6]), 1/Sqrt[4]}}];
B = Inverse[A];
tosimplex[{x_, y_, z_, w_}] := Most[A.{x, y, z, w}];
fromsimplex[{t_, u_, v_}] := B.{t, u, v, 1/Sqrt[4]};
(* Checks *)
extreme = Table[Array[Boole[# == i] &, 4], {i, 1, 4}];
Graphics3D[Sphere[tosimplex[#], .1] & /@ extreme]
fromsimplex[tosimplex[#]] == # & /@ extreme
你要
(1,0,0,0) -> (0,0,0)
(0,1,0,0) -> (1,0,0)
(0,0,1,0) -> (1/2,sqrt(3)/2,0)
(0,0,0,1) -> (1/2,sqrt(3)/6,sqrt(6)/3))
Run Code Online (Sandbox Code Playgroud)
它是一个线性变换,所以你转变
(x,y,z,w) - > (y + 1/2 * (z + w), sqrt(3) * (z / 2 + w / 6), sqrt(6) * w / 3)
Run Code Online (Sandbox Code Playgroud)
编辑 您希望中心位于原点 - 只需减去四个点的平均值即可.抱歉
(1/2, sqrt(3)/6, sqrt(6) / 12)
Run Code Online (Sandbox Code Playgroud)