使用matlab畫相交的平面


引子

matlab 作為科學計算神器,可以輕松的實現矩陣的計算和三維圖形的繪制,

因此今天用matlab繪制了一道高數題中的圖形。

題目如下:

其中 x+y = pi/2 已經證明是錯題,應該是 x + z = pi/2。

分析

因此:

想要實現所圍封閉區域的繪制,就是要實現:

1) y^2 = x

2) z = 0

3) y = 0

4) x = pi / 2 - z

以上四個平面的繪制。

編程

matlab編程 程序如下:

 1 [x z] = meshgrid([0:0.1:pi])
 2 y = sqrt(x)
 3 mesh(x,y,z,'FaceColor','r','EdgeColor','none') % 繪制曲面 y^2=x
 4 x = pi/2 - z
 5 hold on
 6 mesh(x,y,z,'FaceColor','g','EdgeColor','none') % 繪制曲面 x+z=pi/2
 7 xlabel('x');ylabel('y');zlabel('z');alpha(0.5)
 8 z = ones(size(x))-1
 9 mesh(x,y,z,'FaceColor','b','EdgeColor','none') % 繪制曲面 z=0
10 [x z] = meshgrid([0:0.1:pi])
11 y = ones(size(x))-1
12 mesh(x,y,z,'FaceColor','y','EdgeColor','none') % 繪制曲面 y=0
13 alpha(0.5)

最終效果圖

程序分析

核心程序分析:

1) meshgrid() 用於網格數,line 1 處用於生成 x 和 z 的范圍。[0:0.1:pi] 代表生成x的定義域為(0,pi),每隔0.1作為一個分隔。

2) line 2 的函數 mesh(x,y,z,'FaceColor','r','EdgeColor','none') 表示生成曲面,x,y,z是未知量,FaceColor是面顏色,EdgeColor是邊框顏色。

3) line 5 的 hold on , 表示 繪制的圖形保持,不擦除,否則會擦除前面的圖形。

4) line 8 z = ones(size(x))-1 代表 生成一個全是0的矩陣(單向量陣)。因為需要生成 z = 0 ; 而直接取0,會報錯。錯誤示范如下:

>> [a b] = meshgrid([0:0.1:pi])
>> c = 0
>> mesh(a,b,c)
Error using mesh (line 76)
Z must be a matrix, not a scalar or vector 此處說明 Z 軸,作為一個無限量,不能為一個單一數,而應該是矩陣。

Z 軸必須是無限個量都為0,才是z=0平面,因此,需要用ones(N) 生成數量為N的,值都是1的有限矩陣,也即單位矩陣,然后生成的平面才是 軸平面。

而 ones(N)-1;生成的即是0矩陣。演示如下:

 5) xlabel(str),ylabel(str),zlabel(str) 函數傳入的字符串,作為軸標題(title),alpha(n)傳入的是浮點數,作為透明百分比。

 對上面圖形稍加旋轉,獲得題圖,證明確實題目條件有誤。 應該是 x+z = pi/2

進行對比

原題解答:

Todo

更近一步可以着手研究交叉線和交叉平面的表示方式,參照參考文獻[6]。

但是參考文獻6使用 contourslice 函數只是實現了輪廓線的畫法,還不是最終的想法,后續再進行研究。

 參考文獻

[1]. 用matlab作出拋物柱面y^2=x和平面x+z=1相交的圖形具體步驟_百度知道

[2]. matlab高手幫我看看怎么把幾個相交的曲面弄透明,匯出交線~~~~~~~~~~~~~~~_百度知道

[3]. 創建三維繪圖 - MATLAB & Simulink Example - MathWorks 中國

[4]. Matlab繪圖基礎——colormap在數字圖像處理及三維圖形展示上的應用(分層設色) - 司徒鮮生 - 博客園

[5]. Matlab繪圖-很詳細,很全面 - Octal_H的博客 - CSDN博客

[6]. 用matlab作出拋物柱面y^2=x和平面x+z=1相交的圖形具體步驟_百度知道


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM