วันเสาร์ที่ 30 พฤษภาคม พ.ศ. 2563

กราฟ 3 มิติ ไซแลบติวเตอร์เรียล 8

ไซแลบติวเตอเรียล 8
การพล็อตกราฟ 3 มิติ

ารพล็อตกราฟพื้นผิวสามารถทำได้ด้วยกลุ่มฟังก์ชันฟังก์ชัน plot3d()  ฟังก์ชัน plot3d() เป็นรูปแบบที่ง่ายที่สุด ต้องการเพียงค่ากริด(grid) (x,y) และค่าทางแกน z ที่สอดคล้องกัน  ค่ากริด (x,y) บ่งชี้ด้วยอาศัยจากสองเวคเตอร์ เวคเตอร์หนึ่งสำหรับแกน x และอีกเวคเตอร์สำหรับแกน y 
-->x=[0:%pi/16:2*%pi]'; size(x)
ans =
        33.       1.
-->z=sin(x) * ones(x)';
-->plot3d(x,x,z);

คำสั่งแรกในบรรทัดที่หนึ่ง สร้างเวคเตอร์คอลัมน์ สำหรับเต็มหนึ่งไซเคิล(0-2pi) ที่ช่วง pi/16 และมีขนาด 33x1 โดยมากำหนดให้ช่วงกว่้างของกริดเป็นเหมือนกับ ตามแนวทิศ x และ y  ดังนั้นอีกเวคเตอร์ที่แทนช่วงกว้างจุดในแนวแกน y ไม่จำเป็นต้องใช้  คำสั่งที่สองสร้างค่าในแกนz  สำหรับแต่ละจุดบนกริดตามsin ของค่าx จึงเป็นการสร้างพื้นผิวคลื่น sine สามมิติ

เป็นไปได้ที่จะมีช่วงกว้างที่แตกต่างกันของจุดตามทิศแกน y


-->x=[0:%pi/16:2*%pi]'; disp(size(x))
           33.       1.
--> y=[0:0.5;5];  disp(size(y))
             1.       10.
-->z=xin(x)*ones(y); disp(size(z))
            33       10
-->plot3d(x, y, z)

นี้เป็นการสร้างพื้นผิวของคลื่นsine ขึ้น  แต่ช่วงว่างของกริดตามทิศแกนy แตกต่างกันเมื่อเปรียบเทียบกับช่องว่างของกริดตามทิศแกนx

ฟังก์ชันplot3d1() คล้ายคลึงกับ plot3d() นอกจากก่อให้เกิด การพล๊๋อตมีระดับสีของพื้นผิว โดยใช้สีเดียวกันสำหรับจุดที่ระดับสูงเท่ากัน
-->plot3d1(x, y, z)

ฟังก์ชัน plot3d2(x, y, z) สร้างพื้นผิวโดยใช้ facets แทนที่จะเป็น grid  จากนี้ x, y และ z แต่ละสองมิติเมทริกซ์ซึ่งอธิบายพื้นผิว พื้นผิวประกอบด้วยโพลีกอน4ด้าน x(i, j), x(i + 1), x(i, j + 1) และ x(i+1,J +1) แทนโคออดิเนท x ของ facet หนึ่ง Y and z แทน โคออดิเนท y และ z ในทำนองเดียวกัน

-->u=linspace(-%pi/2,  %pi/2,  40);
-->v=linspace(0,  2*%pi,  20);
-->x=cos(u)' * cos(v);
-->y=cos(u)' * sin(v);
-->z=sin(u)'  * ones(v);
-->plot3d2(x, y, z)

ฟังก์ชัน plot3d3 คล้ายคลึงกับ plot3d2() นอกจากว่า การพล็อตสร้าง mesh ของพื้นผิวแทนที่จะเป็นพื้นผิวที่shaded ด้วยเส้นที่ซอ่นไว้ถูกนำออกไป

เป็นไปได้ที่จะพล็อตหลายกราฟในหน้าเดียวกันได้ โดยอาศัยฟังก์ชัน bplot()  โดยสามารถแบ่งหน้าเป็นอะเรย์สี่เหลี่ยมของแถว และ คอลัมน์ และกำหนดให้ตำแหน่งกราฟหนึ่งในเซลที่ได้เลือก ตัวอย่างเช่น
 subplot(235) แบ่งหน้าเป็น 2 แถว 3 คอลัมน์จะให้ผลเป็น 6 เซลล์  เซลล์เหล่านี้นับตามลำดับเริ่มจากซ้ายมือด้านบน  คำสั่งข้างบนบ่งชี้ว่าเอ้าพุตของคำสั่งพล็อตต่อไปจะต้องนำมาใส่ไว้ในเซลล์ที่ 5  นั่นคือในแถวที่ 2 และคอลัมน์  2.  ให้ทดลองต่อไปนี้:

-->clf();subplot(121);plot3d3(x,y,z);subplot(122);plot3d2(x,y,z)

นี่แสดงให้เห็นพื้นผิวเดียวกันกับตอนแรกเป็นเหมือน mesh  และอันหลังที่สอง เป็นเหมือนพื้นผิวด้วยเส้นที่ซ๋อนไว้ถูกนำออกไป ด้วยการวางกราฟที่ละด้าน  ฟังก์ชัน clf  ล้างภาพกราฟิกส์ที่แสดงล่าสุด



ไม่มีความคิดเห็น:

แสดงความคิดเห็น