Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tìm hình ảnh đối xứng của điểm qua đường thẳng trong mặt phẳng 2D C++

Giới thiệu

Cho điểm P(x, y) và đường thẳng ax + by + c = 0. Tìm điểm P' đối xứng của P qua đường thẳng đó.

Ví dụ minh họa

Đầu vào

P = (2, 1), a = 1, b = -1, c = 0

Đầu ra

(1, 2)

Phương pháp giải

Điểm đối xứng P'(x', y') thỏa mãn: trung điểm của PP' nằm trên đường thẳng, và PP' vuông góc với đường thẳng.

Công thức:

temp = -2*(a*x + b*y + c) / (a² + b²)
x' = temp*a + x
y' = temp*b + y

Chương trình minh họa

#include <iostream>
using namespace std;

void findMirrorImage(double a, double b, double c, double x, double y) {
    double temp = -2 * (a*x + b*y + c) / (a*a + b*b);
    double xm = temp * a + x;
    double ym = temp * b + y;
    cout << "(" << xm << "," << ym << ")";
}

int main() {
    double a = -1.0, b = 1.0, c = 0.0;
    double x = 1.0, y = 0.0;
    cout << "Image of point (" << x << ", " << y << ") using mirror (" 
         << a << ")x + (" << b << ")y + (" << c << ") = 0, is: ";
    findMirrorImage(a, b, c, x, y);
    return 0;
}

Đầu ra

Image of point (1, 0) using mirror (-1)x + (1)y + (0) = 0, is:(0,1)