Home > リソース > Scilabでアニメーション作成 > 5. 3次元形状を作る〜直方体(1)
Scilabでアニメーション作成

5. 3次元形状を作る〜直方体(1)

6個のパッチを組み合わせて直方体を作成してみましょう。まずは図1に示すように、頂点の1つが座標系の原点と一致し、各辺が座標軸と平行な場合を考えてみます(これを基本配置と呼ぶことにします)。この場合、3辺の長さ(Lx,Ly,Lz)から、8個の頂点の座標は明らかです。6個のパッチは次の6通りの頂点の組み合わせで与えられます。



block_special

図1: 直方体(基本配置)

基本配置の直方体を作成するScilabスクリプトをコード1に、このスクリプトによって作成された直方体を図2にそれぞれ示します。

make_block_special.sce
// make_block_special.sce

clear; xdel(winsid());

Lx = 0.15;
Ly = 0.05;
Lz = 0.30;

// Vertices
VertexData = [Lx*ones(8,1),Ly*ones(8,1),Lz*ones(8,1)]...
.*[0,0,0;
1,0,0;
0,1,0;
0,0,1;
1,1,0;
0,1,1;
1,0,1;
1,1,1];

// Patches
Index_Patch = ...
[1,2,5,3;
1,3,6,4;
1,4,7,2;
4,7,8,6;
2,5,8,7;
3,6,8,5];

n_pat = 6;

for i_pat=1:n_pat

    // Patches data
    PatchData_X(:,i_pat) = VertexData(Index_Patch(i_pat,:),1);
    PatchData_Y(:,i_pat) = VertexData(Index_Patch(i_pat,:),2);
    PatchData_Z(:,i_pat) = VertexData(Index_Patch(i_pat,:),3);
end

// Draw patches
figure(1);
plot3d(PatchData_X,PatchData_Y,PatchData_Z);
h_fac3d = gce();
h_fac3d.color_mode = 4;
h_fac3d.foreground = 1;
h_fac3d.hiddencolor = 4;

// Axes settings
xlabel("x",'fontsize',2);
ylabel("y",'fontsize',2);
zlabel("z",'fontsize',2);
h_axes = gca();
h_axes.font_size = 2;
h_axes.isoview = "on";
h_axes.box = "off";
h_axes.rotation_angles = [63.5,-127];
h_axes.data_bounds = [-0.15,-0.2,-0.1;0.35,0.3,0.4];
xgrid;
コード1: 直方体を作成するScilabスクリプト(基本配置)



図2: パッチを組み合わせて作成した直方体(基本配置)