質問

各ポイントのすべての座標が非陰性であり、座標の合計が1に等しいという制限のある一連のポイントがあるとします。視覚化のために3次元空間に戻ります。

私が探している地図は、極端なポイント(1,0,0,0)、(0,1,0,0)、(0,0,1,0)、および(0,0,0,1)を取るでしょう。 「きちんと配置された」通常の四面体の頂点に。特に、四面体の中心が起源になり、1つの頂点がz軸にあり、1つの面からx、y平面、1つのエッジがx軸に平行になります。

3次元のポイントに対して同様のことを行うコードは次のとおりですが、それを4に拡張する方法は明らかではないようです。基本的に、私は4D相当の関数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))

そして、それは線形変換なので、変換します

   (x,y,z,w) - > (y + 1/2 * (z + w), sqrt(3) * (z / 2 + w / 6), sqrt(6) * w / 3)

編集 センターを起源にしたい - 4つのポイントの平均を差し引くだけです。ごめん

(1/2, sqrt(3)/6, sqrt(6) / 12)

他のヒント

1つの可能性:

  1. 4つの(非オルトガニール)3つの操作を生成します。 \vec{v}_i 四面体の中心から各頂点に向かって。
  2. 4つの位置ごとに x = (x_1 .. x_4) ベクトル合計を形成します \Sum_i x_i*\vec{v}_i.

もちろん、このマッピングは一般的に一意ではありませんが、あなたは x_i1つの合計が物事を制約します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top