2014-11-24 55 views
0

我有一個與X軸形成一定角度的立方體。爲什麼立方體沒有正確生成

對於我寫了我的立方體的頂點是這樣的:

cubeX=[ 

     0 cosd(theta) (cosd(theta)+sind(theta)) sind(theta) %bottom 

     0 cosd(theta) (cosd(theta)+sind(theta)) sind(theta) %top 

     0 cosd(theta) cosd(theta) 0 %front 

     0 cosd(theta) cosd(theta) 0 %back 

     sind(theta) 0 0 sind(theta) % left 

     (cosd(theta)+sind(theta)) cosd(theta) cosd(theta) (cosd(theta)+sind(theta)) % right 

     ]*side; 

cubeY=[ 

     0 -sind(theta) (cosd(theta)-sind(theta)) cosd(theta) %bottom 

     0 -sind(theta) (cosd(theta)-sind(theta)) cosd(theta) %top 

     0 -sind(theta) -sind(theta) 0 %front 

     0 -sind(theta) -sind(theta) 0 %back 

     cosd(theta) 0 0 cosd(theta) %left 

     (cosd(theta)-sind(theta)) -sind(theta) -sind(theta) (cosd(theta)-sind(theta)) %right 

     ]*side; 


cubeZ=[ 

     0 0 0 0 %bottom 

     1 1 1 1 %top 

     0 0 1 1 

     0 0 1 1 

     0 0 1 1 

     0 0 1 1 

     ]*side; 

但是,當我繪製此使用plot3(cubeX,cubeY,cubeZ) 一行即右下角則不繪製線條

能有人請解釋什麼,我也許做錯了

cube generated by matlab

還附上圖片展示哪些s與X軸的角度 enter image description here

回答

0

您需要關閉您的每張臉......這意味着您繪製的每個正方形需要5點而不是4點。最後一點(第5點)應該是與第一點相同。例如:

cubeX=[ 

     0 cosd(theta) (cosd(theta)+sind(theta)) sind(theta) 0 %bottom 

     0 cosd(theta) (cosd(theta)+sind(theta)) sind(theta) 0 %top 

     0 cosd(theta) cosd(theta) 0 0 %front 

     0 cosd(theta) cosd(theta) 0 0 %back 

     sind(theta) 0 0 sind(theta) sind(theta) % left 

     (cosd(theta)+sind(theta)) cosd(theta) cosd(theta) (cosd(theta)+sind(theta)) (cosd(theta)+sind(theta)) % right 

     ]*side; 

如果沒有額外的點,你廣場將有四點,但只有3條線。加入額外的點會給你的方塊四行,這將關閉它們。這應該導致繪製你的缺失線。

另外,您的cubeX,cubeY和cubeZ可能是您打算的內容的錯誤形狀。我期望他們有4(現在5)行和6列。你可以嘗試將它們轉置...

plot3(cubeX',cubeY',cubeZ')