从4D空间到Mathematica的3D空间的投影点
-
29-09-2019 - |
题
假设我们有一组限制的点,即对于每个点,所有坐标都是非负的,并且坐标的总和等于1。这限制了点在3维单纯形中,因此尝试映射是有意义的它回到3维空间以进行可视化。
我要寻找的地图将获得极端点(1,0,0,0),(0,1,0,0),(0,0,1,0)和(0,0,0,1)到定位的定位四面体的顶点。特别是,四面体的中心将位于原点,一个顶点将位于z轴上,一张与x,y平面平行于x,y平面,一个边缘和一个边缘平行于x轴。
这里的代码在3个维度中对积分有类似的操作,但是如何将其扩展到4。基本上我正在寻找函数的4D等效物(将4个维度分为3),并且是逆的从simplex
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]作为第四坐标,因为它是距离单纯形中心的距离)
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))
这是一个线性转换,所以您可以转换
(x,y,z,w) - > (y + 1/2 * (z + w), sqrt(3) * (z / 2 + w / 6), sqrt(6) * w / 3)
编辑 您希望该中心位于原点 - 只需减去四个点的平均值即可。对不起
(1/2, sqrt(3)/6, sqrt(6) / 12)
其他提示
一种可能性:
- 产生四个(非正交)3个向量,
\vec{v}_i
从四面体的中心伸向每个顶点。 - 对于每个四个位置
x = (x_1 .. x_4)
形成矢量和\Sum_i x_i*\vec{v}_i
.
当然,此映射通常不是唯一的,但是您可以调节 x_i
的总和1限制了事物。
不隶属于 StackOverflow