Wednesday, July 15, 2020

วาดวงกลมใน 2D matrix

นี่เป็นชุดคำสั่งที่ใช้บ่อยมากในงานผู้เขียน แต่กลับมีตัวอย่างให้เห็นน้อยมากในinternet ส่วนใหญ่จะวาดกันแบบเป็นเส้น แต่ในงานของผู้เขียนต้องการวาดวงกลมทึบในarrayเป็นส่วนใหญ่ วิธีการวาดก็ง่ายแสนง่าย

1. ตามเสต็ปค่ะ สร้าง index array ขึ้นมาก่อน ซึ่ง index array นี้ก็เปรียบง่ายๆคือการสร้างแกน x และ แกน y โปรดสังเกตุว่าในคำสั่ง meshgrid แกน y จะ อยู่หน้า แกน x เสมอ สลับกันไม่ได้นะคะ ในที่นี้เราจะให้แกน x,y มีขนาด 200 จุด


npts = 200;
x = linspace(-1,1,npts);
y = x;
[Y,X] = meshgrid(y,x);


2. สร้างวงกลม โดยในที่นี้กำหนดให้วงกลมมีรัศมีเท่ากับ 1


D = X.^2 + Y.^2 <= 1;

เท่านี้ก็เรียบร้อย ใช้คำสั่ง imagesc(D) ดูรูปได้เลย

หรือ ถ้าอยากจะสร้างวงรีก็ทำได้ไม่ยาก ตามนี้

npts = 200;
x = linspace(-1,1,npts);
y = 2.*x;
[Y,X] = meshgrid(y,x);
D = X.^2 + Y.^2 <= 1;
figure;
imagesc(D); axis image



No comments:

Post a Comment