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

หาจุดเท้าของเส้นตั้งฉากจากจุดในระนาบ 2D ไปยังเส้นตรงใน C++

พิจารณาว่ามีจุด P ในระนาบ 2D และสมการของเส้นตรง งานคือการหาจุดเท้า (Foot of Perpendicular) จาก P ไปยังเส้นตรง

สมการของเส้นตรงคือ ax + by + c = 0 สมการของเส้นผ่าน P และตั้งฉากกับเส้น สมการของเส้นผ่าน P และ Q จะเป็น ay – bx + d = 0 นอกจากนี้ P(x1, y1), และ Q(x2, y2) ดังนั้นเราแทนพิกัดของ P ลงในสมการ

ay1 – bx1 + d = 0 ดังนั้น d = bx1 – ay1

นอกจากนี้ Q คือจุดตัดของเส้นที่กำหนดและเส้นผ่าน P และ Q ดังนั้นเราจะหาคำตอบสำหรับสมการทั้งสองนี้

ax + by + c = 0, & ay – bx + (bx1 – ay1) = 0

เนื่องจาก a, b, c, d ทั้งหมดรู้จัก เราสามารถหาได้โดยใช้สูตรนี้:

$$\frac{x-x_{1}}{a}=\frac{y-y_{1}}{b}=\frac{-(ax_{1}+by_{1}+c)}{a^{2}+b^{2}}$$

ตัวอย่าง

#include <iostream> 
using namespace std; 

void getFootCoordinate(double a, double b, double c, double x1, double y1) {
    double p = -1 * (a * x1 + b * y1 + c) / (a * a + b * b);
    double x = p * a + x1;
    double y = p * b + y1;
    cout << "(" << x << ", " << y << ")";
}

int main() {
    double a = 0.0;
    double b = 1.0;
    double c = -2;
    double x1 = 3.0;
    double y1 = 3.0;
    cout << "The coordinate is: ";
    getFootCoordinate(a, b, c, x1, y1);
}

ผลลัพธ์

The coordinate is: (3, 2)