slope = 0; intercpt = 0.3; centerx = 0; centery = 0; radius = 0.5; [xout,yout] = linecirc(slope,intercpt,centerx,centery,radius)
คำตอบที่ได้คือ
xout =
0.4000 -0.4000
yout =
0.3000 0.3000
ส่วนค่าในแต่ละช่องคืออะไร เราจะมารีวิวสมการเส้นตรงและสมการวงกลมกันวันนี้
ก่อนอื่น สมการวงกลม
\[ (x-u)^2 + (y-v)^2 = r^2\]
โดยที่ (u,v) คือตำแหน่งจุดศูนย์กลางวงกลม แทนด้วย centerx,centery ใน MATLAB code ข้างบน
r คือ รัศมีวงกลม แทนด้วย radius ในโค้ดด้านบน
ส่วนสมการเส้นตรงแทนด้วย
\[ y = mx+c\]
โดย m คือความชันของกราฟเส้นตรง และ c คือจุดตัดแกน y
ตำแหน่งที่เส้นตรงตัดกับวงกลม คือตำแหน่งที่ x,y ของสมการวงกลม มีค่าเท่ากับ x,y ของสมการเส้นตรง ดังนั้นเราจึงจัดเรียงสมการใหม่ โดยการแทนค่า y ของสมการเส้นตรงในสมการวงกลม จะได้สมการดังนี้
\[ (x-u)^2 + (mx+c-v)^2 = r^2\]
ทีนี้ก็จัดเรียงสมการใหม่เพื่อที่จะหาค่า x ก่อนอื่นกระจายตัวแปร polynomial ก่อน
\[ x^2 - 2xu + u^2 + (mx)^2 +2mx(c-v) + (c-v)^2 = r^2\] \[ x^2 - 2xu + u^2 + (mx)^2 +2mxc-2mxv + c^2 -2cv + v^2 = r^2\] เสร็จแล้วก็จัดกลุ่มใหม่เพื่อให้ดูง่าย \[ [x^2+ (mx)^2] +[-2xu+2mxc-2mxv] + [u^2 + c^2 -2cv + v^2 - r^2] = 0\] \[ [1+m]x^2 +[-2u+2mc-2mv]x + [u^2 + c^2 -2cv + v^2 - r^2] = 0\] หลังจากนั้นก็หาค่า x โดยใช้คำสั่ง roots ใน MATLAB จะได้ดังนี้
m = 0; c = 0.3; u = 0; v = 0; r = 0.5; a1 = (1+m)^2; a2 = -2*u + 2*m*c - 2*m*v; a3 = u^2 + c^2 - 2*c*v + v^2 - r^2; x = roots([a1,a2,a3])';
คำตอบ x ที่ออกมาคือ
x =
0.4000 -0.4000
เหมือนกันกับข้างบนเลย ทีนี้พอเราได้ค่า x แล้วก็สบายล่ะ เอาค่าไปแทนในสมการเส้นตรงหาค่า y ได้เลย
y = m.*x+c
y =
0.3000 0.3000
ที่วันนี้มาทำวิธีmanualให้ดูแทนที่จะใช้คำสั่ง linecirc เพราะว่าถ้าเรารู้วิธีการคิดเราจะสามารถนำไปต่อยอดได้ โดยเฉพาะคำสั่งของ MATLAB นี้ ไม่ครอบคลุมถึงรูป 3 มิติ เพราะงั้นรู้ที่มาไว้ไม่เสียหาย
No comments:
Post a Comment