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)