Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

หาจุดยอด จุดโฟกัส และเส้นดิเรกทริกซ์ของพาราโบลาใน C++


บทนำ

ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีหา จุดยอด (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)

สรุป

โปรแกรมคำนวณคุณสมบัติพาราโบลาจาก係数 กรุณาตรวจสอบรูปแบบสมการให้ตรงกับสูตรที่ใช้ หากมีคำถาม สามารถถามได้ในส่วนความคิดเห็นครับ