ไซแลบติวเตอเรียล 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 สามมิติ
-->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 ล้างภาพกราฟิกส์ที่แสดงล่าสุด
ไม่มีความคิดเห็น:
แสดงความคิดเห็น