2017-11-24 16 views
2

パッチ関数を使用して完全に非透明な六面体(歪んだ立方体のような6面の3Dオブジェクト)を作成したいと考えています。以下は私のコードです(ポイント#1の3つの隣り合った面を作ってから、もう1つはその対角線の点に隣接し、したがってすべて6つの「パッチを当て」します)。しかし、あなたが見ることのできる透明度は意図したとおりには機能しません。それがなぜ起こるのか、または問題を回避する方法は?matlabで完全に不透明な六面体を作成する

vec=[1,2,4,3,1;1,5,6,2,1;1,5,7,3,1]; 
vec2=[8,4,3,7,8;8 4 2 6 8;8 6 5 7 8]; 
cube = [0 0 0;0 0 1;0 1 0;0 1 1; 1 0 0; 1 0 1; 1 1 0; 1 1 1]; 
figure 
patch('Faces',[vec(1,:),vec(2,:),vec(3,:)],'Vertices',cube,'FaceColor','white','FaceAlpha',1); axis equal; cameratoolbar; 
hold on 
patch('Faces',[vec2(1,:),vec2(2,:),vec2(3,:)],'Vertices',cube,'FaceColor','white','FaceAlpha',1); axis equal; cameratoolbar; 

これは生成図である。enter image description here

(Matlabの2017a)。

答えて

2

正しい方法でvecアレイを作成しましたが、それをpatch()機能に渡すときにねじ込みました。 1つの変数にvecvec2を連結することができます。あなたのコードは次のようになります:

vec=[1,2,4,3,1;1,5,6,2,1;1,5,7,3,1; ... 
    8,4,3,7,8;8 4 2 6 8;8 6 5 7 8]; 
cube = [0 0 0;0 0 1;0 1 0;0 1 1; 1 0 0; 1 0 1; 1 1 0; 1 1 1]; 
patch('Faces',vec,'Vertices',cube,'FaceColor','white','FaceAlpha',1); 
axis equal 
view(-41,33); 

結果はここに表示されます。
注:キューブの左側の前面は、ではなく、の透明な画面上に表示されます。これはPNGエクスポートのオクターブ図のバグです。 Cube drawn with script

+0

少し精巧にしてください。あなたはその遺跡を握ることを意味しますか? 1回の呼び出しでポイントのシーケンスを書くことができますか? – Paramar

+0

私はそれを理解しました – Paramar

関連する問題