私は C# に慣れていないので、Matlab 側しか解決できませんが、Matlab .NET コンパイラはすべての関数をエクスポートできるはずだと思いますか?
1: アニメーション化された 3D 散布図 (およびサーフェス、メッシュ、ライン プロットなどのバリアント) を使用して、4 次元データをプロットできます。考えてみれば、平均的な 3D ビデオ ゲームは基本的に 4D プロットです。散布図の場合、0 秒から開始して、t4 = 0、x=t1、y=t2、z=t3 の点のみを描画します。1 秒で、t4=1 のものだけをプロットします。2 秒では、t4=2 のみというように、max(t4) に到達してループバックするまで続きます。
色を 4 次元として使用して、3D 空間に色付きの点を配置することもできます。
他のプロットに一般化できるポイントから、私は思います。
http://www.mathworks.com/help/techdoc/ref/scatter3.htmlおよびhttp://www.mathworks.com/help/techdoc/ref/surf.htmlを参照してください。
2: いくつかのことを明確にさせてください。座標が負になることはできないという初期条件を考えると、次のようになります。
t2<=5
は、無限の 4 次元空間の「スラブ」を定義します。これは、3 次元では無限であり、1 次元では有限です (5 単位の厚さです)。スラブの 1 つのエッジは原点と の間にあり、原点に接続する他の 3 つのエッジは、軸と軸<0, 5, 0, 0>
に沿って正の方向に無限に伸びます。t1
t3
t4
t1+t2+t3+t4<=3
頂点を原点に、底部をその<+, +, +, +>
方向に向けた有限の 4 次元ピラミッドを定義します。
を指定するOR
と、結果はこれら 2 つのスペースの結合になります。(ハイパー) ピラミッドは既に (ハイパー) スラブのサブセットであるため、2 番目の式は冗長です。スラブは些細なことなので、ピラミッドだけを視覚化する方法を示します。
それを視覚化するには、たとえば t4 を 10 個の異なる値に設定し、他の 3 つのパラメーターをそれぞれ異なる色の面としてプロットする必要があると思います。
例:
clc
clear
close all
n = 10;
% Manually calculated maximae of x, y, z axes
x = [0 0; 0 3];
y = [0 0; 3 0];
z = [3 3; 0 0]; % surf can only draw polygons, not triangles, so we just squash two points together
% Actual t will be derived from this algorithmically
t = [3 3; 3 3];
% So plots don't replace each other
hold on
for i = 0:0.1:1
% Manually derived
surf(x*i, y*i, z*i, t*(1-i));
end
hold off
% Just some aesthetic stuff
xlabel('t1');
ylabel('t2');
zlabel('t3');
grid on
colormap('hot')
各色は、異なる t4 のピラミッドの底面 (先端が原点) です。時間の経過とともに 3D ピラミッドが「縮小」することを想像するかもしれません。
関連性はわかりませんが、Matlab では凸多角形は完全に問題ありません。
plot([0 0 1 1 2 2 3 3 0], [0 2 2 1 1 2 2 0 0]); axis([-1 4 -1 4])