บทนำ
ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีหา จุดยอด (Vertex), จุดโฟกัส (Focus) และ เส้นดิเรกทริกซ์ (Directrix) ของพาราโบลา จากสมการมาตรฐาน
สมการพาราโบลา
พิจารณาพาราโบลาในรูป: x y² + y x + z = 0 หรือรูปทั่วไป y² = 4ax (แนวนอน) / x² = 4ay (แนวตั้ง)
โค้ดตัวอย่างใช้สูตรสำหรับพาราโบลาแนวตั้ง: y = ax² + bx + c (ในโค้ดใช้ตัวแปร x, y, z แทน a, b, c)
สูตรที่ใช้
- จุดยอด (Vertex): (-b/2a, (4ac-b²)/4a)
- จุดโฟกัส (Focus): (-b/2a, (4ac-b²+1)/4a)
- เส้นดิเรกทริกซ์ (Directrix): y = c - (b²+1)/4a
ในโค้ด: x=a, y=b, z=c
ตัวอย่างโค้ด
#include <iostream>
using namespace std;
void findParabolaProperties(float x, float y, float z) {
// Vertex: (-y/2x, (4xz-y²)/4x)
cout << "Vertex: (" << -y/(2*x) << ", " << (((4*x*z) - (y*y))/(4*x)) << ")" << endl;
// Focus: (-y/2x, (4xz-y²+1)/4x)
cout << "Focus: (" << -y/(2*x) << ", " << (((4*x*z) - (y*y)+1)/(4*x)) << ")" << endl;
// Directrix: z - (y²+1)/4x
cout << "Directrix: " << z - ((y*y)+1)/(4*x) << endl;
}
int main() {
float x = 6, y = 4, z = 7; // 6y² + 4y + 7 = 0 หรือ y = 6x² + 4x + 7
findParabolaProperties(x, y, z);
return 0;
}
ผลลัพธ์
Vertex: (-0.333333, 228) Focus: (-0.333333, 229.5) Directrix: -401
หมายเหตุ
สูตรในโค้ดต้นฉบับสำหรับ Directrix อาจมีลำดับการคำนวณผิด (ขาดวงเล็บ) โค้ดข้างต้นแก้ไขแล้ว ให้: z - ((y*y)+1)/(4*x)
สรุป
โปรแกรมคำนวณคุณสมบัติพาราโบลาจาก係数 กรุณาตรวจสอบรูปแบบสมการให้ตรงกับสูตรที่ใช้ หากมีคำถาม สามารถถามได้ในส่วนความคิดเห็นครับ